トレンドブレイク - 長影戦略

作者: リン・ハーンチャオチャン, 日付: 2023年11月15日 16時43分17秒
タグ:

img

この戦略は,上昇/下落の影の長さの比率を計算して現在のトレンド方向を判断し,ATR指標でトレンドを識別する.ブレイクポイントで逆ポジションを開き,ストップロスを設定し,短期的なトレンドを把握するために利益を取ります.

戦略の論理

この戦略は,主に上昇傾向/下落傾向の影比を計算することによって現在の傾向を判断する.長期上昇傾向は上昇傾向を示し,長期下落傾向は下落傾向を示します.

具体的な論理は

  1. 下落影を計算する: 接近 - 低
  2. 高値 - オープン
  3. 影の長さとして,下落と上昇の影の最大を取ります.
  4. ろうそくの体長を計算する:高 - 低い
  5. 影と体長の比率を計算する
  6. 負債指数 > 0.5 と負債指数 > 負債指数 > 負債指数なら,下落傾向とロングポジションを判断する
  7. 成長傾向とショートポジションを判断する
  8. ランプの長さ > 0.75 * ATR でブレイクアウトを検証する
  9. ストップ・ロスを設定し,エントリー後に利益を取ります. 2:1の比率で

上記は基本的な取引論理で,トレンド検出で逆転ブレイクポイントを特定し,ストップ・ロスト/テイク・プロフィットで利益を最適化します.

利点

  1. 影の比率は,トレンドを正確に判断します
  2. ATRは 偽の脱出信号をフィルタリングします
  3. ストップ・ロスはリスクを管理し,利益を取ります
  4. 2: 1 リスク・リターン比は,量子取引基準を満たす
  5. 高波動性のある株式の短期取引に適しています
  6. シンプルで明快な論理,分かりやすい

リスク

  1. 価格波動はストップ・ロスを打つ可能性があり,損失を増加させる可能性があります.
  2. パラメータ調節に大きく依存する性能
  3. トレンドの逆転は損失につながる可能性があります
  4. ストップ・ロース/テイク・プロフィートの拡大は損失の確率を増加させる可能性があります.
  5. 失敗した脱出は大きな損失につながる

リスクは合理的なストップ・ロスト,パラメータ最適化,そしてタイミングでポジション終了によって管理できます.

強化

戦略は以下の方法で最適化できます.

  1. 最適値のために影比パラメータを最適化
  2. 最適なキャンドル長のためにATRパラメータを最適化
  3. 最適なリスク・リターンのためにストップ・ロスト/テイク・プロフィート係数を最適化する
  4. 徐々に位置増加のような位置サイズを追加
  5. 利益保護のために後続ストップ損失を追加する
  6. フィルター信号に他の指標を追加する
  7. バックテストの期間を最適化し,異なる市場段階をテストする

多面的なテストと最適化により 戦略のパフォーマンスは最大化できます

概して,この戦略は,トレンド識別とリスク管理を通じて短期的な価格変動から利益を得ます.最適化されると,量子取引のための強力な短期的なブレイクアウト戦略になり得ます.


/*backtest
start: 2022-11-08 00:00:00
end: 2023-11-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © ondrej17

//@version=4
strategy("longWickstrategy", overlay=true )
 
// Inputs
st_yr_inp = input(defval=2020, title='Backtest Start Year')
st_mn_inp = input(defval=01, title='Backtest Start Month')
st_dy_inp = input(defval=01, title='Backtest Start Day')
en_yr_inp = input(defval=2025, title='Backtest End Year')
en_mn_inp = input(defval=01, title='Backtest End Month')
en_dy_inp = input(defval=01, title='Backtest End Day')
sltp_inp = input(defval=0.8, title='N - % offset for N*SL and (2N)*TP')/100
 
// Dates
start = timestamp(st_yr_inp, st_mn_inp, st_dy_inp,00,00)
end = timestamp(en_yr_inp, en_mn_inp, en_dy_inp,00,00)
canTrade = time >= start and time <= end
// Indicators Setup


 
// Strategy Calcuations
lowerWick = (open > close) ? close-low : open - low
upperWick = (open > close) ? high-open : high-close
wickLength = max(lowerWick,upperWick)
candleLength = high-low
wickToCandleRatio = wickLength / candleLength
entryFilterCandleLength = candleLength > 0.75*atr(48)


// Entries and Exits
 
longCondition = entryFilterCandleLength and wickToCandleRatio > 0.5 and lowerWick > upperWick and canTrade and strategy.position_size == 0
shortCondition = entryFilterCandleLength and wickToCandleRatio > 0.5 and lowerWick < upperWick and canTrade and strategy.position_size == 0

strategy.entry("pendingLong", strategy.long, limit=low+wickLength/2, when = longCondition)
strategy.entry("pendingShort", strategy.short, limit=high-wickLength/2, when = shortCondition)

longStop = strategy.position_size > 0 ? strategy.position_avg_price*(1-sltp_inp) : na
longTP = strategy.position_size > 0 ? strategy.position_avg_price*(1+2*sltp_inp) : na
shortStop = strategy.position_size < 0 ? strategy.position_avg_price*(1+sltp_inp) : na
shortTP = strategy.position_size < 0 ? strategy.position_avg_price*(1-2*sltp_inp) : na

strategy.exit("longSLTP","pendingLong", stop=longStop, limit = longTP)
strategy.exit("shortSLTP","pendingShort", stop=shortStop, limit = shortTP)  
 

plot(longStop, color=color.red, style=plot.style_linebr, linewidth=2)
plot(shortStop, color=color.red, style=plot.style_linebr, linewidth=2)
plot(longTP, color=color.green, style=plot.style_linebr, linewidth=2)
plot(shortTP, color=color.green, style=plot.style_linebr, linewidth=2)

plotLongCondition = longCondition ? high+abs(open-close) : na
plot(plotLongCondition, style=plot.style_circles, linewidth=4, color=color.green)
plotShortCondition = shortCondition ? high+abs(open-close) : na
plot(plotShortCondition, style=plot.style_circles, linewidth=4, color=color.red)



もっと