
Cette stratégie est une stratégie de suivi des arrêts de perte dynamique basée sur les moyennes doubles EMA. Elle utilise les lignes 9 et 20 pour juger de la direction de la tendance du marché, en combinaison avec une fausse rupture filtrée par l’indicateur RSI.
La stratégie utilise l’EMA à 9 jours comme moyenne courte, et l’EMA à 20 jours comme moyenne moyenne pour déterminer la tendance des prix. Faire plus lorsque les prix traversent la moyenne courte et que le prix de clôture est supérieur au prix le plus élevé de la veille et que le RSI est supérieur à 30; Faire plus lorsque les prix traversent la moyenne courte et que le prix de clôture est inférieur au prix le plus bas de la veille et que le RSI est inférieur à 70.
Le stop loss est défini comme la valeur de l’ATR moins 1,5 fois le prix de clôture, le stop loss est défini comme la valeur de l’ATR plus le coefficient de stop multiplié par le coefficient de stop. Le stop loss est également défini comme un stop de suivi de la tendance avec 2 fois l’ATR.
La stratégie est une stratégie de détention de position de ligne moyenne et longue plus stable dans l’ensemble. Elle combine les principales tendances du marché jugées par les deux EMAs pour éviter que les décisions ne soient influencées par le bruit du marché à court terme. L’ajout de l’indicateur RSI filtre également les fausses ruptures dans une certaine mesure. De plus, le mécanisme d’arrêt de perte dynamique permet à la stratégie d’ajuster son propre niveau d’arrêt de perte en fonction de la volatilité du marché.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("CJTrade", overlay=true)
short = ema(close, 9)
medium = ema(close, 20)
long = ema(close, 50)
very_long = ema(close, 200)
plot(short, color=color.gray, linewidth=1)
plot(medium, color=color.red, linewidth=1)
plot(long, color=color.black, linewidth=1)
plot(very_long, color=color.blue, linewidth=1)
rsiValue = rsi(close, 14)
near20EMA = close > medium - atr(14)
longCond = crossover(close[1], short) and close >= high[1] and rsiValue < 70 and near20EMA
shortCond = crossunder(close[1], short) and close <= low[1] and rsiValue > 30 and near20EMA
strategy.entry("Long", strategy.long, when=longCond)
strategy.entry("Short", strategy.short, when=shortCond)
atrValue = atr(14)
stopLossLevel = close - atrValue * 1.5
// Dynamic take profit level based on ATR
takeProfitMultiplier = input(2, title="Take Profit Multiplier", minval=0.1, maxval=10, step=0.1)
takeProfitLevel = close + atrValue * takeProfitMultiplier
// Trailing stop loss for long positions
longTrailingStop = close - atrValue * 2
strategy.exit("LongTrailingStop", from_entry="Long", loss=longTrailingStop)
// Trailing stop loss for short positions
shortTrailingStop = close + atrValue * 2
strategy.exit("ShortTrailingStop", from_entry="Short", loss=shortTrailingStop)
strategy.exit("Take Profit/Stop Loss", from_entry="Long", loss=stopLossLevel, profit=takeProfitLevel)
strategy.exit("Take Profit/Stop Loss", from_entry="Short", loss=stopLossLevel, profit=takeProfitLevel)