
この戦略は,ブリン帯とハル指標の交差によって取引信号を生成する.ハル指標でブリン帯を横切るときは多し,ハル指標の下でブリン帯を横切るときは空にする.この戦略は,ブリン帯の突破戦略とハル指標のトレンド追跡戦略を組み合わせて,その両者の優位性を利用する.
この戦略は主にブリン帯とハル指標の交差を基に取引信号を生成する.
まず,ブリン帯は3つの線で構成される: 中軌道線,上軌道線,下軌道線。 中軌道線はn日移動平均で,上軌道線は中軌道線上下それぞれに標準差を加える。価格が上軌を突破すると,突破の機会がある;価格が下軌を突破すると,回調の機会がある。
第二に,ヒル指標は,トレンドを追跡する指標である.それは,二つの異なる周期の加重移動平均の間の差値を利用して,現在の動きを判断する.短期平均が長期平均より高い場合は多頭向上,逆は空頭下である.
この戦略は,この2つの指標を組み合わせる優位性である. ハル指標でブリン帯を突破したときに,株価がトレンドの上昇段階に入ると考えられ,多額の投資を行う. ハル指標でブリン帯を突破したときに,株価が逆転段階に入ると考えられ,空きをする.
ブリン・バンドとハル・インデクタの優位性を組み合わせて,取引信号をより信頼性のあるものにする.
ハル指数はトレンドの方向を判断し,ブリン帯は抵抗の位置を判断し,交差信号を形成し,利益の確率を高めることができる.
ブリン帯とヒル指標のパラメータを調整することで,異なる周期の株式に対して最適化することができ,適用面がより広範囲である.
株価が横横整理しているときに,この戦略は,より多くの偽信号を生じ,損失をもたらします.パラメータを最適化したり,フィルタリング条件を追加することによって偽信号を減らすことができます.
株価が急激に波動すると,ブリン帯とヘル指標は同時に取引信号を発信する可能性がある.信号順序性を確保し,交差信号判断誤りを避ける必要がある.損失を制御するためにストップを追加することを考慮することができる.
コードで直接開仓数量を100%に設定している.実際の展開時には,仓位管理を調整する必要がある.全仓を開仓できない,損失拡大につながる可能性がある.
ブリン帯とヒル指標のパラメータをテストして,より周期的な株に適応させることができる.
取引量や波動率を増加させるフィルターで,整理時に誤った信号を回避する.
ストップ戦略を最適化して,移動ストップまたはワンストップを設定します.
ポジション管理のルールを調整し,損失拡大を防ぐために,再入場条件を追加する.
この戦略は,ブリン帯の突破戦略とハル指標のトレンド追跡戦略を総合的に利用し,両者の交叉によって取引信号を形成し,トレンド追跡と突破の双重効果を実現する.この戦略は,基本面に重大な変化が起こらない前提で,中短線株に対して強い適応性を有する.しかし,実際の展開では,株の特徴に合わせてパラメータを最適化し,ポジション管理,ストップダスト戦略などを適切に調整し,戦略をより堅牢にする必要がある.
/*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)