Stratégie de détenteur simple

Auteur:ChaoZhang est là., Date: 2024-01-08 17h05 et 10 min
Les étiquettes:

img

Résumé

La stratégie Simple Holder est une stratégie qui consiste à acheter périodiquement des crypto-monnaies et à les détenir pour atteindre l'appréciation des actifs.

Principe de stratégie

La logique de base de la stratégie est la suivante:

  1. Envoyez un signal d'achat au début pour effectuer le premier achat.

  2. Envoyer un signal d'achat à chaque certain nombre de bougies pour acheter plus de devise de base en utilisant la devise de cotation.

  3. Lorsque le nombre de bougies atteint la valeur prédéfinie, envoyez l'ordre de sortie pour fermer la position.

  4. Lorsque l'heure de sortie est atteinte, envoyez un signal de sortie pour arrêter la stratégie et fermer toutes les positions.

En achetant et en détenant des crypto-monnaies de manière répétitive, les effets de la moyenne des coûts et de l'augmentation continue des positions peuvent être atteints.

Analyse des avantages

Les avantages de cette stratégie sont les suivants:

  1. Peut acheter périodiquement des crypto-monnaies pour réduire le risque de timing des achats.

  2. Peut réduire le coût moyen de détention des crypto-monnaies grâce à des achats répétitifs.

  3. Peut obtenir un bénéfice de croissance du portefeuille en augmentant continuellement les positions.

  4. Les horaires d'achat et de sortie personnalisables permettent une automatisation.

  5. Simple à utiliser et facile à maîtriser.

Analyse des risques

Les risques de cette stratégie comprennent:

  1. Risque systématique du marché des crypto-monnaies avec des fluctuations potentiellement énormes de prix.

  2. Le timing de sortie inapproprié peut ne pas permettre d'arrêter la perte en temps opportun.

  3. Une gestion insuffisante des capitaux peut également entraîner un échec de la prise en charge des pertes.

Suggestions d'optimisation

Les aspects suivants de la stratégie peuvent être optimisés:

  1. Ajustez dynamiquement le montant et les intervalles d'achat en fonction des conditions du marché.

  2. Ajouter des signaux stop-loss pour fermer les positions lorsque le prix tombe en dessous du niveau de support.

  3. Incorporer plus de facteurs pour déterminer le moment optimal d'entrée et de sortie.

Résumé

La stratégie Simple Holder permet d'obtenir l'effet de la moyenne des coûts et de la croissance du portefeuille grâce à l'achat et à la détention périodiques de crypto-monnaies.


/*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")



Plus de