資源の読み込みに... 荷物...

精密なEMAクロスオーバー戦略

作者: リン・ハーンチャオチャン, 日付: 2023-12-20 14:28:36
タグ:

img

概要

細心のEMAクロスオーバー戦略は,異なるパラメータ設定を持つ2つの指数関数移動平均線 (EMA) の間のクロスオーバー信号に基づいたトレンド取引システムである.短期間高速EMAラインと長期間遅いEMAラインを使用し,クロスオーバー時に取引信号を生成する.高速線がスローラインを超えるとロング信号が起動し,高速線がスローラインを下回るとクローズポジション信号が起動する.このシステムには,ストップ・ロスト,トライリング・ストップなどのリスク管理手段も組み込まれる.

戦略の原則

この戦略のコア指標は,2つのEMAラインである:速いラインとスローライン.価格変化に対する反応を早くするために,速いラインのパラメータは13期ラインにデフォルトで設定されている.遅いラインのパラメータは,遅い反応のために48期ラインにデフォルトで設定されている.短期トレンドが急速に上昇すると,速いラインはスローラインよりも早く上昇する.価格が下がると,速いラインはスローラインよりも速く落ちる.したがって,スローラインの上を横切る速いラインは上昇傾向を示し,スローラインの下を横切る速いラインは下向きの逆転を示します.

この原則に基づいて,高速EMA線がスローEMA線の上を横切ると戦略は長くなって,上昇傾向を示し,購入することができます.高速EMA線がスローEMA線下を横切ると,ポジションを閉じて,上昇傾向の終わりと利益を得る時間を示します.リスクを制御するために,戦略は初期ストップロスをエントリー価格より8%低く設定し,トレーリングストップを市場価格から120ポイントに設定します. これにより,システムが早期に退場し,トレンド逆転が発生すると損失を最小限に抑えることができます.

暗号化実装では,EMAのクロスオーバー信号を決定するために,クロスオーバークロスアンダー関数が使用されます. 対応するエントリークローズコマンドは,その後,購入または閉じるポジションに触発されます.

利点分析

精密なEMAクロスオーバー戦略には以下の主要な利点があります.

  1. 信号はシンプルで明快で 分かりやすく 実行も簡単で 初心者にも適しています

  2. MAフィルターは 市場騒音が少なく トレンドの変化を検出できます

  3. 高度に設定可能なパラメータ,高速/遅いEMA線,ストップ損失レベルなど

  4. ストップ・ロスはリスクを効果的にコントロールすることを意味します

  5. 比較的安定したシステムです

リスク分析

この戦略にはいくつかの固有のリスクもあります:

  1. EMAの信号は,急激な市場変動の際に遅れており,価格変動をタイムリーに反映することができません.

  2. MAインジケーターのパラメータ調節が過度に速い場合,誤った信号が増える可能性があります.

  3. 低価格動向は EMA のクロスオーバーが少なくなり,動きが把握できない可能性があります.

  4. 市場全体の動向を分析しないことは 主な動向に逆らうことを意味します

リスクは以下の方法で軽減できます.

  1. MACDやKDのようなフィルターを追加して 交差信号を確認します

  2. EMAパラメータを異なる市場に基づいて調整して 誤った信号を減らす

  3. 長期移動平均値に基づく全体的な傾向の分析を組み込む.

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

戦略は以下の側面から向上させることができる:

  1. レンジ・バインド市場での過剰取引を避けるためにオープンポジションフィルターを追加します. ポジションオープニングの値を設定するために波動性とボリューム指標を組み合わせることができます.

  2. ストップ・ロスを設定し,高い/低いレベルとサポート/レジスタンスゾーンをベースに利潤レベルを設定します.

  3. トレンドモジュールを追加し,短期信号のフィルターとして長時間トレンドを分析し,主要なトレンドに対する取引を避ける.

  4. 機械学習を使用して,誤った信号を減らすために,実用的な市場に適した理想的なEMAパラメータを訓練し最適化します.

上記は,今後この基本的なEMAクロスオーバー戦略を改善するための主要な方向です.より多くの技術指標とリスク管理手段を適切に組み合わせることで,この戦略の有効性が確実に向上します.

結論

精密なEMAクロスオーバー戦略は,価格動向を決定するためにEMAの高速および遅いラインクロスオーバーに基づいた基本的トレンドフォローシステムであり,リスクを制御するためにストップロスを組み込みます.そのシグナルはシンプルで清潔で,初心者にとって理解しやすいので,典型的なスタートアップ量戦略の1つです.しかし,固有の遅延と誤ったシグナルリスクがあります.今後,より多くのフィルターと手段を導入することで,より洗練された市場環境のためにこの戦略をより最適化し,より安定したリターンを達成することができます.


/*backtest
start: 2022-12-13 00:00:00
end: 2023-12-19 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
// *** USE AT YOUR OWN RISK ***
// 
strategy("EMA Strategy", shorttitle = "EMA Strategy", overlay=true, pyramiding = 3,default_qty_type = strategy.percent_of_equity, default_qty_value = 10)


// === Inputs ===
// short ma
maFastSource   = input(defval = close, title = "Fast MA Source")
maFastLength   = input(defval = 13, title = "Fast MA Period", minval = 1)

// long ma
maSlowSource   = input(defval = close, title = "Slow MA Source")
maSlowLength   = input(defval = 48, title = "Slow MA Period", minval = 1)

// invert trade direction
tradeInvert = input(defval = false, title = "Invert Trade Direction?")
// risk management
useStop     = input(defval = true, title = "Use Initial Stop Loss?")
slPoints    = input(defval = 25, title = "Initial Stop Loss Points", minval = 1)
useTS       = input(defval = true, title = "Use Trailing Stop?")
tslPoints   = input(defval = 120, title = "Trail Points", minval = 1)
useTSO      = input(defval = false, title = "Use Offset For Trailing Stop?")
tslOffset   = input(defval = 20, title = "Trail Offset Points", minval = 1)

// === Vars and Series ===
fastMA = ema(maFastSource, maFastLength)
slowMA = ema(maSlowSource, maSlowLength)

plot(fastMA, color=blue)
plot(slowMA, color=purple)

goLong() => crossover(fastMA, slowMA)
killLong() => crossunder(fastMA, slowMA)
strategy.entry("Buy", strategy.long, when = goLong())
strategy.close("Buy", when = killLong())

// Shorting if using
goShort() => crossunder (fastMA, slowMA)
killShort() => crossover(fastMA, slowMA)
//strategy.entry("Sell", strategy.short, when = goShort())
//strategy.close("Sell", when = killShort())

if (useStop)
    strategy.exit("XLS", from_entry ="Buy", stop = strategy.position_avg_price / 1.08 )
    strategy.exit("XSS", from_entry ="Sell", stop = strategy.position_avg_price * 1.08)



もっと