
移動平均線交差策略は,非常に古典的な技術分析策略である.異なる周期の移動平均を計算し,それらの交差状況を観察することで,市場情勢の傾向を判断し,低買い高売りの目的を達成する.この策略は,中長期線取引に適用され,市場騒音を効果的にフィルターし,傾向を識別することができる.
この戦略は,主に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の組み合わせを使用すると,突破の信頼性が向上し,偽突破の確率を減らすことができます.
この戦略の主なリスクは,移動平均は価格変化に遅れをとり,トレンドの前期を逃し,入場を遅らせることにある.さらに,市場が明らかにトレンドしていないときに,この戦略はより多くの偽ブレークを生成する.最後に,移動平均戦略はパラメータ最適化に依存しており,パラメータが正しく設定されていない場合,戦略の効果に大きな影響を与える.
この戦略は以下の点で最適化できます.
移動平均の周期パラメータを最適化し,より科学的手法で最適な周期組み合わせを探します.
渋滞のフィルタリング指標を増やして,渋滞が悪い場合の誤信号を回避する.
MACDのようなトレンド指標と組み合わせて局所的なトレンドを判断し,市場を整理する際に重複取引を避ける.
市場が特定の段階に入るときに動的に調整する周期パラメータである適応移動平均を使用する.
複数の時間枠で検証する.例えば,日線と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")