Règles de négociation chaotiques Stratégie Stop Loss

Auteur:ChaoZhang est là., Date: 2023-11-07 16:44:31 Je suis désolé
Les étiquettes:

img

Résumé

L'idée de base de cette stratégie est d'ajouter quelques règles clés de gestion du trading sur la base de la stratégie RSI, y compris le stop loss, le take profit, le trailing stop loss et le leverage tracking stop loss.

La logique de la stratégie

La stratégie calcule d'abord l'indicateur RSI. Elle va long lorsque le RSI est inférieur au niveau de survente et court lorsque le RSI est supérieur au niveau de surachat.

Si le prix tombe en dessous du point de stop loss moins la plage de stop loss, la position est fermée par stop loss.

Si le prix dépasse le point de stop loss plus la plage de stop loss, la position est fermée par stop loss.

En même temps, des distances fixes de prise de profit et de stop loss sont définies. Si le prix atteint la distance de prise de profit, prendre profit pour fermer la position. Si elle atteint la distance de stop loss, fermer la position par stop loss.

En outre, une ligne de stop loss de suivi de l'effet de levier est définie en fonction de l'effet de levier.

En suivant le prix le plus élevé pendant les tendances haussières et le prix le plus bas pendant les tendances baissières, combiné à des distances fixes de prise de profit et d'arrêt de perte, des rendements plus élevés peuvent être obtenus sur les marchés en tendance.

Analyse des avantages

Le plus grand avantage de cette stratégie est l'introduction de règles multiples de gestion des transactions qui contrôlent mieux les risques tout en tirant parti des forces de la stratégie RSI.

Les avantages sont les suivants:

  1. Le stop loss de suivi peut suivre continuellement la tendance pour obtenir des bénéfices plus élevés pendant les marchés en tendance.

  2. Les bénéfices fixes et les arrêts de perte bloquent certains bénéfices et évitent que tous les bénéfices ne soient effacés lorsque la tendance s'inverse.

  3. Le suivi de l'effet de levier permet d'éviter une expansion des pertes et de contrôler le risque.

  4. La combinaison de différentes méthodes de stop loss peut exercer ses atouts dans différents environnements de marché, améliorant la stabilité globale de la stratégie.

  5. L'ajustement flexible des paramètres de stratégie s'adapte à différents instruments de négociation et environnements de marché.

  6. La logique facile à comprendre facilite la vérification, l'optimisation et l'application.

Analyse des risques

Les principaux risques de cette stratégie proviennent de:

  1. La stratégie RSI elle-même comporte certains risques, ce qui peut déclencher un stop loss.

  2. L'oscillation autour des points de stop loss peut souvent déclencher un stop loss.

  3. La distance de prise de profit ne peut pas complètement bloquer les bénéfices pendant les marchés en tendance.

  4. La distance de stop loss fixe peut être trop petite pour éviter complètement les pertes.

  5. L'effet de levier excessif conduit à un stop loss trop proche du prix d'entrée.

  6. La période d'essai antérieur peut ne pas être une représentation complète des conditions futures du marché.

Les risques ci-dessus peuvent être atténués grâce à l'ajustement des paramètres, l'optimisation des mécanismes de stop loss, le contrôle des risques, etc. Mais aucune stratégie ne peut éviter complètement les risques du marché.

Directions d'optimisation

La stratégie peut être encore optimisée dans les aspects suivants:

  1. Optimiser les paramètres du RSI pour réduire les opérations de piqûre à la scie et tester les paramètres optimaux pour différents marchés.

  2. Essayez d'autres indicateurs comme KD, MACD combiné avec RSI pour filtrer les entrées.

  3. Utilisez l'apprentissage automatique pour optimiser dynamiquement les paramètres de stop loss et de profit.

  4. Testez des mécanismes de stop loss plus complexes tels que le stop loss oscillant, le stop loss moyen, le stop loss dynamique, etc.

  5. Optimiser la mise en place de l'effet de levier et étudier les effets sur le contrôle des bénéfices et des risques.

  6. Ajustez automatiquement les paramètres en fonction des changements de régime du marché, comme la double poussée α.

  7. Incorporer d'autres facteurs pour déterminer la persistance de la tendance, par exemple l'énergie de volume.

  8. Utiliser des modèles d'apprentissage en profondeur pour développer des méthodes de stop loss plus robustes et interprétables.

  9. Test des données provenant de différents instruments et périodes de temps pour évaluer la robustesse de la stratégie.

Conclusion

Cette stratégie complète la stratégie RSI avec diverses méthodes de stop-loss, donnant pleinement aux doubles effets du stop-loss dans le profit des tendances et le contrôle des risques. Il y a encore une grande marge d'optimisation. Les idées peuvent être étendues à plus de stratégies et d'instruments de trading. Les stratégies de stop-loss valent la peine d'être étudiées en profondeur et peuvent devenir une partie très importante des systèmes de trading mécanique après optimisation et vérification continues.


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

//@version=2
strategy("Adding some essential components to a prebuilt RSI strategy", overlay=true)

/////////////// Component Code Start ///////////////
testStartYear = input(2011, "Backtest Start Year") 
testStartMonth = input(8, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2016, "Backtest Stop Year")
testStopMonth = input(9, "Backtest Stop Month")
testStopDay = input(29, "Backtest Stop Day")
// testStopDay = testStartDay + 1
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)

testPeriod() => true
/////////////// Component Code Stop ///////////////

///////////// RSI component /////////////
length = input( 14 )
overSold = input( 30 )
overBought = input( 70 )
price = close

vrsi = rsi(price, length)
notna = not na(vrsi)

/////////////// STRATEGY ///////////////
ts = input(99999, "Trailing Stop") / 100
tp = input(99999, "Take Profit") / 100
sl = input(99999, "Stop Loss") / 100

long = notna and crossover(vrsi, overSold)
short = notna and crossunder(vrsi, overBought)

last_long = long ? time : nz(last_long[1])
last_short = short ? time : nz(last_short[1])

long_signal = crossover(last_long, last_short)
short_signal = crossover(last_short, last_long)

last_open_long_signal = long_signal ? open : nz(last_open_long_signal[1])
last_open_short_signal = short_signal ? open : nz(last_open_short_signal[1])

last_long_signal = long_signal ? time : nz(last_long_signal[1])
last_short_signal = short_signal ? time : nz(last_short_signal[1])

in_long_signal = last_long_signal > last_short_signal
in_short_signal = last_short_signal > last_long_signal

last_high = not in_long_signal ? na : in_long_signal and (na(last_high[1]) or high > nz(last_high[1])) ? high : nz(last_high[1])
last_low = not in_short_signal ? na : in_short_signal and (na(last_low[1]) or low < nz(last_low[1])) ? low : nz(last_low[1])

long_ts = not na(last_high) and high <= (last_high - ts) //and high >= last_open_long_signal
short_ts = not na(last_low) and low >= (last_low + ts) //and low <= last_open_short_signal

long_tp = high >= (last_open_long_signal + tp)
short_tp = low <= (last_open_short_signal - tp)

long_sl = low <= (last_open_long_signal - sl)
short_sl = high >= (last_open_short_signal + sl)

leverage = input(200, "Leverage")
long_call = last_open_long_signal - (0.8 + 0.2 * (1/leverage)) / leverage * last_open_long_signal
short_call = last_open_short_signal + (0.78 + 0.2 * (1/leverage)) / leverage * last_open_short_signal
long_call_signal = low <= long_call
short_call_signal = high >= short_call

if testPeriod()
    strategy.entry("Long", strategy.long, when=long_signal)
    strategy.entry("Short", strategy.short, when=short_signal)

    // plot(long_call, color=red)
    // plot(short_call, color=green)
    strategy.close("Long", when=long_call_signal)
    strategy.close("Short", when=short_call_signal)
    strategy.close("Long", when=long_tp)
    strategy.close("Short", when=short_tp)
    strategy.close("Long", when=long_sl)
    strategy.close("Short", when=short_sl)
    strategy.close("Long", when=long_ts)
    strategy.close("Short", when=short_ts)

Plus de