ARGOの範囲外出戦略

作者: リン・ハーンチャオチャン, 日付: 2023-10-07 16:04:16
タグ:

概要

ARGOレンジブレークアウト戦略は,チャネルブレークアウト原理にインスピレーションを受けた4時間のレンジ取引システムである.重要な価格動きを捕捉するために4時間のタイムフレーム内で取引信号を生成する.

戦略の論理

この戦略は,最初にチャネル範囲を形成するために,定義された期間中の最高高値 (upBound) と最低低値 (downBound) を計算する.その後,ボリンジャーチャネルのミッドライン,上帯,下帯を計算する.チャネル方向が変化すると購入・販売信号が起動する.

具体的には,この戦略は,N 期間にわたってアップバウンドとダウンバウンドを計算する (デフォルト47).その後,比率点 (デフォルト1) とトレランストール (デフォルト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)

もっと