EMAのリボン戦略

作者: リン・ハーンチャオチャン,日付: 2024-01-22 12: 21:47
タグ:

img

概要

EMAリボン戦略は,異なる期間の指数的な移動平均値 (EMA) を計算し,それらの間のクロスオーバーを特定することによって取引信号を生成する.この戦略は,異なる期間の8つの EMAのリボンを構築し,最短期間の EMAと最長期間の EMAのクロスオーバーを使用して市場の傾向を決定し,取引信号を生成する.

戦略の論理

この戦略の核心は8つのEMAで構成される.20期,25期,30期,35期,40期,45期,50期,55期.これらの8つのEMAは,下から上へと積み重ねられるリボンを形成する.短期のEMAが長期EMAを超えると,購入信号が生成される.短期のEMAが長期EMAを下回ると,販売信号が生成される.

例えば,20期間のEMAが55期間のEMAを超えると,購入信号が起動し,20期間のEMAが55期間のEMAを下回ると,販売信号が起動する.EMAは市場の傾向を非常によく示すことができる.この戦略は,複数のEMAクロスオーバーを使用して支配的な傾向を特定し,それに応じて取引信号を生成する.

利点分析

EMAのリボン戦略には以下の利点があります.

  1. 異なる期間の複数の EMA を使用することで,市場の動向の変化をより正確に特定できます.

  2. 複数の EMA のリボンを作ることで,取引信号がより明確になります.

  3. 長期および短期EMAを併用すると,長期的な傾向と短期的訂正の両方が考慮されます.

  4. この戦略は,EMA期間および他のパラメータを調整することによって,大きなパラメータ最適化空間を可能にします.

  5. 戦略の論理は シンプルで 分かりやすく 実行できます

リスク分析

EMAのリボン戦略には リスクもあります

  1. 市場全体の動向が不明である場合,誤った信号を生成する可能性があります.信号の確認のために追加の指標を使用できます.

  2. 取引頻度が高いため,取引コストとスライプコストが増加する. EMA期間を調整して取引頻度を減らすことができます.

  3. パラメータの設定が正しくない場合,信号が過度に敏感または遅れている可能性があります.パラメータは繰り返しテストおよび最適化する必要があります.

  4. イベントによる突然の価格格差は信号を無効にすることがあります.リスクを制御するためにストップ・ロスの戦略を使用する必要があります.

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

EMAのリボン戦略は,次の側面で最適化することができます:

  1. 最適な組み合わせを見つけるために EMA 期間パラメータを調整する.

  2. 信号のフィルタリングと確認のための他の技術指標を追加し,精度を向上させる.

  3. 変動が低い環境で取引頻度を減らすため,変動指標を組み込む.

  4. ストップ・ロスの戦略を設定し,取引損失を制限します.

  5. 利益因子を向上させるためのマネーマネジメント戦略を最適化する.

  6. 異なる製品や契約のパラメータの信頼性をテストして 最良の市場を見つけます

概要

EMAリボン戦略は,EMAクロスオーバーとトレンドを特定し,トレードシグナルを生成する明確な論理を持っています.パラメータを調整し,シグナルフィルターを追加し,その他に大きな最適化スペースを持っています.全体的に,それは非常にシンプルで実践的で,量子取引の初心者にとって良いです.しかし,取引の頻度とリスクを制御することは依然として重要です.


/*backtest
start: 2024-01-14 00:00:00
end: 2024-01-21 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="EMA Ribbon [Krypt] with Buy/Sell Signals", shorttitle="EMA Ribbon", overlay=true)

dropn(src, n) =>
    na(src[n]) ? na : src

length1 = input(20, title="MA-1 period", minval=1)
length2 = input(25, title="MA-2 period", minval=1)
length3 = input(30, title="MA-3 period", minval=1)
length4 = input(35, title="MA-4 period", minval=1)
length5 = input(40, title="MA-5 period", minval=1)
length6 = input(45, title="MA-6 period", minval=1)
length7 = input(50, title="MA-7 period", minval=1)
length8 = input(55, title="MA-8 period", minval=1)
source_input = input(close, title="Source")

price = dropn(source_input, 1)

ema1 = ema(price, length1)
ema2 = ema(price, length2)
ema3 = ema(price, length3)
ema4 = ema(price, length4)
ema5 = ema(price, length5)
ema6 = ema(price, length6)
ema7 = ema(price, length7)
ema8 = ema(price, length8)

plot(ema1, title="MA-1", color=#f5eb5d, transp=0, linewidth=2)
plot(ema2, title="MA-2", color=#f5b771, transp=0, linewidth=2)
plot(ema3, title="MA-3", color=#f5b056, transp=0, linewidth=2)
plot(ema4, title="MA-4", color=#f57b4e, transp=0, linewidth=2)
plot(ema5, title="MA-5", color=#f56d58, transp=0, linewidth=2)
plot(ema6, title="MA-6", color=#f57d51, transp=0, linewidth=2)
plot(ema7, title="MA-7", color=#f55151, transp=0, linewidth=2)
plot(ema8, title="MA-8", color=#aa2707, transp=0, linewidth=2)

// Buy and sell signals based on crossover and crossunder
buySignal = crossover(ema1, ema8)
sellSignal = crossunder(ema1, ema8)

plotshape(series=buySignal, title="Buy Signal", color=color.green, style=shape.triangleup, size=size.small)
plotshape(series=sellSignal, title="Sell Signal", color=color.red, style=shape.triangledown, size=size.small)

if buySignal
    strategy.entry("Enter Long", strategy.long)
else if sellSignal
    strategy.entry("Enter Short", strategy.short)

もっと