Stratégie de négociation de l'élan du système à double voie

Auteur:ChaoZhang est là., Date: 2023-11-22 15h26 et 28h
Les étiquettes:

Résumé

Cette stratégie combine les indicateurs MACD et Stoch RSI pour construire un système de négociation à double rails pour le suivi des tendances et le jugement de survente/surachat.

Principe de stratégie

La stratégie combine les indicateurs MACD et Stoch RSI, qui sont différents types d'indicateurs techniques, pour la configuration.

La stratégie construit d'abord les indicateurs MACD et Stoch RSI sur les délais quotidiens et de 4 heures respectivement pour les jugements de tendance et de surachat/survente.

En particulier, l'indicateur MACD est construit avec les lignes DIF et DEA formant des croix dorées/mortes pour le jugement; l'indicateur RSI Stoch est construit avec les lignes K et D formant des croix dorées/mortes pour le jugement.

Ainsi, en appliquant de manière exhaustive le système à deux indicateurs et les jugements sur plusieurs délais, la stratégie évalue de manière approfondie la vitesse des prix et la force relative, ce qui contribue à améliorer la précision des décisions et à obtenir de meilleurs rendements.

Analyse des avantages

Cette stratégie présente les avantages suivants:

  1. Combinaison d'un système à deux indicateurs pour un jugement complet et une plus grande précision des décisions
  2. Appliquer des délais multiples pour réduire la probabilité d'erreur de jugement
  3. Adoption d'un suivi de tendance et d'un jugement de surachat/survente pour tenir compte à la fois de la vitesse des prix et de la force relative
  4. Paramètres d'indicateur flexibles réglables pour différents produits et environnements de marché
  5. Structure de code propre facile à comprendre et à étendre

Analyse des risques

Cette stratégie comporte également certains risques:

  1. Il existe des risques systémiques de marché qui ne peuvent être entièrement évités
  2. Des paramètres d'indicateur inappropriés peuvent entraîner une survente ou des opportunités manquées
  3. Les indicateurs doubles peuvent encore donner des signaux erronés simultanés, mais moins probablement que les indicateurs simples
  4. Incapable de faire face à des changements drastiques du marché comme les événements du cygne noir

Les contre-mesures:

  1. Optimiser les paramètres et ajuster les conditions de négociation pour réduire les erreurs de jugement
  2. Incorporer davantage d'indicateurs pour les jugements combinés
  3. Ajouter des mécanismes de stop loss pour contrôler le risque de perte unique

Directions d'optimisation

Cette stratégie peut également être améliorée dans les domaines suivants:

  1. Incorporer davantage d'indicateurs dans les stratégies à indicateurs multiples
  2. Ajouter des algorithmes d'apprentissage automatique pour l'optimisation de paramètres dynamiques
  3. Combiner des indicateurs de sentiment, des nouvelles, etc. pour des jugements plus complets sur les conditions du marché
  4. Ajoutez des stratégies de stop loss et de profit pour optimiser la gestion de l'argent
  5. Élargir à plus de produits commerciaux pour découvrir de meilleures opportunités

Conclusion

En appliquant conjointement le système à deux indicateurs et les jugements multi-temporels, cette stratégie juge la vitesse des prix et la force relative de manière approfondie, ce qui peut capturer efficacement les tendances du marché et améliorer les lacunes des indicateurs individuels. Je ne sais pas.


/*backtest
start: 2023-11-14 00:00:00
end: 2023-11-15 10:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title='[RS]Khizon (UWTI) Strategy V0', shorttitle='K', overlay=false, pyramiding=0, initial_capital=100000, currency=currency.USD)
//  ||  Inputs:
macd_src = input(title='MACD Source:',  defval=close)
macd_fast = input(title='MACD Fast Length:',  defval=12)
macd_slow = input(title='MACD Slow Length:',  defval=26)
macd_signal_smooth = input(title='MACD Signal Smoothing:',  defval=9)
srsi_src = input(title='SRSI Source:',  defval=close)
srsi_rsi_length = input(title='SRSI RSI Length:',  defval=14)
srsi_stoch_length = input(title='SRSI Stoch Length:',  defval=14)
srsi_smooth = input(title='SRSI Smoothing:',  defval=3)
srsi_signal_smooth = input(title='SRSI Signal Smoothing:',  defval=3)
//  ||  Strategy Inputs:
trade_size = input(title='Trade Size in USD:', type=float, defval=1)
buy_trade = input(title='Perform buy trading?', type=bool, defval=true)
sel_trade = input(title='Perform sell trading?', type=bool, defval=true)
//  ||  MACD(close, 12, 26, 9):     ||---------------------------------------------||
f_macd_trigger(_src, _fast, _slow, _signal_smooth)=>
    _macd = ema(_src, _fast) - ema(_src, _slow)
    _signal = sma(_macd, _signal_smooth)
    _return_trigger = _macd >= _signal ? true : false
//  ||  Stoch RSI(close, 14, 14, 3, 3)  ||-----------------------------------------||
f_srsi_trigger(_src, _rsi_length, _stoch_length, _smooth, _signal_smooth)=>
    _rsi = rsi(_src, _rsi_length)
    _stoch = sma(stoch(_rsi, _rsi, _rsi, _stoch_length), _smooth)
    _signal = sma(_stoch, _signal_smooth)
    _return_trigger = _stoch >= _signal ? true : false
//  ||-----------------------------------------------------------------------------||
//  ||-----------------------------------------------------------------------------||
//  ||  Check Directional Bias from daily timeframe:
daily_trigger = security('USOIL', 'D', f_macd_trigger(macd_src, macd_fast, macd_slow, macd_signal_smooth) and f_srsi_trigger(srsi_src, srsi_rsi_length, srsi_stoch_length, srsi_smooth, srsi_signal_smooth))
h4_trigger = security('USOIL', '240', f_macd_trigger(macd_src, macd_fast, macd_slow, macd_signal_smooth) and f_srsi_trigger(srsi_src, srsi_rsi_length, srsi_stoch_length, srsi_smooth, srsi_signal_smooth))

plot(title='D1T', series=daily_trigger?0:na, style=circles, color=blue, linewidth=4, transp=65)
plot(title='H4T', series=h4_trigger?0:na, style=circles, color=navy, linewidth=2, transp=0)

sel_open = sel_trade and not daily_trigger and not h4_trigger
buy_open = buy_trade and daily_trigger and h4_trigger
sel_close = not buy_trade and daily_trigger and h4_trigger
buy_close = not sel_trade and not daily_trigger and not h4_trigger
strategy.entry('sel', long=false, qty=trade_size, comment='sel', when=sel_open)
strategy.close('sel', when=sel_close)
strategy.entry('buy', long=true, qty=trade_size, comment='buy', when=buy_open)
strategy.close('buy', when=buy_close)


Plus de