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

作者: リン・ハーンチャオチャン, 日付: 2023年11月7日 15:48:41
タグ:

img

概要

移動平均クロスオーバー戦略は,非常に古典的な技術分析戦略である. 移動平均を計算し,低価格で購入し,高価格で販売するという目標を達成するために,異なる期間の移動平均を計算し,そのクロスオーバーを観察する. この戦略は,中長期取引に適しており,市場のノイズを効果的にフィルタリングし,トレンドを特定することができます.

原則

この戦略は主に10日間の単純な移動平均線 (SMA) と10日間の三角移動平均線 (TRIMA) を計算する.SMAがTRIMAを超えると,市場トレンドが下落から上昇に変化したことを示す買い信号が生成され,私たちは購入することができます.SMAがTRIMAを下回ると,市場トレンドが上昇から減少に変化したことを示す販売信号が生成され,私たちは販売することができます.

具体的には,戦略はまず閉じる価格を入力し,SMAとTRIMAを計算するためのサイクル長さを定義する.SMAの計算式は:

SMA = (P1 + P2 +... + Pn) /n

この項目は,過去 n 日間の閉店価格です.

TRIMAの計算式は以下のとおりです.

TRIMA = (SMA1 + SMA2 + SMA3) /3

この項目は,過去 n 日間の閉場価格の SMA1, SMA2, SMA3 を表す.

TRIMAは SMAの上に計算された SMAで,より良いスムージング効果があります. 短期SMAが長期TRIMAを上回ると,短期移動平均の突破を示し,購入することができます. その反対に,SMAがTRIMAを下回ると,短期移動平均を下回って破綻を示し,販売することができます.

利点

この戦略の最大の利点は,移動平均値のトレンド判断能力を活用して,市場のトレンドを効果的に特定し,低価格で購入し,高価格で販売するために短期間の市場ノイズをフィルタリングすることです.単一の移動平均値と比較して,SMAとTRIMAの組み合わせは突破の信頼性を向上させ,誤った突破の確率を減らすことができます.また,移動平均値自体には良好なスムーズ性があり,単一のストップ損失の確率を減らすストップ損失の役割も果たします.一般的に,この戦略は中長期取引に非常に適しています.

リスク

この戦略の主なリスクは,移動平均が価格変化に遅れ,トレンドの初期段階を見逃し,遅れてエントリーする可能性があります.また,市場が明らかなトレンドがない場合,この戦略はより多くの偽の突破を生み出します.最後に,移動平均戦略はパラメータ最適化により依存します.パラメータが正しく設定されていない場合,それは戦略にも大きく影響します.

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

この戦略は,次の側面で最適化できます.

  1. 移動平均のサイクルパラメータを最適化して 科学的に最適な組み合わせを見つけます

  2. 取引量が低いときに間違った信号を避けるため,取引量などのフィルタリング指標を追加します.

  3. MACD のような傾向指標を組み合わせて 地元の傾向を判断し,統合市場での頻繁な取引を避ける.

  4. 市場が特定の段階に入るとき,サイクルパラメータを動的に調整するために適応性移動平均を採用する.

  5. 複数のタイムフレームで確認します 例えば,日用線と4時間の線が 突破するときにのみエントリーを検討します

概要

移動平均クロスオーバー戦略は,中長期のポジション取引に非常に適したシンプルで実用的な技術分析戦略である.トレンド方向を効果的に特定することができる.しかし,一定の遅れも伴い,誤ったシグナルの可能性を減らすためにトレンド判断指標でフィルタリングおよび最適化する必要がある.パラメータが適切に最適化されれば,資本を保護し,より大きなトレンド機会を掴むことができる.それは間違いなく戦略アイデアとして研究し適用する価値がある.


/*backtest
start: 2022-10-31 00:00:00
end: 2023-11-06 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//TMA strategy I came across, uses sma to display entry/exit points for both margin and non margin trading. The buy/sell signals as well as syntax are hidden behind comments if you scroll down.
//Change the commented fields for margin or spot trading!
//@version=3
strategy("MP Rollercoaster Strat", overlay=true)

bgcolor ( color=black, transp=0, title='Blackground', editable=true)

x = input(close, "Red")
n = input(10, "periods")
trima = sma(sma(x,n), n)

kisa=input(5, "Green")
sma = sma(close, kisa)

bull = (sma>trima)
fill(plot(sma, color = green), plot(trima, color=red), bull ? green : red)

//Conditions
buy_signal = crossover(sma,trima)
sell_signal = crossunder(sma,trima)

plotshape(sell_signal, style=shape.triangleup, color = red, text="Short")
plotshape(buy_signal, style=shape.triangledown, color = green, text="Long")
//plotshape(sell_signal, style=shape.triangleup, color = red, text="Sell")
//plotshape(buy_signal, style=shape.triangledown, color = green, text="Buy")

alertcondition(sell_signal, title = 'Short', message = 'e= s= c=position b=long t=market l= | delay=30 | e= s= b=short l= t=market q=0.01')
alertcondition(buy_signal, title = 'Long', message =  'e= s= c=position b=short t=market l= | delay=30 | e= s= b=long l= t=market q=0.01')

//alertcondition(sell_signal, title = 'Sell', message = 'e= s= c=order b=buy | delay=3 | e= b=sell q=99% p=0.70% u=currency')
//alertcondition(buy_signal, title = 'Buy', message =  'e= s= c=order b=sell | delay=30 | e= b=buy q=80 p=0.1% u=currency')

testStartYear = input(2018, "From Year") 
testStartMonth = input(4, "From Month")
testStartDay = input(1, "From Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2019, "To Year")
testStopMonth = input(1, "To Month")
testStopDay = input(1, "To Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

testPeriod() => true

if testPeriod()
    if buy_signal
        strategy.entry("Long", true)
    

    if sell_signal
        strategy.close("Long")

もっと