EMAゴールデンクロス戦略は,一般的な定量的な取引戦略である.異なるパラメータを持つ2つの指数関数移動平均値 (EMA) を使用する.短い期間のEMAが長い期間のEMAを超えると,それは長い.短い期間のEMAが長い期間のEMAを下回ると,それはポジションを閉じる.この戦略は,短い期間のEMAのより速い反応と,トレンドを追う長期EMAのトレードシグナルを生み出す能力を利用する.
この戦略は,まず,長さ10のEMA1と長さ21のEMA2の2つのEMAを定義し,その後,2つのEMAの値を計算します.EMA1がema2を超えると,それは長信号である上向き突破をシグナルします.EMA1がema2を下回ると,それはEMAを通過する破綻をシグナルします.これは接近ポジションのシグナルです.
誤ったブレイクをフィルタリングするために,このコードは以下のように計算される限界値も定義します.
threshold = ((ema1 - ema2)*100) / ((ema1 + ema2)/2)
この
この戦略の取引シグナルは以下です
この戦略の利点は以下の通りです.
EMAを使用することで 価格データを滑らかにし 取引信号を生成するのに役立ちます
EMAの二重設定は,反応性と安定性をバランスさせます.
値引きは偽のブレイクをフィルタリングし,不必要な取引を避ける.
戦略の論理はシンプルで明瞭で 初心者にも適しています
EMA パラメータと
この戦略のリスクは以下のとおりです.
EMAは価格に遅れをとり,短期的な機会を逃す可能性があります.
トレンドが逆転すると 引っかかってしまうリスクがあり 損失が大きくなる可能性があります
不適切な
EMA パラメータが不適切である場合,二つの EMA は重要な差異を示さない可能性があり,誤った信号を生成する.
ストップ・ロスは合理的に設定して,大きな市場の変動によって破損を避けるべきです.
戦略は以下の側面で最適化できます.
EMAのパラメータを最適化し 異なる期間をテストします
誤った信号と有効な信号をバランスさせるために 限界値を最適化します
MACD,KDJなどの他の技術指標を追加して信号を確認します.
ストップ・ロスのメカニズムを追加します. トレイリング・ストップやOCOオーダーなど.
リスクを低減するために,部分的なポジションエントリを考慮してください.
最適な期間を見つけるために,異なる保持期間をテストします.
EMAのゴールデンクロス戦略は,EMAの特徴を活用して取引信号を生成する明確なシンプルな論理を持っています.この戦略には一定の利点がありますが,潜在的なリスクがあります.パラメータを最適化し,ストップロスを設定し,シグナルをフィルタリングすることによって戦略を改善することができます.これは初心者の定量的な取引戦略として適しています.
/*backtest start: 2023-08-18 00:00:00 end: 2023-09-17 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ if high > ta.highest(high[1], 5) strategy.entry("Enter Long", strategy.long) else if low < ta.lowest(low[1], 5) strategy.entry("Enter Short", strategy.short)//@version=3 strategy(title="ema10-21", shorttitle="10/21", overlay=true, pyramiding = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital = 2500, commission_type = strategy.commission.percent, commission_value = 0.2) len1 = input(10, minval=1, title="EMA #1 length") src1 = input(close, title="EMA Source #1") a = ta.ema(src1, len1) plot(a, title="EMA #1", color=color.orange, linewidth=2, style=plot.style_line) len2 = input(21, minval=1, title="EMA #2 length") src2 = input(close, title="EMA Source #2") b = ta.ema(src2, len2) plot(b, title="EMA #2", color=color.blue, linewidth=2, style=plot.style_line) threshold = ((a-b)*100)/((a+b)/2) thresholdUp = threshold > 0.15 thresholdDown = threshold < -0.006 if (thresholdUp) strategy.entry("Buy", strategy.long) if (thresholdDown) strategy.close("Buy", strategy.long) //goLong() => (crossover(a, b)) and (threshold >= 0.0025) //killLong() => (crossunder(a, b)) and (threshold <= -0.0025) //strategy.entry("Buy", strategy.long, when = goLong()) //strategy.close("Buy", when = killLong()) //threshold = ((a-b)*100)/((a+b)/2) //achat = out1 > out2 //vente = out1 < out2 //and threshold < -0.025 //strategy.entry("long", true, when = achat) //strategy.exit("exit", "long", when = vente)