EMA ゴールデンクロス戦略

作者: リン・ハーンチャオチャン, 日付: 2023-09-18 21:18:17
タグ:

概要

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平均の比率を表します.値が0.15%を超えると,それはロング信号です.値が-0.006%未満の場合,それは接近ポジション信号です.

この戦略の取引シグナルは以下です

  • 長信号:EMA1はEMA2を超え,限界値 >=0.15%
  • 接近位置信号:EMA1はEMA2を下回り,限界値 <= -0.006%

利点分析

この戦略の利点は以下の通りです.

  1. EMAを使用することで 価格データを滑らかにし 取引信号を生成するのに役立ちます

  2. EMAの二重設定は,反応性と安定性をバランスさせます.

  3. 値引きは偽のブレイクをフィルタリングし,不必要な取引を避ける.

  4. 戦略の論理はシンプルで明瞭で 初心者にも適しています

  5. EMA パラメータと値を最適化できます.

リスク分析

この戦略のリスクは以下のとおりです.

  1. EMAは価格に遅れをとり,短期的な機会を逃す可能性があります.

  2. トレンドが逆転すると 引っかかってしまうリスクがあり 損失が大きくなる可能性があります

  3. 不適切な値が有効な信号をフィルタリングしたり,誤った信号を生成したりします.

  4. EMA パラメータが不適切である場合,二つの EMA は重要な差異を示さない可能性があり,誤った信号を生成する.

  5. ストップ・ロスは合理的に設定して,大きな市場の変動によって破損を避けるべきです.

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

戦略は以下の側面で最適化できます.

  1. EMAのパラメータを最適化し 異なる期間をテストします

  2. 誤った信号と有効な信号をバランスさせるために 限界値を最適化します

  3. MACD,KDJなどの他の技術指標を追加して信号を確認します.

  4. ストップ・ロスのメカニズムを追加します. トレイリング・ストップやOCOオーダーなど.

  5. リスクを低減するために,部分的なポジションエントリを考慮してください.

  6. 最適な期間を見つけるために,異なる保持期間をテストします.

結論

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)

もっと