移動平均のクロスオーバー戦略

作者: リン・ハーンチャオチャン, 日付: 2023-12-08 12:20:42
タグ:

img

概要

この戦略は,異なる期間の2つの移動平均を計算し,その交差点をプロットすることによって取引信号を生成する.短期移動平均が長期移動平均を超えると長くなって,短期移動平均が長期移動平均を下回ると短くなってしまいます.

戦略の論理

この戦略は,移動平均値の利点に基づいています.これは,価格順序のランダム性を排除し,主要なトレンドを抽出します.この戦略は,7日線と20日線で構成される二重移動平均値システムを使用します.これは一般的に使用され,かなり決定的な2つの期間です.

短期移動平均が長期移動平均を上回ると,価格は上昇傾向に入っていることを示します. 下を横切ると,価格は下落傾向に入っていることを示します. この論理に従って,それぞれロングまたはショートになります.

戦略は,7日間のシンプル・ムービング・平均値 (SMA) と20日間のシンプル・ムービング・平均値を計算する.この2つの平均値が交差すると,トレンド逆転を判断し,トレード・シグナルを誘発する.クロスオーバーの種類を区別するために,長期線上にある短期線を上向きの価格傾向と,逆向きの傾向と定義する.短期線が長期線上にある長期線を交差すると,つまり上向きのトレンドが始まると,ロングポジションを入力する.短期線が下向きに交差すると,つまり下向きのトレンドが始まると,ショートポジションを入力する.

利点分析

(1) 戦略の論理は単純で理解し実行しやすい.

(2) 動向平均値は,傾向を追跡する指標として,価格のノイズを効果的にフィルタリングすることができます.

(3) 柔軟なパラメータ構成により,異なる市場条件と取引要件を満たす.

(4) 2つの一般的に使用される移動平均期間の使用により,明確な取引信号を容易に決定できます.

(5) 直感的なトレンド,キーレベル識別等のための強力な視覚化

(6) パラメータは,戦略の収益性を向上させるためにバックテストによって最適化することができます.

リスク分析

(1) この戦略は市場変動に非常に敏感で,長期間の間断的な損失につながる可能性があります.

(2) クロスオーバーは,トレンド逆転レベルを正確に特定できず,間違った信号を誘発する可能性があります.

(3) 厳格な規則は,市場に影響を与える急激な出来事に適応できず,大きな損失を引き起こす可能性があります.

(4) 不適切なパラメータは,不正確な信号や失敗した取引につながる可能性があります.注意深くテストする必要があります.

これらのリスクを軽減するために,パラメータはそれに応じて調整することができる. 確認のために他の指標を追加することができる. ストップ損失戦略は損失を制御することができる. パラメータまたは戦略は市場体制に応じて調整することができる.

改善の方向性

(1) 他の技術指標を組み合わせた戦略に組み込むことで,信号の精度が向上する.例えば,移動平均クロスオーバーの拡大を確認するためにボリュームを追加する.

(2) 単一の取引損失を効果的に制御するためにストップ損失戦略を追加します.例えば,価格が移動平均値を何らかの値で破った場合,ポジションを終了します.

(3) 移動平均期間のテストと最適化.最良のパラメータを見つけるために異なる高速および遅い組み合わせを試す. EMA,WMAなどの他の移動平均値もテストできます.

(4) 異なる製品と市場状況に基づくパラメータ調整.より不安定な製品では,より短い移動平均値とより小さなクロスターミンの差を使用します.

結論

移動平均クロスオーバー戦略は,非常に典型的で基本的なトレンドフォロー戦略である.異なる期間の2つの移動平均を計算し,それらのクロスオーバーを観察することで,価格傾向の変化を判断する.短い期間の移動平均がより長い期間の上または下を横断するときに取引信号が生成される.この単純な論理は,実装しやすく柔軟に調整できるので,導入量戦略である.しかし,市場変動や潜在的な不正確な信号に対する敏感性などの欠点もあります.他の指標と組み合わせ,ストップを追加し,パラメータ最適化することで,戦略は定量取引のための非常に実践的なものに強化することができます.


/*backtest
start: 2022-12-01 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Ma stratégie", overlay=true)

// Multi-timeframe and price input
pricetype = input(close, title="Price Source For The Moving Averages")
useCurrentRes = input(true, title="Use Current Timeframe As Resolution?")
resCustom = input(title="Use Different Timeframe? Then Uncheck The Box Above",  defval="W")
res = useCurrentRes ? timeframe.period : resCustom
price = request.security(syminfo.tickerid, res, pricetype)

// MA period input
shortperiod = input(7, title="Short Period Moving Average")
longperiod = input(20, title="Long Period Moving Average")



short = ema(price, shortperiod) 
long = ema(price, longperiod) 
   
// MA trend direction color
shortcolor = short > short[1] ? lime : short < short[1] ? red : blue
longcolor = long > long[1] ? lime : long < long[1] ? red : blue

// MA output
MA1 = plot(short, title="Short Period Moving Average", style=linebr, linewidth=2, color=shortcolor)
MA2 = plot(long, title="Long Period Moving Average", style=linebr, linewidth=4, color=longcolor)
fill(MA1, MA2, color=silver, transp=50)

// MA trend bar color
TrendingUp() => short > long 
TrendingDown() => short < long 
barcolor(TrendingUp() ? green : TrendingDown() ? red : blue)

// MA cross alert
MAcrossing = cross(short, long) ? short : na
plot(MAcrossing, style = cross, linewidth = 4,color=black)

// MA cross background color alert
Uptrend() => TrendingUp() and TrendingDown()[1]
Downtrend() => TrendingDown() and TrendingUp()[1]
bgcolor(Uptrend() ? green : Downtrend() ? red : na,transp=50)

// Buy and sell alert
Buy = Uptrend() and close > close[1]
Sell = Downtrend() and close < close[1]
plotshape(Buy, color=black, style=shape.arrowup, text="Buy", location=location.bottom)
plotshape(Sell, color=black, style=shape.arrowdown, text="Sell", location=location.top)



if (Buy)
    strategy.entry("My Long Entry Id", strategy.long)


if (Sell)
    strategy.entry("My Short Entry Id", strategy.short)

もっと