
双均線振動突破策は,2つの異なる周期の均線を計算して,通路を形成し,価格の振動動きを判断する.価格が通路を破るとき,取引シグナルを形成する.この戦略は,同時に市場の主流動向判断と組み合わせて,誤った突破を避ける.
この戦略は,主に2つの移動均線によって上下通路を形成し,通路の範囲は平均実際の波動範囲ATRによって決定される.具体的には,戦略は主に以下のステップを含む.
2つの平均線を計算し,平均線1は周期が短い,平均線2は周期が長い.平均線1は現在の価格傾向を反映し,平均線2は主流の価格傾向を反映する.
平均線1上下それぞれにATRが加えられ,ATRは現在の市場の変動を反映するチャネルを形成する.
価格が下から上へチャネルを突破すると,買い信号が形成され,価格が上から下へチャネルを突破すると,売り信号が形成されます.
主流価格トレンドの判断と組み合わせて,短期間の突破の方向が長期間のトレンドと一致するときにのみ,真の取引シグナルが生成されます.
上述のステップにより,この戦略は,価格変動のトレンドの突破点を捕捉し,同時に,主流のトレンドと組み合わせて,誤ったシグナルを回避します.
この戦略の利点は以下の通りです.
双均線を用いた通路は,現在の価格の変動範囲を反映する.
ATRパラメータの導入により,チャネル範囲は市場の変動率をリアルタイムで追跡できます.
市場が揺れ動いているときに誤った信号を避けるために,主流の価格トレンドの判断と組み合わせる.
戦略的判断のルールは明快でシンプルで,容易に理解できる実装で,研究を学ぶのに適しています.
この戦略には以下のリスクもあります.
突破失敗の後に誤ったチャンスが生じやすい.利益の後にポジションを移転することで,このリスクを低減することができる.
主流の判断では,時間遅れがあるため,誤信号を完全に回避することはできません.平均線パラメータを適切に調整して低減することができます.
大幅に波動する市場では,止損点が突破されやすい.市場変動に対応するために,リアルタイムでATRを調整することができる.
この戦略は以下の点で最適化できます.
平均線のパラメータを計算して,異なる品種の最適パラメータの組み合わせを見つけるために最適化することができます.
ATRのパラメータも最適化され,チャンネルが現在の波動性をよりよく追跡できるようにする.
量能指標,波動指標など,追加のフィルタリング条件を追加し,誤信号をさらに避ける.
機械学習技術によって各パラメータを自動的に最適化し,パラメータの動的調整を実現する.
双均線振動突破戦略は,双均線通路と主流の方向判断によって,振動の傾向を捉えることを実現する.この戦略の判断規則は,単純で明確で,容易に理解し,実行し,突破戦略を理解し,学ぶための優れた例である.この戦略は,パラメータ設定と信号フィルタリングを継続的に最適化することによって,安定性と収益性をさらに高めることができる.
/*backtest
start: 2022-11-20 00:00:00
end: 2023-11-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Anuj4912
//@version=4
strategy("Anuj4912", overlay=true)
res = input(title="Time Frame", defval="120")
Factor=input(1, minval=1,maxval = 100)
Pd=input(1, minval=1,maxval = 100)
tp = input(500,title="Take Profit")
sl = input(400,title="Stop Loss")
Up=hl2-(Factor*atr(Pd))
Dn=hl2+(Factor*atr(Pd))
MUp=request.security(syminfo.tickerid,res,hl2-(Factor*atr(Pd)))
MDn=request.security(syminfo.tickerid,res,hl2+(Factor*atr(Pd)))
Mclose=request.security(syminfo.tickerid,res,close)
TrendUp=close[1]>TrendUp[1]? max(Up,TrendUp[1]) : Up
TrendDown=close[1]<TrendDown[1]? min(Dn,TrendDown[1]) : Dn
MTrendUp=Mclose[1]>MTrendUp[1]? max(MUp,MTrendUp[1]) : MUp
MTrendDown=Mclose[1]<MTrendDown[1]? min(MDn,MTrendDown[1]) : MDn
Trend = close > TrendDown[1] ? 1: close< TrendUp[1]? -1: nz(Trend[1],1)
Tsl = Trend==1? TrendUp: TrendDown
MTrend = Mclose > MTrendDown[1] ? 1: Mclose< MTrendUp[1]? -1: nz(MTrend[1],1)
MTsl = MTrend==1? MTrendUp: MTrendDown
linecolor = Trend == 1 ? green : red
plot(Tsl, color = linecolor , style = line , linewidth = 2,title = "SuperTrend")
Mlinecolor = MTrend == 1 ? blue : orange
plot(MTsl, color = Mlinecolor , style = line , linewidth = 2,title = "Main SuperTrend")
plotshape(cross(close,Tsl) and close>Tsl , "Up Arrow", shape.triangleup,location.belowbar,green,0,0)
plotshape(cross(Tsl,close) and close<Tsl , "Down Arrow", shape.triangledown , location.abovebar, red,0,0)
up = Trend == 1 and Trend[1] == -1 and MTrend == 1
down = Trend == -1 and Trend[1] == 1 and MTrend == -1
plotarrow(up ? Trend : na, title="Up Entry Arrow", colorup=lime, maxheight=60, minheight=50, transp=0)
plotarrow(down ? Trend : na, title="Down Entry Arrow", colordown=red, maxheight=60, minheight=50, transp=0)
golong = Trend == 1 and Trend[1] == -1 and MTrend == 1
goshort = Trend == -1 and Trend[1] == 1 and MTrend == -1
strategy.entry("Buy", strategy.long,when=golong)
strategy.exit("Close Buy","Buy",profit=tp,loss=sl)
strategy.entry("Sell", strategy.short,when=goshort)
strategy.exit("Close Sell","Sell",profit=tp,loss=sl)