Stratégie de tendance alpha avec arrêt de perte de suivi

Auteur:ChaoZhang est là., Date: 2023-11-27 15h25 et 35 min
Les étiquettes:

img

Résumé

La stratégie de tendance alpha avec arrêt de perte ultérieur est une version améliorée de la stratégie de tendance alpha en incorporant un mécanisme d'arrêt de perte ultérieur, qui peut contrôler les risques plus efficacement et améliorer les rendements globaux.

La logique de la stratégie

La stratégie utilise d'abord l'indicateur Alpha pour déterminer les tendances des prix. Lorsque l'indicateur Alpha monte, c'est un signal haussier. Lorsque l'indicateur Alpha descend, c'est un signal baissier. La stratégie génère des signaux d'achat et de vente basés sur la croix dorée et la croix morte de l'indicateur Alpha.

Pendant ce temps, un mécanisme de stop-loss est activé. Le niveau de stop-loss par défaut est de 10% du prix de clôture de la journée. Lors de la tenue de positions longues, si le prix tombe en dessous du niveau de stop-loss, la stratégie sortira de la position pour arrêter la perte. De même pour les positions courtes. Cela aide à mieux verrouiller les profits et à réduire les risques.

Analyse des avantages

  1. La tendance alpha a des capacités plus fortes de détermination des tendances des prix que les moyennes mobiles simples et d'autres indicateurs.

  2. En permettant un stop loss de suivi, les pertes d'une seule transaction peuvent être efficacement contrôlées, ce qui réduit les risques.

  3. Cette stratégie a de fortes capacités de contrôle des risques. Même dans des conditions de marché défavorables, les pertes peuvent encore être minimisées.

  4. Avec moins d'entrées de référence, cette stratégie est efficace pour le calcul, adaptée au trading à haute fréquence.

Analyse des risques

  1. Dans les marchés à fourchette latérale, la stratégie peut générer de nombreux signaux de négociation inutiles, augmentant les coûts de négociation et les pertes par glissement.

  2. Lorsqu'il s'agit d'activer un stop loss de suivi, le pourcentage de stop loss doit être défini de manière appropriée.

  3. En cas de fortes fluctuations des prix, la probabilité que le stop loss soit déclenché augmentera considérablement, ce qui augmentera le risque d'être bloqué dans les positions.

  4. Lors de l'optimisation des paramètres de stop loss, divers facteurs, y compris les caractéristiques des actifs sous-jacents et la fréquence des transactions, doivent être pris en compte, et pas seulement la poursuite des rendements maximaux.

Les risques susmentionnés pourraient être atténués en ajustant les paramètres de l'indicateur Alpha, en réglant le stop loss DYNAMIC, en raccourcissant les durées des cycles de négociation, etc.

Directions d'optimisation

  1. Différents paramètres d'indicateur peuvent être testés pour trouver des combinaisons de paramètres d'indicateur alpha plus appropriées.

  2. tenter de fixer des pourcentages de stop loss dynamiquement basés sur l'ATR afin de mieux s'adapter aux fluctuations du marché.

  3. Combinez avec d'autres indicateurs tels que MACD, KD pour filtrer certains faux signaux.

  4. Les paramètres peuvent être optimisés automatiquement sur la base des résultats de négociation en direct et de backtesting, en utilisant des techniques d'apprentissage automatique pour améliorer l'intelligence de la sélection des paramètres.

Conclusion

La stratégie de tendance Alpha avec Trailing Stop Loss combine la détermination de la tendance et le contrôle des risques. Elle peut identifier efficacement les tendances des prix et verrouiller les profits pour réduire les risques. Par rapport aux stratégies de suivi de tendance simples, cette stratégie peut obtenir des rendements plus élevés et réguliers.


/*backtest
start: 2023-10-27 00:00:00
end: 2023-11-26 00:00:00
period: 1h
basePeriod: 15m
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/
// author © KivancOzbilgic
// developer © KivancOzbilgic
//@version=5

strategy("AlphaTrend Strategy", shorttitle='ATst', overlay=true, format=format.price, precision=2, margin_long=100, margin_short=100)
coeff = input.float(1, 'Multiplier', step=0.1)
AP = input(14, 'Common Period')
ATR = ta.sma(ta.tr, AP)
src = input(close)
showsignalsk = input(title='Show Signals?', defval=false)
novolumedata = input(title='Change calculation (no volume data)?', defval=false)
upT = low - ATR * coeff
downT = high + ATR * coeff
AlphaTrend = 0.0
AlphaTrend := (novolumedata ? ta.rsi(src, AP) >= 50 : ta.mfi(hlc3, AP) >= 50) ? upT < nz(AlphaTrend[1]) ? nz(AlphaTrend[1]) : upT : downT > nz(AlphaTrend[1]) ? nz(AlphaTrend[1]) : downT

color1 = AlphaTrend > AlphaTrend[1] ? #00E60F : AlphaTrend < AlphaTrend[1] ? #80000B : AlphaTrend[1] > AlphaTrend[3] ? #00E60F : #80000B
k1 = plot(AlphaTrend, color=color.new(#0022FC, 0), linewidth=3)
k2 = plot(AlphaTrend[2], color=color.new(#FC0400, 0), linewidth=3)

fill(k1, k2, color=color1)

buySignalk = ta.crossover(AlphaTrend, AlphaTrend[2])
sellSignalk = ta.crossunder(AlphaTrend, AlphaTrend[2])


K1 = ta.barssince(buySignalk)
K2 = ta.barssince(sellSignalk)
O1 = ta.barssince(buySignalk[1])
O2 = ta.barssince(sellSignalk[1])

plotshape(buySignalk and showsignalsk and O1 > K2 ? AlphaTrend[2] * 0.9999 : na, title='BUY', text='BUY', location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(#0022FC, 0), textcolor=color.new(color.white, 0))

plotshape(sellSignalk and showsignalsk and O2 > K1 ? AlphaTrend[2] * 1.0001 : na, title='SELL', text='SELL', location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(color.maroon, 0), textcolor=color.new(color.white, 0))


// //ENTER SOME SETUP TRADES FOR TSL EXAMPLE
// longCondition = ta.crossover(ta.sma(close, 10), ta.sma(close, 20))
// if longCondition
//     strategy.entry('My Long Entry Id', strategy.long)

// shortCondition = ta.crossunder(ta.sma(close, 10), ta.sma(close, 20))
// if shortCondition
//     strategy.entry('My Short Entry Id', strategy.short)



longCondition = buySignalk
if (longCondition)
    strategy.entry("Long", strategy.long)

shortCondition = sellSignalk
if (shortCondition)
    strategy.entry("Short", strategy.short)
    

enableTrailing = input.bool(title='Enable Trailing Stop (%)',defval = true)
//TRAILING STOP CODE
trailStop = input.float(title='Trailing (%)', minval=0.0, step=0.1, defval=10) * 0.01



longStopPrice = 0.0
shortStopPrice = 0.0
longStopPrice := if strategy.position_size > 0
    stopValue = close * (1 - trailStop)
    math.max(stopValue, longStopPrice[1])
else
    0
shortStopPrice := if strategy.position_size < 0
    stopValue = close * (1 + trailStop)
    math.min(stopValue, shortStopPrice[1])
else
    999999

//PLOT TSL LINES
plot(series=strategy.position_size > 0 ? longStopPrice : na, color=color.new(color.red, 0), style=plot.style_linebr, linewidth=1, title='Long Trail Stop', offset=1, title='Long Trail Stop')
plot(series=strategy.position_size < 0 ? shortStopPrice : na, color=color.new(color.red, 0), style=plot.style_linebr, linewidth=1, title='Short Trail Stop', offset=1, title='Short Trail Stop')

    
if enableTrailing
    //EXIT TRADE @ TSL
    if strategy.position_size > 0
        strategy.exit(id='Close Long', stop=longStopPrice)
    if strategy.position_size < 0
        strategy.exit(id='Close Short', stop=shortStopPrice)


 

Plus de