La stratégie Crossover Golden Cross est une stratégie de suivi de tendance qui combine l'indicateur Three EMA et l'indice de force relative stochastique pour déterminer les signaux d'entrée basés sur le croisement des deux indicateurs.
La détermination du signal de cette stratégie repose sur la logique suivante:
RSI stochastique pour déterminer le croisement: lorsque la ligne K traverse au-dessus de la ligne D depuis le bas, un signal croisé doré est généré, indiquant une forte tendance haussière.
Il suffit d'aller long; court n'est pas considéré pour le moment.
Lorsque l'EMA à trois indices montre une tendance haussière et que le RSI stochastique génère une croix dorée, passez long.
Les principaux avantages de cette stratégie de détermination à double indicateur sont les suivants:
Trois EMA filtrent le bruit à court terme et bloquent les tendances à moyen et long terme.
La croix dorée du RSI stochastique confirme une forte tendance haussière.
ATR smart stop loss et prise de profit verrouillage dans les bénéfices.
Une logique stratégique simple et claire, facile à comprendre et à mettre en œuvre.
Les principaux risques de cette stratégie sont les suivants:
Vulnérable à la consolidation. Les ordres ouverts/fermées fréquents entraînent un risque de négociation lorsque Three EMA génère plusieurs croisements sur les marchés latéraux. Cela peut être résolu en optimisant les paramètres EMA ou en ajoutant d'autres filtres.
Il n'y a pas d'opportunités de raccourcissement, mais seulement de longs qui ratent les chances de rebond.
Les principales orientations d'optimisation sont les suivantes:
Ajoutez le MACD etc. pour déterminer les tendances à la baisse et augmenter les chances de court terme.
Ajouter des indicateurs de volatilité comme ATR pour améliorer les arrêts et les limites.
Incorporer le volume pour éviter les fausses fuites.
Utiliser l'apprentissage automatique, etc. pour l'optimisation des paramètres.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-25 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title="Stoch RSI Crossover Strat + EMA", shorttitle="Stoch RSI Cross + EMA Strat", overlay = true) // Time Range FromMonth=input(defval=1,title="FromMonth",minval=1,maxval=12) FromDay=input(defval=1,title="FromDay",minval=1,maxval=31) FromYear=input(defval=2020,title="FromYear",minval=2017) ToMonth=input(defval=1,title="ToMonth",minval=1,maxval=12) ToDay=input(defval=1,title="ToDay",minval=1,maxval=31) ToYear=input(defval=9999,title="ToYear",minval=2017) start=timestamp(FromYear,FromMonth,FromDay,00,00) finish=timestamp(ToYear,ToMonth,ToDay,23,59) window()=>true // See if this bar's time happened on/after start date afterStartDate = time >= start and time<=finish?true:false //STOCH RSI smoothK = input(3, minval=1) smoothD = input(3, minval=1) lengthRSI = input(14, minval=1) lengthStoch = input(14, minval=1) src = input(close, title="RSI Source") rsi1 = rsi(src, lengthRSI) k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK) d = sma(k, smoothD) //ATR lengthATR = input(title="ATR Length", defval=14, minval=1) atr = atr(lengthATR) //MULTI EMA emasrc = close, len1 = input(8, minval=1, title="EMA 1") len2 = input(14, minval=1, title="EMA 2") len3 = input(50, minval=1, title="EMA 3") ema1 = ema(emasrc, len1) ema2 = ema(emasrc, len2) ema3 = ema(emasrc, len3) col1 = color.lime col2 = color.blue col3 = color.orange //EMA Plots //plot(ema1, title="EMA 1", linewidth=1, color=col1) //plot(ema2, title="EMA 2", linewidth=1, color=col2) //plot(ema3, title="EMA 3", linewidth=1, color=col3) crossup = k[0] > d[0] and k[1] <= d[1] emapos = ema1 > ema2 and ema2 > ema3 and close > ema1 barbuy = crossup and emapos //plotshape(crossup, style=shape.triangleup, location=location.belowbar, color=color.white) plotshape(barbuy, style=shape.triangleup, location=location.belowbar, color=color.green) longloss = sma(open, 1) //plot(longloss, color=color.red) //Buy and Sell Factors profitfactor = input(title="Profitfactor", type=input.float, step=0.1, defval=2) stopfactor = input(title="Stopfactor", type=input.float, step=0.1, defval=3) bought = strategy.position_size[1] < strategy.position_size longcondition = barbuy if (longcondition) and (afterStartDate) and strategy.opentrades < 1 strategy.entry("Long", strategy.long) if (afterStartDate) and strategy.opentrades > 0 barsbought = barssince(bought) profit_level = strategy.position_avg_price + (atr*profitfactor) stop_level = strategy.position_avg_price - (atr*stopfactor) strategy.exit("Take Profit/ Stop Loss", "Long", stop=stop_level[barsbought], limit=profit_level[barsbought])