この戦略は,複数の指数関数移動平均値 (EMA) を組み合わせて,市場の潜在的なエントリーとアウトプットポイントを特定します.EMAのトレンドを異なる期間に比較することにより,現在の市場トレンドを決定し,トレンド形成の開始時に取引を開始し,トレンドの終わりの開始時にポジションを閉じる.
この戦略は,異なる期間の4つのEMAをコア指標として使用しており,それは超短期EMA (8期デフォルト),短期EMA (13期デフォルト),中期EMA (21期デフォルト),長期EMA (55期デフォルト) である.長期EMAが他の3つのEMAを下回ると,現在の市場が上昇傾向の始まりかもしれないと判断され,戦略はロングポジションを開く.長期EMAが他の3つのEMAを超えると,現在の市場が低下傾向の始まりかもしれないと判断され,戦略はすべてのロングポジションを閉鎖する.このトレンドターニングポイントは,長期EMAと短期EMAの組み合わせによって,新興傾向を把握する.
シンプル・ムービング・アベア (SMA) と比較すると,EMAは最近の価格により重点を置くため,その傾向はより敏感であり,価格変化により迅速に反応することができる.異なる期間のEMAのクロスオーバーは,異なる時間スケールでのトレンドの強さを反映する.長期EMAは最も安定しており,重要な市場傾向を表す.中期および短期EMAは比較的敏感であり,短期および中期市場のトレンドを反映する.それらは一緒にこの戦略の核心論理を形成する.
幅広く適用可能:この戦略は価格そのもののEMA指標に基づいており,様々な先物,外為,主流の暗号通貨など,流動性が良好で比較的スムーズなトレンドを持つほとんどの種類に適用できます.
トレンド追跡: EMA のポジション関係と異なる期間を比較してトレンドを決定することで,トレンド形成の始まりを一定程度把握し,トレンドを追跡することができます.
柔軟なパラメータ: EMA の期間パラメータは,品種,投資期間などの特徴に応じて柔軟に調整され,一定の適応性を有します.
明確な論理: 戦略は,長いと短いEMAの簡単な組み合わせに基づいて取引信号を生成し,論理は明確で,理解し実行するのが簡単です.
EMAの遅延: EMAは本質的にトレンド追跡指標であり,一定の遅延があり,不安定な市場でより多くの誤った信号を生む可能性があります.
パラメータ敏感性: EMA 期間パラメータの選択は戦略のパフォーマンスに重大な影響を及ぼし,最適化されたパラメータはサンプル外データで良好なパフォーマンスを維持しない可能性があります.
フィルタリングの欠如:この戦略は,取引信号のさらなるフィルタリングを欠くため,生成されたすべての信号は取引されるため,質の低い取引を引き起こす可能性があります.
固定ポジション:現在,戦略は毎回1ユニット固定ポジションを開くが,リスクに基づく動的ポジション制御が欠如し,リスク管理は十分に完璧ではない.
トレンドフィルタリングを導入: EMA信号に基づいて,弱いトレンドと不安定な時期からの信号をフィルタリングするために,ATRとADXなどのトレンド強度フィルタリング指標を追加します.
波動性フィルタリングを導入する: トレンドフィルタリングに基づいて,波動性フィルタリングをさらに導入し,波動性の高い信号から生じる低品質信号をフィルタリングすることができます.
ストップロスの最適化:現在,戦略には明確なストップロスの論理が欠けている.トレンドと変動性フィルタリングを導入した後,ATRまたはパーセントに基づくダイナミックストップロスは1つの取引の最大損失を制御するために追加することができます.
ダイナミックポジション: 各種の変動,口座価値の割合などに基づいて,戦略によって開かれたポジションの数を毎回ダイナミックに制御し,リスクを低減しながら,より高い絶対的リターンを追求することができます.
パラメータの最適化:異なる品種と異なる期間において,EMAの最適なパラメータは異なる可能性があり,戦略の適用性を向上させるために,パラメータの最適化は品種の特徴に応じて別々に実行する必要があります.
この戦略は,トレンド形成の始まりを捉えるために,異なる期間の4つのEMAの長と短の配列組み合わせを比較することによって,トレンドターニングポイントを特定する.このアイデアは単純で明確である.その利点は,幅広い適用可能性,明確な論理,柔軟なパラメータにあり,トレンドをうまく追跡することができる.しかし,同時に,EMA指標の固有の遅れ,パラメータ敏感性,フィルタリングの欠如,固定位置などの問題も抱えています.将来,この戦略の強度と収益性は,トレンドと変動フィルタリングを導入し,ストップロスを最適化し,ダイナミックポジション,パラメータ最適化など側面から改善され,より完全で信頼性があります.
/*backtest start: 2023-03-05 00:00:00 end: 2024-03-10 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © n1ghthawk //@version=5 strategy("donmo's 4ema", overlay=true, margin_long=100, margin_short=100) float long = na float short = na lowestEMAPeriodInput = input.int(8, "Lowest EMA") lowEMAPeriodInput = input.int(13, "Low EMA") medEMAPeriodInput = input.int(21, "Med EMA") highEMAPeriodInput = input.int(55, "High EMA") lowestEMA = ta.ema(close, lowestEMAPeriodInput) lowEMA = ta.ema(close, lowEMAPeriodInput) medEMA = ta.ema(close, medEMAPeriodInput) highEMA = ta.ema(close, highEMAPeriodInput) emaLongCondition = highEMA<medEMA and highEMA<lowEMA and highEMA<lowestEMA emaShortCondition = highEMA>medEMA and highEMA>lowEMA and highEMA>lowestEMA longCondition = ta.change(emaLongCondition) shortCondition = ta.change(emaShortCondition) notInTrade = strategy.position_size <= 0 if longCondition and emaLongCondition and notInTrade long:=high strategy.entry("EL", strategy.long) if shortCondition and emaShortCondition short:=low strategy.close("EL") plot(long+3,title = 'long', color = color.green, linewidth = 4, style = plot.style_cross) plot(short-3,title = 'short', color = color.red, linewidth = 4, style = plot.style_cross) plot(lowestEMA, title = "lowestEMA", color=color.blue) plot(lowEMA, title = "lowEMA", color=color.green) plot(medEMA, title = "medEMA", color=color.orange) plot(highEMA, title = "highEMA", color=color.red)