
この戦略は,複数の指数の移動平均 (Exponential Moving Average, EMA) を利用して,潜在的な市場取引の入場点と出場点を識別する.異なる周期のEMAの動きを比較することによって,現在の市場トレンドを判断し,トレンドの形成初期に介入し,トレンドの終了初期に平仓する.
この戦略は4つの異なる周期のEMAを核心指標として使用し,超短期間EMA (デフォルト8期),短期間EMA (デフォルト13期),中期EMA (デフォルト21期),長期EMA (デフォルト55期) となる.長期EMAが他の3つのEMAの下にあると判断すると,現在の傾向は上昇傾向の初期にあると判断すると,戦略は多ポジションを開く.長期EMAが他の3つのEMA上にあると判断すると,現在の傾向は下落傾向の初期にあると判断すると,戦略はすべての多ポジションを平らにする.
EMAは単純移動平均 ((SMA)) よりも近期価格を重視するので,EMAの動きはより敏感であり,価格の変化により迅速に反応することができる.異なる周期EMAの交差は,異なる時間スケールのトレンドの強さや弱さを反映する.長期EMAは,最も安定して,大きな市場トレンドを代表する.中期EMAは比較的敏感で,市場の短期トレンドを反映する.それらは,この戦略の核心的な論理を構成する.
適用幅広:この戦略は価格自体のEMA指標に基づいており,多くの流動性が良い,相対的に滑らかな動きのある品種,例えば様々な期貨,外貨,主流のデジタル通貨などに適用されます.
トレンド追跡:異なる周期EMAの位置関係を比較してトレンドを判断し,トレンド形成の初期段階を一定程度に捉え,トレンドを追跡する.
パラメータの柔軟性:EMAの周期パラメータは,品種特色,Investment Horizonなどに合わせて柔軟に調整でき,一定の適応性がある.
論理的明瞭性: 戦略は,単純なEMA多空配列の組み合わせに基づいて取引信号を生成し,論理的明瞭性があり,容易に理解し,実装する.
EMA遅延:EMAは本質的にトレンド追跡指標であり,一定の遅延性があり,波動的な市場ではより多くの偽信号が発生する可能性があります.
参数敏感:EMA周期の参数選択は,戦略のパフォーマンスに大きな影響を及ぼし,参数最適化後にサンプル外データで良好なパフォーマンスを維持することができない.
フィルタリングの欠如:この戦略は,取引信号のさらなるフィルタリングの欠如で,すべての信号が生成された後に取引が行われ,いくつかの低品質の取引が起こる可能性があります.
固定ポジション:現在の戦略では,開設するポジションごとに1単位が固定され,リスクに基づくダイナミックポジションコントロールが欠如し,リスク管理が不十分である.
トレンドフィルター導入:EMA信号に基づいて,ATR,ADXなどのトレンド強さのフィルタリング指標を追加し,弱いトレンドと振動期の信号をフィルタリングする.
波動率のフィルタを導入する:トレンドフィルタをベースに,ブルリン帯域度などの波動率のフィルタをさらに導入し,高波動率がもたらす低品質の信号をフィルタリングすることができます.
最適化ストップ:現在の戦略には明確なストップロジックがないため,トレンドと波動率のフィルタリングを導入した後,ATRまたはパーセントに基づいたダイナミックストップを追加して,単一の最大損失を制御することができます.
ダイナミックポジション:品種変動率,口座価値比率などに基づいて,戦略毎に開設されるポジションの数を動的に制御し,リスクを低減しながら,より高い絶対利益を追求することができる.
最適化パラメータ:異なる品種,異なる周期,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)