二重移動平均振動ブレークスルー戦略


作成日: 2023-11-27 17:44:49 最終変更日: 2023-11-27 17:44:49
コピー: 0 クリック数: 624
1
フォロー
1617
フォロワー

二重移動平均振動ブレークスルー戦略

概要

双均線振動突破策は,2つの異なる周期の均線を計算して,通路を形成し,価格の振動動きを判断する.価格が通路を破るとき,取引シグナルを形成する.この戦略は,同時に市場の主流動向判断と組み合わせて,誤った突破を避ける.

戦略原則

この戦略は,主に2つの移動均線によって上下通路を形成し,通路の範囲は平均実際の波動範囲ATRによって決定される.具体的には,戦略は主に以下のステップを含む.

  1. 2つの平均線を計算し,平均線1は周期が短い,平均線2は周期が長い.平均線1は現在の価格傾向を反映し,平均線2は主流の価格傾向を反映する.

  2. 平均線1上下それぞれにATRが加えられ,ATRは現在の市場の変動を反映するチャネルを形成する.

  3. 価格が下から上へチャネルを突破すると,買い信号が形成され,価格が上から下へチャネルを突破すると,売り信号が形成されます.

  4. 主流価格トレンドの判断と組み合わせて,短期間の突破の方向が長期間のトレンドと一致するときにのみ,真の取引シグナルが生成されます.

上述のステップにより,この戦略は,価格変動のトレンドの突破点を捕捉し,同時に,主流のトレンドと組み合わせて,誤ったシグナルを回避します.

優位分析

この戦略の利点は以下の通りです.

  1. 双均線を用いた通路は,現在の価格の変動範囲を反映する.

  2. ATRパラメータの導入により,チャネル範囲は市場の変動率をリアルタイムで追跡できます.

  3. 市場が揺れ動いているときに誤った信号を避けるために,主流の価格トレンドの判断と組み合わせる.

  4. 戦略的判断のルールは明快でシンプルで,容易に理解できる実装で,研究を学ぶのに適しています.

リスク分析

この戦略には以下のリスクもあります.

  1. 突破失敗の後に誤ったチャンスが生じやすい.利益の後にポジションを移転することで,このリスクを低減することができる.

  2. 主流の判断では,時間遅れがあるため,誤信号を完全に回避することはできません.平均線パラメータを適切に調整して低減することができます.

  3. 大幅に波動する市場では,止損点が突破されやすい.市場変動に対応するために,リアルタイムでATRを調整することができる.

最適化の方向

この戦略は以下の点で最適化できます.

  1. 平均線のパラメータを計算して,異なる品種の最適パラメータの組み合わせを見つけるために最適化することができます.

  2. ATRのパラメータも最適化され,チャンネルが現在の波動性をよりよく追跡できるようにする.

  3. 量能指標,波動指標など,追加のフィルタリング条件を追加し,誤信号をさらに避ける.

  4. 機械学習技術によって各パラメータを自動的に最適化し,パラメータの動的調整を実現する.

要約する

双均線振動突破戦略は,双均線通路と主流の方向判断によって,振動の傾向を捉えることを実現する.この戦略の判断規則は,単純で明確で,容易に理解し,実行し,突破戦略を理解し,学ぶための優れた例である.この戦略は,パラメータ設定と信号フィルタリングを継続的に最適化することによって,安定性と収益性をさらに高めることができる.

ストラテジーソースコード
/*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)