
この戦略は,二重EMA平均線に基づくダイナミックストロップトラッキング戦略である. 9日線,20日線を市場トレンドの方向を判断するために使用し,RSI指数フィルター偽断裂と組み合わせている. ATR指数を使用してダイナミックストロップとストップを計算する. この戦略は,中長期線のポジションに適用される.
この戦略は,短期平均線として9日EMAと,中期平均線として20日EMAを使用して,価格トレンドを判断します. 短期平均線を抜けて,前日の最高値より高くなって,RSIが30を超えるときに,値上げを行います. 短期平均線を抜いて,前日の最低値より低くなって,RSIが70を超えるときに,値下げを行います.
ストップ・ロスは,クローズアップ価格の1.5倍のATRを減算し,ストップ・ロスは,クローズアップ価格にATRを掛けてストップ・係数を設定する.同時に,ATRの2倍のトレンド・トラッキング・ストップを使用する.
この戦略は,全体として,より安定した中長線持仓戦略である.これは,二重EMAが市場の主要動向を判断し,短期市場の騒音の影響による意思決定を避けるように結合している.RSI指標の加入も,偽の突破を一定程度にフィルターしている.さらに,ダイナミックな止損ストップのメカニズムも,この戦略は,市場の波動程度に応じて自身の止損ストップのレベルを調整できるようにしている.しかし,この戦略には,均等線の遅滞,および損失ストップの突破の可能性などの一定のリスクもあります.これは,実際のアプリケーションで,異なるパラメータを調整し,最適化して最適な配置を見つける必要があります.
/*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)