ボリンジャー帯とハル指標の交差戦略

作者: リン・ハーンチャオチャン, 日時: 2023-12-08 11:58:07
タグ:

img

概要

この戦略は,ボリンジャーバンドとハル指標のクロスオーバーに基づいて取引信号を生成する.ハル指標がボリンジャーバンドの下部帯を横切ると長くなって,ハル指標がボリンジャーバンド上部帯を下部帯を横切ると短くなります.この戦略は,ボリンジャーバンドのブレイクアウト戦略とハル指標のトレンドフォロー戦略を組み合わせて,両方の利点を利用します.

原則

この戦略は,主にボリンジャーバンドとハル指標のクロスオーバーを使用して取引信号を生成します.

ボリンジャー帯は,中間線,上線,下線という3つの線で構成される.中間線はN日移動平均線であり,上線と下線は中間線 ±標準偏差である.価格が上線を突破した場合,突破機会を示し,価格が下線を突破した場合,コールバック機会を示します.

ハル指標は,トレンドフォローする指標である.現在のトレンドを決定するために,異なる期間の2つの重量化された移動平均値の違いを使用する.短期の移動平均値が長期平均値よりも高くなった場合,上昇傾向を示し,その逆である.

この戦略は,両方の指標の強みを組み合わせている.ハル指標がボリンジャーバンドの下部帯を超えると,株価が上昇傾向に入ると考えられる.ハル指標が上部帯を下回ると,株価がダウンコールバックに入ると考えられる.

利点

  1. ボリンジャー・バンドとハル・インジケーターの強みを組み合わせて,取引信号をより信頼性のあるものにします.

  2. 傾向の方向を決定するためにハル指標と,サポート/レジスタンスレベルを決定するためにボリンジャーバンドを使用し,収益性を向上させるクロスオーバー信号を生成します.

  3. この2つの指標のパラメータは,適用性を拡大するために,異なる周期のストックに最適化できます.

リスク と 解決策

  1. この戦略は,範囲限定の動きの間により多くの誤った信号を生成し,損失を引き起こす可能性があります.パラメータを最適化したり,誤った信号を減らすためにフィルターを追加することもできます.

  2. 価格が激しく変動し,両方のインジケーターが同時に信号を発信する可能性があります. 誤ったクロスオーバー信号判断を避けるために信号配列を確保してください. 制御損失にストップ損失を追加することを検討してください.

  3. 戦略はポジションサイズを直接100%に設定する.実際の展開では,ポジションの完全開設による拡大損失を避けるためにポジションサイズを調整する必要があります.

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

  1. 両指標のパラメータをテストし最適化し,より多くのストックサイクルに適応します.

  2. 取引量や波動性などのフィルターを追加して 統合中に誤った信号を回避します

  3. ストップ・ロスの戦略を最適化するために,ストップ・ロスの遅れまたはストップ・リミット・オーダーを設定します.

  4. 損失拡大を避けるため,再入力条件を追加して位置サイズ化規則を調整する.

結論

この戦略は,トレンドフォローとブレークアウト効果の両方を達成するために,トレンドフォローとハル指標のトレンドフォロー戦略を組み合わせ,両間のクロスオーバー信号を使用する.この戦略は,大きな根本的な変化がないことから,中期および短期間の株式に強い適応性を有する.しかし,パラメータ,ポジションサイズ,ストップ損失戦略は,戦略をより堅牢にするために実際の展開中に最適化する必要があります.


/*backtest
start: 2023-11-30 00:00:00
end: 2023-12-07 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


//@version=3
strategy(title="Strategy Hull Bollinger", shorttitle="Hull bollinger",overlay=true, calc_on_order_fills=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, overlay=false)

n=input(title="period",defval=3)


n2ma=2*wma(close,round(n/2))
nma=wma(close,n)
diff=n2ma-nma
sqn=round(sqrt(n))


n2ma1=2*wma(close[1],round(n/2))
nma1=wma(close[1],n)
diff1=n2ma1-nma1
sqn1=round(sqrt(n))


n1=wma(diff,sqn)
n2=wma(diff1,sqn)
c=n1>n2?green:red

i = input(1)
PP = close[i]

length1 = input(20, minval=1)
src = input(close, title="Source")
mult = input(2.0, minval=0.001, maxval=10, step=0.2)
basis = sma(src, length1)
dev = mult * stdev(src, length1)
upper = basis + dev
lower = basis - dev


TP = input(500) * 10
SL = input(500) * 10
TS = input(20) * 10
TO = input(10) * 10
CQ = 100

TPP = (TP > 0) ? TP : na
SLP = (SL > 0) ? SL : na
TSP = (TS > 0) ? TS : na
TOP = (TO > 0) ? TO : na

longCondition = crossover(n1,lower)
if (longCondition)
    strategy.entry("Long", strategy.long)


shortCondition = crossunder(n1,upper)
if (shortCondition)
    strategy.entry("Short", strategy.short)

strategy.exit("Close Short", "Short", qty_percent=CQ, profit=TPP, loss=SLP, trail_points=TSP, trail_offset=TOP)
strategy.exit("Close Long", "Long", qty_percent=CQ, profit=TPP, loss=SLP, trail_points=TSP, trail_offset=TOP)

もっと