移動平均スタッキング戦略


作成日: 2024-01-22 12:21:47 最終変更日: 2024-01-22 12:21:47
コピー: 2 クリック数: 906
1
フォロー
1617
フォロワー

移動平均スタッキング戦略

概要

移動平均帯の策略は,異なる周期の移動平均を計算し,それらの交差状況に基づいて取引信号を生成する.この策略は,8つの異なる周期の指数移動平均を使用して移動平均の帯を構成し,最も短い周期と最も長い周期の移動平均の交差状況に基づいて市場の傾向を判断し,取引信号を生成する.

戦略原則

この戦略は,主に8つの移動平均 (20日線,25日線,30日線,35日線,40日線,45日線,50日線,55日線) に基づいています. この8つの移動平均は,下から上へと移動平均の重なり帯を構成しています. 短期移動平均が下から長期移動平均を突破すると,買入シグナルが生じます. 短期移動平均が上から下へと突破すると,販売シグナルが生じます.

例えば,20日線が下から55日線を突破すると,買入シグナルが生成され,20日線が上から55日線を突破すると,売出シグナルが生成される.移動平均は市場トレンドをよく指示する.この戦略は,複数の移動平均の交差状況を利用して市場の主要なトレンドを判断し,取引シグナルを生成する.

優位分析

移動平均の重複策には以下の利点があります.

  1. 複数の異なる周期的な移動平均を使用することで,市場のトレンドの変化をより正確に判断できます.

  2. 複数の移動平均は,取引信号をより明確にするための重複帯を構成しています.

  3. 長期のトレンドと短期の調整を考慮して,長期・短期の移動平均と組み合わせる.

  4. 策略パラメータの最適化スペースは広く,移動平均の周期などのパラメータを調整することで策略を最適化することができる.

  5. 戦略の論理はシンプルで明快で,理解し,実行しやすい.

リスク分析

移動平均の策略にはいくつかのリスクがあります.

  1. 大盘全体でトレンドを特定できない場合,誤った信号が生じることがあります. 他の指標と組み合わせることで確認できます.

  2. 取引頻度が高くなり,取引コストとスライドコストを増加させる可能性がある.移動平均周期を適切に調整して取引頻度を低下させることができる.

  3. パラメータを正しく設定しない場合,過敏または過度の遅滞を引き起こす可能性があります. 繰り返しテストして最適化するパラメータが必要です.

  4. 突発的な事件により,急飛ぶことで,戦略を無効にすることがあります.

最適化の方向

移動平均の交差策は,以下の点で最適化できます.

  1. 移動平均の周期パラメータを調整し,最適なパラメータの組み合わせを探します.

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

  3. 波動性指数と組み合わせて,低波動性環境で取引頻度を減らす.

  4. ストップ・ロスの戦略を設定し,単一損失をコントロールする.

  5. 資金管理戦略の最適化と収益性の向上

  6. 異なる品種の契約のパラメータの強さをテストする.最高の品種を探する.

要約する

移動平均線叠加戦略の全体的な考え方は明確で,複数の移動平均線の交差によって市場の動向を判断し,取引信号を生成する.戦略の最適化スペースは大きい,パラメータを調整し,信号フィルタを追加するなどの方法を最適化する.全体的に言えば,この戦略はシンプルで実用的で,量化取引の入門学習に適している.しかし,取引頻度とリスクを制御することに注意する必要がある.

ストラテジーソースコード
/*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)