資源の読み込みに... 荷物...

2つのタイムフレームスーパートレンド追跡戦略

作者: リン・ハーンチャオチャン, 日時: 2023-09-22 14:27:52
タグ:

概要

これは二次時間枠スーパートレンド追跡戦略である. 2つの異なる時間帯にスーパートレンド指標を適用する. 1つはトレンド方向を決定するための主な時間枠,そして1つはエントリをフィルタリングするための補助的な時間枠. 2つの時間枠のスーパートレンドが同じ方向にある場合にのみ,傾向逆転点をより正確に把握するために入力する.

戦略の論理

この戦略のコア指標はスーパートレンドである.スーパートレンドは価格変動を計算することによって価格の相対的な傾向方向を決定する.この戦略は2つの時間帯でスーパートレンドを使用し,それぞれメインおよび補助タイムフレームのスーパートレンドラインを計算する.

具体的な取引論理は:

  1. 主要タイムフレームの方向 Supertrend を全体的なトレンド方向として使用する.

  2. 補助タイムフレーム Supertrend が同じ方向に信号を出しているときに入力します.

  3. ストップ・ロスを設定して 利益ポイントを取ります

  4. 主要タイムフレーム スーパートレンドが再び回転すると終了します

2つのタイムフレーム指標を組み合わせることで,より正確なエントリのためにいくつかの差異をフィルタリングすることができます.

利点分析

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

  1. 2つのタイムフレームの組み合わせにより,より正確なトレンド判断が可能になります.

  2. スーパートレンドはトレンド変化に敏感で,正確なエントリです.

  3. 損失を止め 利益をコントロールするリスクをとる

  4. シンプルで直線的な戦略の論理は 理解しやすい

  5. パラメータは異なる製品にカスタマイズできます.

リスク分析

主なリスクは以下のとおりです.

  1. スーパートレンドの遅れは 誤った信号を引き起こす可能性があります

  2. 誤ったストップ・ロードと取利益は,傾向の過剰追及や早すぎるストップ・ロードを引き起こす可能性があります.

  3. 2つのタイムフレームでは 短く逆転する可能性があります

  4. パラメータ最適化は,過去のデータに依存し,過剰なフィットメントのリスクがあります.

  5. 取引コストは考慮されません

解決策は次のとおりです

  1. インディケーターのパラメータを調整し コンボ検証のための他のインディケーターを追加します

  2. バックテスト結果に基づいて ストップ・ロスを動的に最適化し 利益を得ます

  3. 補助的な判断として 短い時間枠をテストします

  4. バックテストのデータ範囲を拡大し 多市場バックテストの検証

  5. 取引コストを追加します.

オプティマイゼーションの方向性

戦略は以下によってさらに最適化できます.

  1. 最適なコンボを見つけるためにより多くの指標の組み合わせをテストします.

  2. マシン学習を使って パーマータを動的に最適化します

  3. ストップ・ロスの最適化と リスク・リターン比率の向上のために 利益を取ること

  4. もっと多くの時間枠を 組み合わせてみる

  5. 取引数に基づいて利益とストップ損失の範囲を調整する.

  6. コミッションとスライドロジックを追加します.

  7. グラフィックパラメータ最適化ツールの開発

結論

この戦略は,デュアルタイムフレームスーパートレンド指標を使用して,比較的正確なトレンド判断とエントリを達成する.ストップ損失と利益を取ることを設定することによってリスクを制御する.戦略論理はシンプルで明確で,拡張し最適化することは簡単です.より多くの指標を導入し,パラメータを動的に最適化し,取引コストを追加し,さらに強化することでさらに改善することができます. 全体的に,この戦略は,良い基準値を持つ有用なデュアルタイムフレームトレンド追跡アイデアを提供します.


/*backtest
start: 2023-08-22 00:00:00
end: 2023-09-21 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//Supertrend Strategy by breizh29 using *rajandran.r* Supertrend Indicator

// strategy("Super Trend 2", overlay=true, default_qty_value=100)
TrendUp = 0.0
TrendDown = 0.0
Trend = 0.0
MTrendUp = 0.0
MTrendDown = 0.0
MTrend = 0.0

res = input(title="Main SuperTrend 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=security(syminfo.tickerid,res,hl2-(Factor*atr(Pd)))
MDn=security(syminfo.tickerid,res,hl2+(Factor*atr(Pd)))

Mclose=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)



もっと