EMAのクロスオーバー取引戦略

作者: リン・ハーンチャオチャン開催日:2023年12月12日 17:09:24
タグ:

img

概要

EMAクロスオーバー・トレーディング戦略は,シンプルで効果的な定量的なトレーディング戦略である. 指数的な移動平均値 (EMA) とクロスオーバー・シグナルを使用して価格動向を特定し,エントリー&エグジットポイントを決定する.より複雑な戦略と比較して,理解し実装するのが簡単である.

戦略の論理

鍵は,異なるパラメータを持つ2つのEMAを使用することにある. EMA1は25日とEMA2は100日に設定されている. 短期EMAが長期EMAを超えると,それは購入信号である. 短いEMAがより長いEMAを下回ると,それは販売信号である. したがって,より短いEMAは短期価格傾向と勢いを捉え,より長いEMAは長期的な傾向を反映している. 2つのEMAによって形成された金十字死十字は取引信号を生成する.

誤った信号をフィルタリングするために,戦略はいくつかの追加の基準も設定しています.例えば,上昇したキャンドルスタイクパターンまたは50 RSIレベルを超えるクロスオーバーが必要です.これは短期的なノイズによる誤った取引を回避します.

利点

この戦略の最大の利点は,この戦略のシンプルさと直感性です.多くのパラメータと複雑な論理を持つ戦略と比較して,それははるかにユーザーフレンドリーです.

また,短期および長期の時間枠の両方でトレンド変化を記録し,EMAのクラシックな技術指標を使用し,トレンド逆転を特定し,エントリーと出口を決定し,したがってトレンドと取引します.

最後に,誤った信号を減らすために適切なフィルタを設定し,市場の騒音によって誤導されないようにします.これは不安定な市場で戦略の安定したパフォーマンスを可能にします.

リスク

主なリスクは,短期・長期トレンドの差異である.劇的な価格変動はクロスオーバー信号を誘発するが,長期トレンドは変わらず,取引が損なわれる.また,レンジバインド市場ではしばしばウィップソーが発生する.

適正でない EMA 期間設定は,EMA の代表力が減少し,トレンドと逆転を捉えるのに不効果的になるため,戦略の業績を危険にさらす可能性があります.これはより高いリスクをもたらします.

さらに,過度に厳しいフィルターは,潜在的な取引機会を逃すことになり,収益性を損なう可能性があります.

強化

KDJ,MACDなどの他の指標と組み合わせると 取引信号を確認し 誤った信号を避けるのに役立ちます

最適なEMA期間を見つけるために異なるパラメータセットをテストし,取引頻度と信頼性をバランスするためにフィルター基準を調整する.

ダイナミックなポジションサイズ化も重要です.例えば,2つのEMAが距離が大きいときより大きなポジション,近づくとより小さい場合です.これは変化する市場状況に適応します.

結論

EMAクロスオーバー戦略は,シンプルで実用的な定量的な取引戦略である.短期的および長期的トレンドとともに取引するために,EMAクロスオーバー信号を活用する.理解し,実装しやすく,複雑性を最小限に抑え,初心者トレーダーに適している.しかし,リスクは無視すべきではない.パラメータとフィルターに対するさらなる最適化は,さまざまな市場で戦略をより堅牢にすることができます.


/*backtest
start: 2023-11-11 00:00:00
end: 2023-12-11 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy('EMA Crossover Signal', shorttitle='EMA Crossover Signal', overlay=true)
// Define input for position size as a percentage of equity
position_size_pct = input(1, title='Position Size (%)') / 100

//Input EMA
len1 = input.int(25, minval=1, title='EMA 1')
src1 = input(close, title='Source')
ema1 = ta.ema(src1, len1)
len2 = input.int(100, minval=1, title='EMA 2')
src2 = input(close, title='Source')
ema2 = ta.ema(src2, len2)
//End of format

//Format RSI
lenrsi = input(14, title='RSI length')
outrsi = ta.rsi(close,lenrsi)

bodybar1 = math.abs(close - open)
bodybar2 = math.abs(close[1] - open[1])
// Plot the EMAs
plot(ema1, color=color.new(color.blue, 0), title='EMA 1')
plot(ema2, color=color.new(color.red, 0), title='EMA 2')

// EMA Crossover conditions
emaCrossoverUp = ta.crossover(ema1, ema2)
emaCrossoverDown = ta.crossunder(ema1, ema2)
var entrybar = close  // Initialize entrybar with the current close

// Calculate crossovers outside of the if statements
emaCrossoverUpOccured = ta.crossover(close, ema1) and ema1 > ema2 and bodybar1 > bodybar2 and close > entrybar
emaCrossoverDownOccured = ta.crossunder(close, ema1) and ema1 < ema2 and bodybar1 > bodybar2 and close < entrybar

plotshape(series=emaCrossoverUpOccured, location=location.abovebar, color=color.new(color.green, 0), style=shape.triangleup, title='New Buy Order', size=size.tiny)
plotshape(series=emaCrossoverDownOccured, location=location.belowbar, color=color.new(color.red, 0), style=shape.triangledown, title='New Sell Order', size=size.tiny)

if emaCrossoverUpOccured
    strategy.entry("Enter Long", strategy.long)
else if emaCrossoverDownOccured
    strategy.entry("Enter Short", strategy.short)

もっと