La estrategia Simple Holder es una estrategia que compra criptomonedas periódicamente y las mantiene para lograr la apreciación de los activos.
La lógica básica de la estrategia es:
Envía una señal de compra al principio para hacer la primera compra.
Enviar una señal de compra cada cierto número de velas para comprar más moneda base utilizando la moneda de cotización.
Cuando el recuento de velas alcance el valor preestablecido, envíe la orden de salida para cerrar la posición.
Cuando llegue el momento de salida, envía una señal de salida para detener la estrategia y cerrar todas las posiciones.
A través de la compra y tenencia repetitivas de criptomonedas, se pueden lograr los efectos de la media de costos y el aumento continuo de las posiciones.
Las ventajas de esta estrategia son:
Puede comprar criptomonedas periódicamente para reducir el riesgo de compra.
Puede reducir el costo promedio de tenencia de criptomonedas a través de compras repetitivas.
Puede obtener ganancias de crecimiento de la cartera a través de posiciones en continuo aumento.
Los tiempos de compra y salida personalizables permiten la automatización.
Es fácil de manejar y dominar.
Los riesgos de esta estrategia incluyen:
Riesgo sistemático del mercado de criptomonedas con potencialmente grandes fluctuaciones de precios.
El tiempo de salida inapropiado puede no detener las pérdidas a tiempo.
La gestión inadecuada del capital también puede conducir a la incapacidad de soportar pérdidas.
Se pueden optimizar los siguientes aspectos de la estrategia:
Ajustar dinámicamente el importe de las compras y los intervalos de compra de acuerdo con las condiciones del mercado.
Añadir señales de stop loss para cerrar posiciones cuando el precio cae por debajo del nivel de soporte.
Incorporar más factores para determinar el momento óptimo de entrada y salida.
La estrategia Simple Holder logra el efecto de promediar los costos y el crecimiento de la cartera a través de compras y tenencias periódicas de criptomonedas. Es una estrategia cuantitativa relativamente simple una vez que se domina el uso.
/*backtest start: 2023-01-01 00:00:00 end: 2024-01-07 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Merdoc390 //@version=5 // The idea with this script is to use 3commas DCA bot to keep buying crypto, but not 'close the deal' which sells the crypto. // Basic idea is to keep adding funds, which increases the buy. // When you cancel the sale, you keep the crypto, thus HODL. // I use this to build my positions that I short sale on Coinbase.com, so I need to cancel the deal after several candles so I can // trade them. // 3commas HODL DCA Bot article: // https://3commas.io/blog/3commas-hodl-dca-bot-strategy // This article includes the bot setup on 3Commas: // Basicially you start the trade, then add funds to the trade, buying more crypto, then eventually cancel the deal. // When you create the bot, you set the take profit really high, like 999%. Since it is unlikey to hit the value, it will never sell // Credit to Irakli Gun as inspriation // https://3commas.io/blog/3commas-hodl-dca-bot-strategy strategy(title='HODL Simple v1', shorttitle="HODL'er", calc_on_every_tick=false, calc_on_order_fills=true, process_orders_on_close =true, format=format.price, precision=4, overlay=true, pyramiding=365, currency=currency.USD, default_qty_value=10, default_qty_type=strategy.cash , initial_capital=3650, commission_type=strategy.commission.percent, commission_value=0.1) var startFirstDeal = true var done = false var dealCount = 0 var totalDealCount = 0 i_closeCount = input.int(defval=7,title="Close at Candle Count:",tooltip="How many buy candles to convert to a buy, otherwise it will remain open until end of timeframe.",group="Trade Range") Start_date = input(defval=timestamp('2023-09-21 16:30'),title="Start Date/Time",group="Trade Range") Finish_date = input(defval=timestamp('2023-09-21 23:05'),title="End Date/Time",group="Trade Range") i_startBotAndDealMessage = input(defval="paste your message here",title="Message to start bot and deal", tooltip="Message for 'start bot and deal", group="3Commas",display=display.all) i_addFundsMessage = input(defval="paste your message here",title="Message for deal add funds signal in the quote currency", tooltip="Using the quote (such as USD), to purchase more.",group="3Commas",display=display.all) i_cancelTheDealMessage = input(defval="paste your message here",title="Message to cancel the deal",tooltip="If you paste only cancel the deal, the bot will wait until next candle to add funds.\nOption is to also paste the add funds message to also add a buy position.", group="3Commas",display=display.all) i_cancelAndStopMessage = input(defval="paste your message here",title="Message to cancel all bot deals and stop the bot",tooltip="Paste 3c bot messagage for Cancel all and Stop Bot", group="3Commas",display=display.all) time_cond = true // check exit first if not startFirstDeal and not done and dealCount < i_closeCount strategy.close("Long") alert(i_cancelAndStopMessage) // log.info("Time expired, stopping bot, Total Deal Count:{0}",totalDealCount) done := true // check if add funds after first deal else if time_cond and not startFirstDeal and dealCount < i_closeCount strategy.entry("Long", strategy.long) alert(i_addFundsMessage) // log.info("Deal Count:{0}, totalDeals:{1}",dealCount,totalDealCount) dealCount := dealCount + 1 totalDealCount := totalDealCount + 1 else if time_cond and startFirstDeal and dealCount <= i_closeCount strategy.entry("Long", strategy.long) // log.info("Start deal message, startFirst") alert(i_startBotAndDealMessage) startFirstDeal := false else if time_cond and dealCount >= i_closeCount strategy.close("Long") alert(i_cancelTheDealMessage) // log.info("Over Trades limit of {1}, resetting. Canceling. DealCount: {0}", dealCount, i_closeCount) dealCount := 0 startFirstDeal := true else if time_cond log.error("case not covered")