Stratégie HODL pour les oscillations moyennes mobiles

Auteur:ChaoZhang est là., Date: le 12 septembre 2023 à 16h02h24
Les étiquettes:

Cette stratégie observe l'oscillation des prix autour des moyennes mobiles à long terme (par exemple 200 jours) pour déterminer les signaux de maintien, les écarts de négociation pour l'entrée de position et l'utilisation de la rupture ci-dessous comme stop loss.

La logique de la stratégie:

  1. Calculer une moyenne mobile à long terme, généralement de 200 jours.

  2. Entrez long lorsque le prix dépasse la moyenne mobile.

  3. Sortez long lorsque le prix dépasse la moyenne mobile.

  4. Maintenez la position longue jusqu'à ce que la rupture soit inférieure au stop loss.

Les avantages:

  1. L'AM à long terme permet d'identifier efficacement les tendances à moyen et à long terme.

  2. Les opérations de rupture permettent de capturer les revers à long terme en temps opportun.

  3. Une fréquence de négociation plus faible réduit les coûts et les risques.

Les risques:

  1. Les MAs plus longues ont un retard significatif, ce qui entraîne un mauvais calendrier d'entrée.

  2. Aucune limite pour les risques de retrait après rupture.

  3. Des écarts fréquents et mineurs entraînent de petites pertes.

En résumé, cette stratégie HODL utilise une longue oscillation MA pour déterminer le timing de maintien, minimisant la fréquence des transactions.


/*backtest
start: 2022-09-05 00:00:00
end: 2023-04-15 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("HODLBot", default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_every_tick=true, overlay=true)
    
//// Time limits 
testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(01, "Backtest Start Month")
testStartDay = input(01, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2029, "Backtest Stop Year")
testStopMonth = input(1, "Backtest Stop Month")
testStopDay = input(1, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

testPeriod() => true

maPeriod = input(200, "MA Period")
smoothing = input(defval="EMA", options=["EMA", "SMA"])

ma(smoothing, src, length) => 
    if smoothing == "EMA"
        ema(src, length)
    else
        if smoothing == "SMA"
            sma(src, length)
        
//// Main ////

movingAverage = ma(smoothing, close, maPeriod)

plot(movingAverage, color=orange, style = line, linewidth = 4)
 
// very simple, price over MA? Buy and HODL 
if (testPeriod() and close > movingAverage)
    strategy.entry("HODL", strategy.long)

// Price under, close long
if (testPeriod() and close < movingAverage)
    strategy.close("HODL")


Plus de