この戦略は主にEMAと標準偏差指標を使用して,EMAクロス信号を通じてトレンド方向を決定し,標準偏差を持つブレイクアウト信号を探し,購入・販売信号を生成する.これは,価格が上線を突破すると購入信号を生成し,価格が下線を突破すると販売信号を生成するトレンドトラッキングタイプの戦略に属している.
戦略は主に3つの部分で構成されています.
EMA差 (s2): 価格トレンドの方向性を決定するために,速い EMA (ema_range) と遅い EMA (ema_watch) の差を計算します.
標準偏差チャネル (s3):標準偏差の倍数を持つEMA差に基づいて上下チャネルを構築する.標準偏差倍数は,黄金比5.618を使用する.
フラグとシグナル:価格が上から下へと上線を突破するときに購入信号を生成し,価格が上から下線を突破するときに販売信号を生成する.フラグの形はシグナルをマークするために使用される.
この指標の組み合わせによって 価格の傾向の方向を把握し 重要なポイントで 買・売シグナルを生成できます これは典型的なトレンド追跡戦略です
この戦略には以下の利点があります.
リスクもあります:
解決策は
戦略は以下の方向で最適化できる:
概要すると,これはEMAと標準偏差を使用して指標システムを構築し,重要なポイントでフラグ信号を生成する典型的なトレンド追跡戦略である.利点はトレンドを捉え,標準偏差の誤った信号を避けることである.主なリスクは,レンジバインド市場における間違った信号とストップロスのないため引き下げリスクから生じる.判断指標を追加し,パラメータを最適化し,ストップロスを追加することで,戦略は安定性と収益性の面でさらに強化することができる.全体として,戦略枠組みは合理的で最適化の可能性が大きい.
/*backtest start: 2023-09-27 00:00:00 end: 2023-11-26 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("ROCKET_EWO", overlay=true) ema_range = input(5) ema_watch = input(13) inval_a = input(open) inval_b = input(open) ratio = input(0) max = 5000 s2=ta.ema(inval_a, ema_range) - ta.ema(inval_b, ema_watch) c_color=s2 <= ratio ? 'red' : 'lime' s3 = s2 + (ta.stdev(open, 1)) * 5.618 plotshape(s3, color=color.white, style=shape.cross, location=location.abovebar, size=size.auto, show_last=max, transp=30, offset= 0) cr = s2 > 0 alertcondition(cr, title='[Rocket_EWO]', message='[Rocket_EWO]') buy = s2 > 1 sell = s2 < -1 txt = "🚀" + "\n"+ "\n"+ "\n"+ "\n" plotshape(buy, color=color.lime, style=shape.triangleup, location=location.belowbar ,color=color.white, text=txt, size=size.normal, show_last=max, transp=1, offset= -3) plotshape(not buy, color=color.red, style=shape.triangledown, location=location.belowbar, size=size.normal, show_last=max, transp=1, offset= 0) signalperiod = time s4 = ta.cross(s2, 0) ? time : na colsig= s2 <= ratio ? color.red : color.lime plotshape((time==s4)?7000:na,color=color.blue, style=shape.flag, location=location.abovebar, size=size.large, transp=1) longCondition = ta.crossover(s2, 1.618) if (longCondition) strategy.entry("LONG Id", strategy.long) shortCondition = ta.crossunder(s2, 1.618) if (shortCondition) strategy.entry("SHORT Id", strategy.short) strategy.close("LONG Id", when = s2 < 0.218) // strategy.risk.max_drawdown(75, strategy.percent_of_equity)