ARGOバンドブレイクアウト戦略


作成日: 2023-10-07 16:04:16 最終変更日: 2023-10-07 16:04:16
コピー: 2 クリック数: 712
1
フォロー
1617
フォロワー

概要

ARGO波段突破戦略は,通路突破に基づく4時間波段の取引戦略である.この戦略は,ブリン通路と突破原理を組み合わせて,4時間間の間に取引信号を形成し,大きな価格変動を捕捉する.

戦略原則

この戦略は,まず,一定の周期における最高値と最低値の形成チャネル範囲を計算する. そして,チャネルの中央線とチャネル上下線のブリン線を計算する. チャネル方向が変化すると,購入と販売の信号が形成される.

具体的には,戦略は最初にNサイクル (デフォルト47サイクル) 内の最高価格upBoundと最低価格downBoundを計算し,チャネルの上下境界を形成する. そして,偏移率point (デフォルト1) と容差tol (デフォルト1000) を設定し,チャネルの上上限BoundUpと下限BoundDownを計算する. 価格が上下軌道を通るときに買入シグナルを生じ,価格が下下軌道を通るときに売りシグナルを生じます.

さらに,この戦略は,ストップ・ストップの条件を設定した. ストップは,下線近くで購入し,ストップは,上線近くで販売する. ストップは,入力の目標損益率として設定した.

優位分析

  • ブリンチャネル原理を利用して,市場の変動率に応じてチャネル範囲を調整し,ノイズ取引の影響を受けないようにする.
  • 4時間周期で動作し,大きな価格変動を捕捉し,大きな利益を得ることができます
  • 突破策と組み合わせると,トレンドの転換点で取引シグナルを形成し,価格の飛躍を間に合うように捕捉できます.
  • ストップ・ロスト・ストップを設定し,各取引のリスク/リターン比率を制御します.

リスクと解決

  • ブリン・チャネル取引は,偽の突破口となり,監禁される危険性があります.
  • 大周期操作で,損失拡大の危険性
  • 追跡停止の設定は不合理で,大きな損失を招く可能性があります.
  • 解決策は
    • 偽突破を避けるために通路パラメータを合理的に設定する
    • ポジションとストップポイントを慎重に決めること
    • ストップ・ストップ・ロスの最適化,単一取引リスクの厳格な管理

最適化の方向

  • ブリン通路のパラメータを最適化して,通路を市場の波動に近い状態に
  • ストップ・ストップ・ストップ戦略の最適化,リスク/報酬比の動的調整
  • 取引フィルタリングの条件を追加し,高値の追及を避ける
  • マルチファクター判定を導入し,偽の突破から誤った信号を回避する.
  • トレンドと波動率の指標を組み合わせて,意思決定の正確性を向上させる
  • 資金管理戦略の最適化,市場状況に応じてポジションの調整

要約する

ARGO波段突破戦略は,ブルリン通路と突破原理を利用した4時間中長線取引戦略である.短線取引と比較して,この戦略は,価格の中長線トレンドの転換点をより重視している.パラメータを最適化することで,異なる市場環境に適応し,リスクを制御した前提で大きな取引収益を得ることができる.この戦略は,傾向性も考慮し,リスク管理も重視し,推奨される中長線突破取引戦略である.

ストラテジーソースコード
/*backtest
start: 2023-01-01 00:00:00
end: 2023-10-06 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2

// strategy("ARGO_BAND-STRATEGY", overlay=true,default_qty_value=10000,scale=true,initial_capital=100,currency=currency.USD)

// A 4hours Breakout Strategy work in progres..it's  a starting point, thanks to all tradingview community
//How to use: test it only on gbpjpy 240 min, wait the end of the candle to place next order, red and blue dots are short and long stop orders, Targets are Upper and lowerBands. Test it and enjoy but use at your own risk..
//2016 © F.Peluso


risk=input(title="Risk", defval=1)
length = input(title="Length",  minval=1, maxval=1000, defval=47)
stopBound=input(title="Previous",defval=10)
upBound = highest(high, length)
downBound = lowest(low, length)
point=1
tol=1000
stopT=input(title="Stop", defval=5,minval=1, maxval=5)
dev =input(title="Tolerance",defval=2,minval=1, maxval=5)
limitBoundUp=( highest(high, length))*(point-(dev/tol))
limitBoundDown=downBound/(point-(dev/tol))
plot(limitBoundUp[1],linewidth = 3,style = circles, color = navy,trackprice=true),transp=0
plot(limitBoundDown[1],linewidth = 3,style = circles, color = red,trackprice=true,transp=0)
mezzalinea=((upBound+downBound)/2)

// Color Bands

colo = ((close>limitBoundUp[1]) ? blue : (close<upBound[1]) ? white : na)
UpB = plot(upBound[1], title="Upper Bound", style=linebr, linewidth=1, color=colo)
DownB = plot(limitBoundUp[1] ,title="Lower Bound", style=linebr, linewidth=2, color=colo)
fill(UpB, DownB, color=colo, transp=90)

plot(limitBoundUp[2]/(point+(stopT/tol)),color=colo)

coloS = ((close<limitBoundDown[1]) ? red : (close>downBound[1]) ? white : na)
DB = plot(downBound[1], title="Upper Bound", style=linebr, linewidth=1, color=coloS)
DoB = plot(limitBoundDown[1] ,title="Lower Bound", style=linebr, linewidth=2, color=coloS)
fill(DB, DoB, color=coloS, transp=90)

plot(limitBoundDown[2]*(point+(stopT/tol)),color=coloS)

// Strategy

past=input(title="Past", defval=5)
buy=(crossover(close,limitBoundUp))
closebuy=cross(high[past],upBound[0])
stopbuy = limitBoundUp[2]/(point+(stopT/tol))

sell=crossunder(close,limitBoundDown)
closesell=cross(low[past],downBound[0])


if (not na(close[length]))
    if (buy)
        strategy.entry("ChBrkLE", strategy.long,stop=limitBoundUp - syminfo.mintick,comment="Long I")   

strategy.close("ChBrkLE",when=closebuy)

if (not na(close[length]))
    if (sell)
        strategy.entry("ChBrkSE", strategy.short,stop=limitBoundDown + syminfo.mintick,comment="Short I")   

strategy.close("ChBrkSE",when=closesell)

Target =input(0) * 10 
Stop = input(90) * 10 
Trailing = input(40) * 10
CQ = 100
TPP = (Target > 0) ? Target : na
SLP = (Stop > 0) ? Stop : na
TSP = (Trailing > 0) ? Trailing : na
strategy.exit("Out Short", "ChBrkSE", qty_percent=CQ, profit=TPP, loss=SLP, trail_points=TSP)
strategy.exit("Out Long", "ChBrkLE", qty_percent=CQ, profit=TPP, loss=SLP, trail_points=TSP)
//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)