クラシック移動平均クロスオーバー戦略


作成日: 2023-11-07 15:48:41 最終変更日: 2023-11-07 15:48:41
コピー: 0 クリック数: 723
1
フォロー
1621
フォロワー

クラシック移動平均クロスオーバー戦略

概要

移動平均線交差策略は,非常に古典的な技術分析策略である.異なる周期の移動平均を計算し,それらの交差状況を観察することで,市場情勢の傾向を判断し,低買い高売りの目的を達成する.この策略は,中長期線取引に適用され,市場騒音を効果的にフィルターし,傾向を識別することができる.

原則

この戦略は,主に10日単調移動平均SMAと10日三角移動平均TRIMAを計算する.TRIMAをSMA上を通過すると,買い信号が生じ,下落から上昇に転じ,買えます.TRIMAをSMA下を通過すると,売り信号が生じ,上昇から下落に転じ,売ることができます.

具体的には,策略は最初に閉店価格を入力し,SMAとTRIMAの計算周期長さを定義する.SMAの計算式は次のとおりである.

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

この値が,過去 n 日の閉店価格である.

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

TRIMA = (SMA1 + SMA2 + SMA3) / 3

このうち,SMA1,SMA2およびSMA3は,それぞれ過去n日間の閉店価格のSMAである.

このように,TRIMAは,SMAを再びSMAにすることで,よりよい平滑効果をもたらす.短い周期SMAの上に長い周期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")