Auteur:ChaoZhang est là., Date: 2024-01-26 16:07:34 Je suis désolé
Les étiquettes:

img

Résumé

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 logique de la stratégie

La détermination du signal de cette stratégie repose sur la logique suivante:

  1. 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.

  2. 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.

Analyse des avantages

Les principaux avantages de cette stratégie de détermination à double indicateur sont les suivants:

  1. Trois EMA filtrent le bruit à court terme et bloquent les tendances à moyen et long terme.

  2. La croix dorée du RSI stochastique confirme une forte tendance haussière.

  3. ATR smart stop loss et prise de profit verrouillage dans les bénéfices.

  4. Une logique stratégique simple et claire, facile à comprendre et à mettre en œuvre.

Analyse des risques

Les principaux risques de cette stratégie sont les suivants:

  1. 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.

  2. Il n'y a pas d'opportunités de raccourcissement, mais seulement de longs qui ratent les chances de rebond.

Directions d'optimisation

Les principales orientations d'optimisation sont les suivantes:

  1. Ajoutez le MACD etc. pour déterminer les tendances à la baisse et augmenter les chances de court terme.

  2. Ajouter des indicateurs de volatilité comme ATR pour améliorer les arrêts et les limites.

  3. Incorporer le volume pour éviter les fausses fuites.

  4. Utiliser l'apprentissage automatique, etc. pour l'optimisation des paramètres.

Conclusion


/*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])









Plus de