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

Hull 移動平均値による多期ボリンガー・モメンタム・ブレイクアウト戦略

作者: リン・ハーンチャオチャン開催日:2024年11月29日17時00分
タグ:VWMAHMABBMTFについてRSI

img

概要

この戦略は,複数のタイムフレーム分析に基づいた取引システムで,取引シグナルを生成するためにボリンジャーバンド,ハル移動平均,重量移動平均を組み合わせます.この戦略は,主に5分,1時間,3時間の市場データを統合しながら,1時間のタイムフレームで動作します.複数の技術指標を使用して取引機会を確認し,ダイナミックなストップ・ロストとテイク・プロフィートメカニズムを実装し,効果的なリスク管理のために口座資本に基づいてポジションサイズを自動的に調整します.

戦略の原則

基本論理は,複数の技術指標の相互確認に基づいている.この戦略は,5分VWMA,1時間VWMA,3時間のHMAを含む複数のタイムフレームでさまざまな移動平均値との価格関係を監視する.価格がすべてのタイムフレーム指標よりも上値を超えると長信号が生成される.逆に,価格がすべての指標よりも下値を超えると短信号が発生する.この戦略はダイナミックなエントリーと出口の値設定のための偏差計算を組み込み,取引柔軟性を高める.

戦略 の 利点

  1. 複数のタイムフレーム分析は,偽のブレイクリスクを軽減し,信号の信頼性を向上させる
  2. ダイナミックストップ・ロースとテイク・プロフィートの設定は,異なる市場状況に適応する
  3. 口座資本に基づくポジションサイズ化により,合理的な資本利用が確保される.
  4. 複数の脱出メカニズムは戦略の適応性を提供します
  5. 分析のための明確な取引信号の可視化を提供するグラフィックインターフェース
  6. 複数の成熟した技術指標を統合することで,取引決定の正確性が向上します

戦略リスク

  1. 複数の指標が遅れた取引信号を引き起こす可能性があります.
  2. 異なる市場で頻繁に誤ったブレイクが起こり得る
  3. 固定ストップ・ロースとテイク・プロフィート比は,すべての市場条件に適合しない可能性があります.
  4. 複数のタイムフレームのデータ処理は戦略の複雑さを高める可能性があります
  5. 不安定な市場における高リスク

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

  1. ダイナミックストップ・ロース・テイク・プロフィート調整のための変動指標を導入する
  2. パラメータ調整のための市場状況認識を追加する
  3. 誤ったブレイク損失を減らすために信号フィルタリングを最適化
  4. ブレイク信号の信頼性を向上させるためにボリューム分析を組み込む
  5. 安定性を高めるための適応性パラメータ最適化メカニズムを開発する

概要

この戦略は,マルチタイムフレーム分析と複数の技術指標を通じて比較的完全な取引システムを構築する.その強みは信号信頼性と効果的なリスク管理にあるが,信号遅延とパラメータ最適化との課題に直面している.継続的な改善と最適化により,戦略はさまざまな市場条件で安定したパフォーマンスを維持する可能性を示している.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-28 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("1H- 280, 2.7", overlay=true)


// Fetch the indicator values from different timeframes
vwma5 = request.security(syminfo.tickerid, "5", ta.wma(close, 233), lookahead = barmerge.lookahead_off)
vwma_hourly = request.security(syminfo.tickerid, "60", ta.wma(close, 89), lookahead = barmerge.lookahead_off)
hullma155_3h = request.security(syminfo.tickerid, "180", ta.hma(close, 155), lookahead = barmerge.lookahead_off)


// Calculate the deviation value
deviation = close * 0.032


// Initialize the signal variables
var float signalLine = na
var color lineColor = na


// Long Entry Conditions
longCondition_5min = close > vwma5
longCondition_hourly = close > vwma_hourly
longCondition_3h = close > hullma155_3h


// Short Entry Conditions
shortCondition_5min = close < vwma5
shortCondition_hourly = close < vwma_hourly
shortCondition_3h = close < hullma155_3h


// Long Entry
if longCondition_5min and longCondition_hourly and longCondition_3h
    signalLine := close + deviation
    lineColor := color.rgb(0, 255, 0, 1)


// Short Entry
if shortCondition_5min and shortCondition_hourly and shortCondition_3h
    signalLine := close - deviation
    lineColor := color.rgb(255, 0, 0, 1)


// Plotting the connecting line
plot(signalLine, title="Signal Line", color=lineColor, linewidth=1, style=plot.style_line)


// Colorize the signal line
bgcolor(signalLine > close ? color.rgb(0, 255, 0, 99) : color.rgb(255, 0, 0, 99), transp=90)



// Strategy settings
useTPSL = input(true, "Use TP/SL for closing long positions?")
useDownbreakOutbreak = input(false, "Use Downbreak and Outbreak for closing positions?")
useM7FClosing = input(false, "Use M7F Signal for closing positions?")


length1 = input.int(280, minval=1)
src = input(close, title="Source")
mult = input.float(2.7, minval=0.001, maxval=50, title="StdDev")


basis = ta.vwma(src, length1)
dev = mult * ta.stdev(src, length1)
upper = basis + dev
lower = basis - dev


offset = input.int(0, "Offset", minval = -500, maxval = 500)


length2 = input.int(55, minval=1)
src2 = input(close, title="Source")
hullma = ta.wma(2 * ta.wma(src2, length2 / 2) - ta.wma(src2, length2), math.floor(math.sqrt(length2)))


hullmacrosslower = ta.crossover(hullma, lower)
hullmacrossupper = ta.crossunder(hullma, upper)


breakout = ta.crossover(ohlc4, upper)
breakdown = ta.crossunder(ohlc4, upper)
outbreak = ta.crossover(ohlc4, lower)
downbreak = ta.crossunder(ohlc4, lower)


// Calculate position size and leverage
margin_pct = 1
leverage = 1
position_size = strategy.equity * margin_pct
qty = position_size / close / leverage


// Define take profit and stop loss levels
take_profit = 0.14
stop_loss = 0.06


// Opening a long position
if breakout
    strategy.entry("Long", strategy.long, qty, limit=close*(1+take_profit), stop=close*(1-stop_loss))


// Opening a short position
if downbreak
    strategy.entry("Short", strategy.short, qty, limit=close*(1-take_profit), stop=close*(1+stop_loss))


// Closing positions based on chosen method
if useTPSL
    // Using TP/SL for closing long positions
    if strategy.position_size > 0 and breakdown
        strategy.close("Long", comment="Breakdown")
else if useDownbreakOutbreak
    // Using Downbreak and Outbreak for closing positions
    if strategy.position_size > 0 and (breakdown or downbreak)
        strategy.close("Long", comment="Breakdown")
    if strategy.position_size < 0 and (outbreak or downbreak)
        strategy.close("Short", comment="Outbreak")
else if useM7FClosing
    // Using M7F Signal for closing positions
    if strategy.position_size > 0 and (signalLine < close)
        strategy.close("Long", comment="M7F Signal")
    if strategy.position_size < 0 and (signalLine > close)
        strategy.close("Short", comment="M7F Signal")


// Plotting entry signals
plotshape(hullmacrosslower, title="High Bear Volatility", style=shape.arrowup, text="^^^^^", color=color.rgb(75, 202, 79), location=location.belowbar)
plotshape(hullmacrossupper, title="High Bull Volatility", style=shape.arrowdown, text="-----", color=color.rgb(215, 72, 72), location=location.abovebar)
plotshape(breakout ? 1 : na, title="Breakout", style=shape.arrowup, text="", color=color.rgb(75, 202, 79), location=location.belowbar, size=size.tiny)
plotshape(breakdown ? 1 : na, title="Breakdown", style=shape.arrowdown, text="", color=color.rgb(201, 71, 71), location=location.abovebar, size=size.tiny)
plotshape(outbreak ? 1 : na, title="Outbreak", style=shape.arrowup, text="", color=color.rgb(0, 110, 255), location=location.belowbar, size=size.tiny)
plotshape(downbreak ? 1 : na, title="Downbreak", style=shape.arrowdown, text="", color=color.rgb(255, 111, 0), location=location.abovebar, size=size.tiny)


関連性

もっと