この記事では,双 EMA クロスオーバーに基づく定量的な取引戦略を詳細に説明します.高速と遅い EMA を設定し,クロスオーバー時に信号を生成します.
I. 戦略の論理
この戦略の核は,異なるパラメータを持つ2つのEMAを設定し,そのクロスオーバー関係に基づいて,高速と遅い1つのEMAを設定し,購入および販売シグナルを生成することです.
短期的な傾向を表すため,短期の EMA (例えば29期) を設定します.
長期トレンドを表すために長期EMA (例えば86期) を設定します.
ショート・EMAがロング・EMAを横切るとロング・EMAを横切り,下を横切るとショート・EMAを横切る.
現時点では,ストップ・ロストやテイク・プロフィットなしでのエントリー論理のみが定義されています.
取引の固定ポジションサイズ
短い期間の動きに反応する高速EMAと,長期的なトレンドを追跡する遅いEMAを使用して,クロスオーバーは価格変動の核心方向を把握する信号を生成します.
戦略の利点
この戦略の最大の利点は,EMAの計算が簡単で,クロスオーバー信号は視覚的に明確である.
2つ目は,速いEMAと遅いEMAが互いに補完し,短期的および長期的トレンドを同時に追跡する.速いEMAは機敏に動いているが,遅いEMAはノイズをフィルタリングする.
最後に,固定位置サイズ化により最適化困難も軽減されます.
III.潜在的な弱点
実行が容易であるにもかかわらず,ライブ取引には以下のリスクが注意されるべきです.
第一に,EMAクロスオーバーは遅れがあり,最適なエントリーポイントを逃す可能性があります.
ストップ・ロスの欠如は 損失を伴う取引を制御できないことを意味します
最後に,利益の引き上げレベルがないことも,利益の管理を困難にしている.
ストップ・ロストとメリット・テイク条件の追加的な出口ロジックが追加されなければなりません
IV.要約
この記事では,デュアルEMAクロスオーバーに基づく定量的な取引戦略について説明しています.取引シグナルのためのトレンド方向を決定するために,高速および遅いEMA組み合わせを使用しています. 戦略は実行が簡単ですが,最適化においても洗練が欠けている. 全体的に,スムージングトレンド取引フレームワークとして機能できますが,リスクを管理するために適切な強化が必要です.
/*backtest start: 2023-08-14 00:00:00 end: 2023-09-13 00:00:00 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("EMA Cross Strategy", overlay=true, initial_capital=100, currency="USD", default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.075) small_ema = input(29, title="Small EMA") long_ema = input(86, title="Long EMA") ema1 = ema(close, small_ema) ema2 = ema(close, long_ema) longCondition = ema1 > ema2 if (longCondition) strategy.entry("Long", strategy.long) shortCondition = ema1 < ema2 if (shortCondition) strategy.entry("Short", strategy.short) //strategy.close("Long", when=close < ema1) //strategy.close("Short", when=close > ema1) x1 = plot(ema(close, small_ema), title="EMA 1", color=longCondition?green:shortCondition?red:blue, transp=0, linewidth=0) x2 = plot(ema(close, long_ema), title="EMA 2", color=longCondition?green:shortCondition?red:blue, transp=0, linewidth=0) //bgcolor(longCondition?green:shortCondition?red:blue, transp=75) fill(x1,x2,color=longCondition?green:shortCondition?red:blue)