スーパーZ量的な傾向戦略

作者: リン・ハーンチャオチャン,日付: 2023年11月27日 18:41:59
タグ:

img

概要

スーパーZ定量トレンド戦略は,定量指標に基づいたトレンド追跡戦略である.この戦略は,トレンドを決定し,追跡するためにスーパートレンド指標と組み合わせたカスタム指標を使用する.

戦略原則

この戦略の核心指標はカスタム定量指標VHMAである.VHMA指標はハル移動平均線に基づいて計算される.ハルMAを滑らかにするために平方根関数を適用することで,良い滑らかに曲線を形成する.VHMA曲線は価格傾向の方向を判断することができる.VHMAが上昇すると,価格は上昇傾向にあることを表す.落ちると,価格は下落傾向を表す.

この戦略には,スーパートレンド指標も含まれています.スーパートレンド指標は,トレンド方向を決定するのにVHMA指標を支援するために,より長いサイクル価格傾向を発見することができます.価格がスーパートレンドラインを突破すると,それはトレンド逆転を表します.

したがって,この戦略は,短期的なトレンド方向を判断するためにVHMA指標を使用し,長期的トレンドターニングポイントを決定するためにスーパートレンド指標によって助けられ,全体的なトレンドの追跡を実現します. 具体的な取引論理は,スーパートレンドラインを突破する際に取引信号を発行することです.

利点分析

この戦略には以下の利点があります.

  1. VHMA インジケーターは,強いスムーズ性があり,偽信号を減らすことができます. 傾向の方向を正確に信頼して判断できます.

  2. スーパートレンド指標と組み合わせると,長期的トレンド逆転を迅速に発見し,買い物と販売のタイミングを把握できます.

  3. 異なる色の固体K線と空洞のK線を使用して,閉値と開値のサイズ関係を描画し,傾向を判断するのに役立つ視覚指標を形成します.

  4. 複数のタイムフレームの設計を採用し,上級タイムフレームのトレンド方向を決定し,効率的なフィルタリングを達成するために下級タイムフレームで取引シグナルを発行する.

  5. 戦略パラメータは安定性のために最適化され,様々な市場環境に適しています.

リスク分析

この戦略には次のリスクもあります

  1. 定量指標はバックテスト効果があり,実際の効果はバックテストよりも弱くなります.

  2. スーパートレンド指標のパラメータを正しく設定しない場合,取引機会を逃したり,不要な取引をしたりする可能性があります.

  3. 複数のタイムフレームの設計は,実際の取引条件でも失敗する可能性があります.

対策:

  1. バックテスト効果を減らすため,滑り設定を増加させ,パラメータを最適化します.

  2. スーパートレンド指標のパラメータを調整し,パラメータ設定を最適化します.

  3. 複数のタイムフレームのマッチング方法をテストし,複数のタイムフレームの安定性を確保する.

最適化方向

戦略は以下の側面で最適化できます.

  1. VHMA指標を替えるために異なる滑らかな移動平均指標を試験する.

  2. スーパートレンドインジケーターを代替するために異なるトレンドインジケーターを試す.

  3. 機械学習モデルの訓練指標のパラメータを増やす.

これらの最適化措置は,複雑な市場状況に適応する戦略の適応性を向上させることができます.

概要

スーパーZ定量トレンド戦略は,スーパートレンド指標と組み合わせたカスタムトレンド指標VHMAを通じて価格トレンドの判断と追跡を実現する.この戦略は良好な安定性と優れた実際の効果を持っています.継続的なテストと最適化により,この戦略は効率的で安定した定量トレンド追跡戦略になる可能性があります.


/*backtest
start: 2022-11-20 00:00:00
end: 2023-11-26 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/
//Original script
//https://www.tradingview.com/script/wYknDlLx-super-Z/

//@version=4
strategy("Super Z strategy - Thanks to Rafael Zioni", shorttitle="Super Z strategy",overlay=true )
src5 = input(close)
    
tf = input(1440)
len5 = timeframe.isintraday and timeframe.multiplier >= 1 ? 
   tf / timeframe.multiplier * 7 : 
   timeframe.isintraday and timeframe.multiplier < 60 ? 
   60 / timeframe.multiplier * 24 * 7 : 7

ma = ema(src5*volume, len5) / ema(volume, len5)


//script taken from https://www.tradingview.com/script/kChCRRZI-Hull-Moving-Average/

src1 = ma

p(src1, len5) =>
    n = 0.0
    s = 0.0
    for i = 0 to len5 - 1
        w = (len5 - i) * len5
        n := n + w
        s := s + src5[i] * w
    s / n

hm = 2.0 * p(src1, floor(len5 / 2)) - p(src1, len5)
vhma = p(hm, floor(sqrt(len5)))
lineColor = vhma > vhma[1] ? color.lime : color.red
plot(vhma, title="VHMA", color=lineColor ,linewidth=3)
hColor = true,vis = true
hu = hColor ? (vhma > vhma[2] ? #00ff00 : #ff0000) : #ff9800

vl = vhma[0]
ll = vhma[1]
m1 = plot(vl, color=hu, linewidth=1, transp=60)
m2 = plot(vis ? ll : na,  color=hu, linewidth=2, transp=80)

fill(m1, m2,  color=hu, transp=70)
//

b = timeframe.isintraday and timeframe.multiplier >= 1 ? 
   60 / timeframe.multiplier * 7 : 
   timeframe.isintraday and timeframe.multiplier < 60 ? 
   60 / timeframe.multiplier * 24 * 7 : 7



//
res5 = input("D", type=input.resolution)

o = security(syminfo.tickerid, res5, open, barmerge.gaps_off, barmerge.lookahead_on)
c = security(syminfo.tickerid, res5, close, barmerge.gaps_off, barmerge.lookahead_on)
hz = security(syminfo.tickerid, res5, high, barmerge.gaps_off, barmerge.lookahead_on)
l = security(syminfo.tickerid, res5, low, barmerge.gaps_off, barmerge.lookahead_on)



col = c >= o ? color.lime : color.red

ppo = plot(b ? o >= c ? hz : l : o, color=col, title="Open", style=plot.style_stepline, transp=100)
ppc = plot(b ? o <= c ? hz : l : c, color=col, title="Close", style=plot.style_stepline, transp=100)

plot(b and hz > c ? hz : na, color=col, title="High", style=plot.style_circles, linewidth=2,transp=60)
plot(b and l < c ? l : na, color=col, title="Low", style=plot.style_circles,linewidth=2, transp=60)

fill(ppo, ppc, col)

//
// INPUTS //
st_mult   = input(1,   title = 'SuperTrend Multiplier', minval = 0, maxval = 100, step = 0.01)
st_period = input(50, title = 'SuperTrend Period',     minval = 1)

// CALCULATIONS //
up_lev =l - (st_mult * atr(st_period))
dn_lev = hz + (st_mult * atr(st_period))

up_trend   = 0.0
up_trend   := c[1] > up_trend[1]   ? max(up_lev, up_trend[1])   : up_lev

down_trend = 0.0
down_trend := c[1] < down_trend[1] ? min(dn_lev, down_trend[1]) : dn_lev

// Calculate trend var
trend = 0
trend := c > down_trend[1] ? 1: c < up_trend[1] ? -1 : nz(trend[1], 1)

// Calculate SuperTrend Line
st_line = trend ==1 ? up_trend : down_trend

// Plotting
//plot(st_line[1], color = trend == 1 ? color.green : color.red , style = plot.style_cross, linewidth = 2, title = "SuperTrend")
buy=crossover( c, st_line)
sell=crossunder(c, st_line)
signal=input(false)

/////////////// Plotting /////////////// 
plotshape(signal and buy, style=shape.triangleup, size=size.normal, location=location.belowbar, color=color.lime)
plotshape(signal and sell, style=shape.triangledown, size=size.normal, location=location.abovebar, color=color.red)


if (buy)
    strategy.entry("My Long Entry Id", strategy.long)

if (sell)
    strategy.entry("My Short Entry Id", strategy.short)

もっと