Stratégie de combinaison MACD StochRSI multi-périodes


Date de création: 2023-09-13 12:05:46 Dernière modification: 2023-09-13 12:05:46
Copier: 0 Nombre de clics: 636
1
Suivre
1617
Abonnés

Cette stratégie utilise l’indicateur MACD et l’indicateur StochRSI pour juger sur plusieurs périodes de temps, ce qui améliore la stabilité et la fiabilité des décisions de négociation.

Le principe de la stratégie:

  1. Le MACD et le StochRSI sont calculés sur une base quotidienne et sur une base de 4 heures.

  2. Lorsque plusieurs signaux sont affichés simultanément sur la ligne du jour et sur l’indicateur à plusieurs têtes de la période de 4 heures, effectuez plusieurs opérations.

  3. Lorsque le signal de vide est donné simultanément à la ligne du jour et à l’indicateur de vide de 4 heures, effectuez l’opération de vide.

  4. Une fois entré dans une direction, il faut attendre que l’indicateur de l’autre direction apparaisse avant de se libérer.

  5. Les résultats des indicateurs sont vérifiés à l’aide de combinaisons de plusieurs axes temporels, ce qui réduit les erreurs de transaction.

Les avantages de cette stratégie:

  1. La combinaison de plusieurs périodes permet d’améliorer la stabilité du signal.

  2. Le MACD et le StochRSI sont mutuellement vérifiables, ce qui améliore la précision.

  3. Règles d’entrée et de sortie claires pour faciliter le repérage et le jeu en direct.

Le risque de cette stratégie:

  1. Il y a un problème de retard dans le jugement sur les combinaisons multi-axes.

  2. L’optimisation des paramètres de l’indicateur est plus complexe et nécessite de prendre en compte plusieurs cycles simultanément.

  3. La fréquence des transactions peut être faible et les opportunités de marché peuvent ne pas être pleinement exploitées.

En résumé, la stratégie peut améliorer la qualité du signal dans une certaine mesure, à en juger par une combinaison de plusieurs indicateurs cycliques, mais en tenant compte de l’optimisation des paramètres et des problèmes de retard, en recherchant un équilibre entre les retours et les risques.

Code source de la stratégie
/*backtest
start: 2023-08-13 00:00:00
end: 2023-09-12 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
// strategy(title='[RS]Khizon (DGAZ) 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 BTC:',  defval=1)
buy_trade = input(title='Perform buy trading?',  defval=true)
sel_trade = input(title='Perform sell trading?',  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('NGAS', '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('NGAS', '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 daily_trigger and h4_trigger
buy_open = buy_trade and not daily_trigger and not h4_trigger
sel_close = not buy_trade and not daily_trigger and not h4_trigger
buy_close = not sel_trade and daily_trigger and 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)