ウィリアムズ二重指数移動平均と一目均衡表戦略


作成日: 2024-02-18 16:20:12 最終変更日: 2024-02-18 16:20:12
コピー: 1 クリック数: 559
1
フォロー
1617
フォロワー

ウィリアムズ二重指数移動平均と一目均衡表戦略

概要

この戦略は,ウィリアム双指数移動平均と一目均衡図の2つの技術指標を組み合わせて,それぞれの優位性を発揮し,取引決定の正確性を向上させる.その中,ウィリアム双指数移動平均は価格変化のトレンドを十分に反映し,一目均衡図は,トレンドの逆転を予期的に判断することができる.

原則

ウィリアムズ二指数移動平均は,快線と慢線を構成する.快線計算の公式は:2 (n/2周期加重移動平均) で,慢線計算の公式は:n周期加重移動平均である.快線が下方向から慢線を突破すると,買入信号;上方向から下方向に突破すると,売出信号である.

一目平衡図は,交替線,基準線,先行線,雲図の4つの構成部分で構成されている。その中,交替線と基準線の黄金の交差は買取信号であり,死の交差は売出信号である。価格突破雲図の上沿は買取信号であり,下破雲図下沿は売出信号である。

この戦略は,2つの指標の優位性を組み合わせ,第1重判定はウィリアム指標に信号を発信し,第2重判定は一目平衡図指標に確認し,偽信号を効果的にフィルターし,意思決定の正確性を向上させる.

利点

  1. ウィリアムズ双指数移動平均は,より強いトレンドの方向を特定するために,反応に敏感である.
  2. 一目で平衡図を見れば先行する傾向が逆転する事を知ることができる.
  3. この2つの指標を組み合わせると,偽信号を減らすことができます.
  4. パラメータを最適化することで,異なる周期と品種に適応できる.

リスクと最適化

  1. 非トレンド市場では頻繁にシグナルが生じることがあります.パラメータを適切に調整し,一部のシグナルをフィルターすることができます.
  2. 快線と慢線交差の過程で,一定の遅延が発生する. 雲図と組み合わせて判断し,最適な買取りポイントを逃さないようにする.
  3. トレンド指数または波動指数との組み合わせを使用することが推奨され,偽信号をさらに回避できます.

要約する

この戦略は,トレンドの方向を判断するウィリアム指数と,一目でバランスチャートを事前に見回す優位性を充分活用し,取引決定の正確性を大幅に向上させることができる.パラメータを調整し,他の指標を組み合わせることで,持続可能な最適化戦略を,市場の変化により適応させることができる.

ストラテジーソースコード
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3

strategy("Hull MA-X + Ichimoku Kinko Hyo", shorttitle="Hi", overlay=true, default_qty_type=strategy.percent_of_equity, max_bars_back=1000, default_qty_value=100, calc_on_order_fills= true, calc_on_every_tick=true, pyramiding=0)

keh=input(title="Double HullMA",defval=12, minval=1)
n2ma=2*wma(close,round(keh/2))
nma=wma(close,keh)
diff=n2ma-nma
sqn=round(sqrt(keh))
n2ma1=2*wma(close[1],round(keh/2))
nma1=wma(close[1],keh)
diff1=n2ma1-nma1
sqn1=round(sqrt(keh))
n1=wma(diff,sqn)
n2=wma(diff1,sqn)
b=n1>n2?lime:red
c=n1>n2?green:red
d=n1>n2?red:green

TenkanSenPeriods = input(9, minval=1, title="Tenkan Sen Periods")
KijunSenPeriods = input(24, minval=1, title="Kijun Sen Periods")
SenkouSpanBPeriods = input(51, minval=1, title="Senkou Span B Periods")
displacement = input(24, minval=1, title="Displacement")
donchian(len) => avg(lowest(len), highest(len))
TenkanSen = donchian(TenkanSenPeriods)
KijunSen = donchian(KijunSenPeriods)
SenkouSpanA = avg(TenkanSen, KijunSen)
SenkouSpanB = donchian(SenkouSpanBPeriods)
SenkouSpanH = max(SenkouSpanA[displacement - 1], SenkouSpanB[displacement - 1])
SenkouSpanL = min(SenkouSpanA[displacement - 1], SenkouSpanB[displacement - 1])
ChikouSpan = close[displacement-1]

Hullfast=plot(n1,color=c)
Hullslow=plot(n2,color=c)
plot(cross(n1, n2) ? n1:na, style = circles, color=b, linewidth = 4)
plot(cross(n1, n2) ? n1:na, style = line, color=d, linewidth = 3)
plot(TenkanSen, color=blue, title="Tenkan Sen", linewidth = 2)
plot(KijunSen, color=maroon, title="Kijun Sen", linewidth = 3)
plot(close, offset = -displacement, color=orange, title="Chikou Span", linewidth = 2)
sa=plot (SenkouSpanA, offset = displacement, color=green,  title="Senkou Span A", linewidth = 2)
sb=plot (SenkouSpanB, offset = displacement, color=red,  title="Senkou Span B", linewidth = 3)
fill(sa, sb, color = SenkouSpanA > SenkouSpanB ? green : red)

longCondition = n1>n2 and close>n2 and close>ChikouSpan and close>SenkouSpanH and (TenkanSen>KijunSen or close>KijunSen)
if (longCondition)
    strategy.entry("Long",strategy.long)

shortCondition = n1<n2 and close<n2 and close<ChikouSpan and close<SenkouSpanL and (TenkanSen<KijunSen or close<KijunSen)
if (shortCondition)
    strategy.entry("Short",strategy.short)

closelong = n1<n2 and close<n2 and (TenkanSen<KijunSen or close<TenkanSen or close<KijunSen or close<SenkouSpanL)
if (closelong)
    strategy.close("Long")

closeshort = n1>n2 and close>n2 and (TenkanSen>KijunSen or close>TenkanSen or close>KijunSen or close>SenkouSpanH)
if (closeshort)
    strategy.close("Short")