ダイナミック・ダブル・ムービング・平均 トレイリング・ストップ戦略

作者: リン・ハーンチャオチャン, 開催日:2024年2月26日 11:13:17
タグ:

img

概要

これは二重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を使用する.

利点分析

  1. 主要な市場動向を決定するために二重EMAを使用し,ノイズに圧迫されない
  2. RSIインジケーターを組み合わせて誤差をフィルタリングすることで,入力精度が向上します
  3. ダイナミックストップ・ロストとテイク・プロフィート 市場の変動に適応
  4. トレンドをフォローするストップ損失は利益を最大化します

リスク分析

  1. EMAラインは遅延効果があり,短期的な機会を逃す可能性があります
  2. RSI パラメータの設定が正しくない場合,エントリが見逃される可能性があります.
  3. 誤ったストップ・ロスト/テイク・プロフィート比が過度に緩やかまたは厳格である可能性があります.
  4. ストップ・ロスは,激しい市場変動中に突入する可能性があります.

オプティマイゼーションの方向性

  1. 最適パラメータを見つけるために異なるEMA組み合わせをテストする
  2. 入力精度と捕獲の機会をバランスするために RSI パラメータを最適化します
  3. 最適な設定を見つけるために異なるストップ・ロスト/テイク・プロフィート比をテストする
  4. ストップ・ロスの浸透確率を減らすためにより多くのフィルター条件を追加します.

概要

一般的に,これは比較的安定した中長期保有戦略である.短期間のノイズの影響を受けないように,主要市場傾向を決定するために二重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)


もっと