この戦略は,市場トレンドの方向性を決定するためにボリンジャーバンドを使用し,トレンド追跡取引を実施するためにモメンタム指標を組み合わせます. 戦略名の中の
戦略は主に3つの部分に分けられる.
ボリンジャーバンドの方向を判断する. ボリンジャーバンドの中間レールは移動平均を表し,上下レールは変動幅を表します. 上部レールに近い価格ではオーバーバイドです. 下部レールに近い価格ではオーバーセールです. ボリンジャーバンドの方向は価格トレンドの方向を表します.
勢いを計算する.この戦略はハルモメントを使用する.ハルモメントは,速い移動平均をマイナス遅い移動平均から導かれる.正の値は上昇傾向を表し,負の値は低下傾向を表します.
クロスオーバー信号.高速移動平均が下からゆっくり移動平均を上へと移動すると,長い信号が生成される.上から下へと移動すると,短い信号が生成される.
取引規則は,ボリンジャーバンドの方向は主要なトレンドを表し,モメンタムインジケーターのクロスオーバーは市場に参入するタイミングを表します.モメンタムクロスオーバーがボリンジャーバンドの方向と一致するときに取引信号が生成されます.つまり,ボリンジャーバンドが代表するトレンド方向を追跡します.
トレンドとモメンタムを組み合わせて偽の突破を避ける.大規模なトレンドを判断するためにボリンジャー帯を採用し,その後モメンタム指標を使用して特定のエントリーポイントを決定し,地元の突破を追求するフォーマットリスクを回避する.
リスク管理が良く ボリンガー帯はストップ・ロスのポイントを シンプルな移動平均よりも有効にします
より効率的なトレンドトラッキング.モメントインジケーターは,市場に入ってから元の方向に価格を押し続けるのに十分な力を確保し,トレンドトラッキングをスムーズにすることができます.
Bollinger Bands の決定失敗のリスク.Bollinger Bands は常に完全に正確にはトレンドを決定しないため,方向信号を誤って提供し,損失率を増加させる可能性があります.
傾向の逆転のリスク.ボリンガー帯が大規模な傾向を正しく反映しても,中期および短期的に価格が逆転する可能性があり,取引時に注意する必要があります.
パラメータ最適化のリスク. 最良の取引効果を達成するために,計算サイクルなどの戦略パラメータは,異なる市場データに最適化する必要があります.
さらにインディケーターのフィルタを組み合わせます.ボリンジャーバンドとハルモメントに加えて,MACDやKDJなどの他のインディケーターが追加され,判断の精度を向上させるインディケーターのフィルタを形成できます.
適応性パラメータ最適化. 戦略の安定性を向上させるために,異なる品種と市場環境に応じてリアルタイムでパラメータを最適化するために機械学習アルゴリズムに参加します.
ストップ・ロスの戦略の最適化.主要なトレンドが変化する前にロック利益を最大化するためにストップ・ロスの戦略を最適化し,トレンドが逆転すると最速にストップ・ロスをします.
この戦略は,大規模なトレンドを決定するためにボリンジャーバンドと,特定のエントリーポイントを決定するためにハルモントム指標を統合し,効果的にトレンドを追跡する.同時に,より多くの指標フィルターを追加し,適応パラメータ最適化,ストップロスの戦略の最適化など,安定性と収益性を向上させるために改善の余地があります.
/*backtest start: 2024-01-26 00:00:00 end: 2024-02-25 00:00:00 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // Hull Moving Average Crossover by SeaSide420 strategy("Hull Moving Average Crossover Strategy", overlay=true) keh=input(title="HullMA cross",defval=10) p=input(ohlc4) n2ma=2*ta.wma(p,math.round(keh/2)) nma=ta.wma(p,keh) diff=n2ma-nma sqn=math.round(math.sqrt(keh)) n2ma1=2*ta.wma(p[1],math.round(keh/2)) nma1=ta.wma(p[1],keh) diff1=n2ma1-nma1 sqn1=math.round(math.sqrt(keh)) n1=ta.wma(diff,sqn) n2=ta.wma(diff1,sqn) hullcross1 = n1 hullcross2 = n2 longcross1=(n1[0]-n1[3])+(n1[0]-n2[4])*100 longcross2=(n2[0]-n2[3])+(n2[0]-n1[4])*100 closelong = n1<n2 and longcross1<longcross2 if (closelong) strategy.close("Long") closeshort = n1>n2 and longcross1>longcross2 if (closeshort) strategy.close("Short") longCondition = n1>n2 and longcross1>longcross2 and strategy.opentrades<1 if (longCondition) strategy.entry("Long",strategy.long) shortCondition = n1<n2 and longcross1<longcross2 and strategy.opentrades<1 if (shortCondition) strategy.entry("Short",strategy.short) b=hullcross1>hullcross2?color.green:color.red c=hullcross2>hullcross1?color.green:color.red plot(ta.cross(hullcross1, hullcross2) ? hullcross1 : na,color=c, linewidth = 5, offset=3) barcolor(longcross1 < longcross2 ? color.black : color.white) bgcolor(longcross2 < longcross1 ? color.green : color.black, transp=85) plotshape(ta.cross(longcross2, longcross1) ? longcross2 : na, text="X", style=shape.labeldown, location=location.bottom)