これは二重EMAラインをベースとしたダイナミックストロップストラテジーである.市場トレンド方向を決定するために9日間および20日間のEMAを使用し,誤ったブレイクをフィルターするためにRSI指標と組み合わせます.また,ダイナミックストロップ損失と利益のレベルを計算するためにATR指標を使用します.この戦略は中期から長期間の保有に適しています.
この戦略は,短期線として9日間のEMAと,中期線として20日間のEMAを使用して価格傾向を決定する.価格が短期線を超越し,閉じる価格は前日の高値より高く,RSIが70未満で,20日間のEMAマイナス1ATRより高く閉じる.価格が短期線を下回り,閉じる価格は前日の低値より低く,RSIが30を超越し,閉じる価格は20日間のEMAマイナス1ATRより高くなる場合,ロングになります.
ストップ・ロスは,閉店価格マイナス1.5倍ATRで設定される. 利益を取ることは,閉店価格プラスATRを利益を取ること係数で掛け合わせることで設定される.また,トレンドをフォローするストップ・ロスを設定するために2倍ATRを使用する.
一般的に,これは比較的安定した中長期保有戦略である.短期間のノイズの影響を受けないように,主要市場傾向を決定するために二重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)