異なる期間の移動平均クロスオーバー戦略に基づく


作成日: 2023-12-08 12:20:42 最終変更日: 2023-12-08 12:20:42
コピー: 0 クリック数: 592
1
フォロー
1621
フォロワー

異なる期間の移動平均クロスオーバー戦略に基づく

概要

この戦略は,2つの異なる周期の移動平均を計算し,その交差点を描き出すことで取引シグナルを発信する. 短期移動平均の上を長期移動平均を横切るときは,多行し,短期移動平均の下を長期移動平均を横切るときは,空行する.

戦略原則

この策略は,移動平均の優位性に基づいている.それは価格の配列のランダム性を取り除き,主要なトレンドを抽出できる.この策略は,7日線と20日線を使用して,二重移動平均システムを構築する.この2つの周期は,よりよく使用され,より明確である.

短期移動平均線の上を長期移動平均線に突破すると,価格が上昇傾向に入ることを意味し,短期移動平均線の下を長期移動平均線に突破すると,価格が下降傾向に入ることを意味する.この原理に従って,我々は買多し,または空売りする.

具体的には,戦略は7日単調移動平均と20日単調移動平均を計算して,2つの平均が交差するときにトレンドの転換を判断し,取引信号を発信する.交差のタイプを区別するために,短期線が長期線よりも大きいことを上昇傾向と価格の低下傾向と区別する.短期線で長期線を穿越するとき,つまり価格の上昇傾向が始まる時に多頭場をする.短期線下線で長期線を穿越するとき,つまり価格の低下傾向が始まる時に空頭場をする.

優位分析

(1) 戦略は明確でシンプルで,理解し,実行しやすい.

(2) 移動平均は,トレンドを追跡する指標として,価格に含まれる部分的なノイズを効果的にフィルタリングし,双移動平均システムの使用により,安定性をさらに向上させることができる.

(3) パラメータ配置は,異なる市場環境の取引要求を満たす柔軟で周期的に調整可能なパラメータの組み合わせである.

(4) 明確な取引信号を判断するために,よりよく使用される2つの移動平均周期を使用する.

(5) 視覚的補助分析は比較的強力で,視覚効果によって直感的に傾向,重要な点等を判断する.

(6) 戦略の反省後,最適化結果に応じてパラメータを調整して,戦略の収益率を向上させることができる.

リスク分析

(1) 二重移動平均策略は市場の波動に敏感であり,波動的な状況で頻繁に取引損失が発生することが容易である.

(2) 均線交差のみに頼るだけでは,トレンドの転換点を正確に判断することができないし,誤った信号を引き起こす可能性がある.

(3) 規則は固執しており,突発的な事件が市場に影響を及ぼしたとき,策略が調整できないことが大きな損失を招く可能性がある.

(4) パラメータが不適切である場合,誤ったシグナルまたは取引機会が失われ,慎重にテストして最適化する必要があります.

これらのリスクを緩和するために,パラメータの組み合わせを適切に調整することができます.他の指標を添加する補助; 損失を制御するストップ・ロズ戦略を設定します.市場環境に応じてパラメータまたは閉鎖戦略を調整します.

最適化の方向

(1) 他の技術指標と組み合わせて,組み合わせ戦略を形成し,信号の正確性を向上させることができる.例えば,移動平均線の交差を判定しながら交差量を拡大する交差量指標を加えることで,Entry chanceを増加させることができる.

(2) ストップ・ロスの策略に加入し,単一の損失を効果的に制御する.例えば,価格が移動平均の一定範囲を破るとき,現在のHead positionから退出する.

(3) 移動平均を最適化する周期パラメータの組み合わせをテストする.異なる高速・遅い周期マッチングを試して最適なパラメータの組み合わせを見つける.さらに,指数移動平均,重量移動平均などの他の移動平均指標をテストすることもできる.

(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)