この戦略は"モメンタムトレンド"と名付けられている.この戦略は,MACDインジケーターとボリンジャーバンドの利点を組み合わせてトレンド追跡戦略を実装する.この戦略は,MACDの速いラインとスローラインを使用してボリンジャーバンドを構築する.ボリンジャーバンドの中間線はMACD信号ラインである.価格はボリンジャーバンドの上部レールを破ると短く,価格がボリンジャーバンドの下部レールを破ると長くなります.中長期トレンドを追跡するために市場に参入する前にボリンジャーバンドの中間線をテストするために引き下げを待つ.
この戦略のコアインジケーターはMACDとボリンジャーバンドである.MACDインジケーターは,高速線,スローライン,MACDヒストグラムで構成されている.高速線は通常12日間のEMAであり,スローラインは26日間のEMAである.その間の違いはMACDヒストグラムである.この戦略は,高速線とスローラインの違いをボリンジャーバンドのベースミドルラインとして使用する.上下線はミドルラインの周りに設定され,ボリンジャーバンドを構成する.
価格がボリンジャーバンドの下部レールを上向きに突破すると購入信号が生成される.価格がボリンジャーバンドの上部レールを下向きに突破すると販売信号が生成される. 罠にかかり,逆転機会を逃すリスクを軽減するために,この戦略はブレイク後にすぐに市場に参入しない.代わりに,入る前にボリンジャーバンドの中間線をテストするために引き下げを待つ.
さらに,上下レールはそれぞれレジスタンスとサポートとして使用することができる.価格が上昇すると,上下レールはレジスタンスであり,下下レールはサポートである.価格が下がると,上下レールはサポートになり,下下レールはレジスタンスとなる.
この戦略は,MACDとボリンジャー帯の優位性を組み合わせて,トレンド追跡を実現し,以下の強みを持っています.
MACDには強いトレンド判断能力がある.ボリンジャー帯は適応的に調整することができる.組み合わせはトレンド逆転点を効果的に決定することができる.
引き戻しエントリは,ストップ損失リスクを効果的に回避し,中長期の傾向を追跡することができます.
ボリンジャー帯のレジスタンスとサポートを利用すれば 利益がさらに確保できます
MACDとボリンジャー帯のパラメータは,異なる市場環境に合わせて柔軟に調整できます.
この戦略には注意すべきリスクもあります.
振動する傾向では,MACDとボリンジャー帯は複数の無効信号を生成することがあります.大きな損失を避けるために,ポジションサイズを減らす必要があります.
ストップ・ロスは,リトルバックの開始時に設定され,リトルバックが過度に深ければ損失が拡大しないようにする必要があります.
ボリンジャー・バンドのパラメータは 市場の波動性に基づいて調整する必要があります. パラメータの設定が正しくない場合, 誤ったブレイクの可能性が増加します.
リスク管理とポジションのサイズ管理は,この戦略の利益維持の鍵です. 戦略信号だけに頼ると,全体的なリスクが無視される傾向があります.
戦略は,次の側面でも最適化できます.
MACD パラメータを 8 日間の高速線と 20 日間の遅い線に最適化.指標の感度を向上させるために異なる製品とタイムフレームに基づいて調整する.
上下トレンド判断を加え,ボリンジャーバンドのパラメータを最適化し,振動する市場における誤った信号を減らす.
ストップ・ロスの戦略を追加します.リスクを制御するためにボリンジャー・バンドの上部と下部レールでストップ・ロスのラインを設定します.
戦略の安定性を高めるため,他の指標を検証する.
MACDとボリンジャーバンドをベースとしたモメンタムトレンド戦略は,指標コンボを通じて中長期のトレンドを追跡し,リスクを減らすために引き下げをします.パラメータ設定を最適化し,リスクを制御します.トレンド製品ではうまく機能します.しかし,戦略は完璧ではありません.常に変化する市場環境に適応するために,複数の視点から最適化と改善を続けなければなりません.
/*backtest start: 2023-02-22 00:00:00 end: 2024-02-28 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //Simple strategy based on MACD and Bollinger Bands, where BBs are calculatend from macd signal. strategy("Strategy MACD vs BB", overlay=false) fast_length = input(title="Fast MA period", type=input.integer, defval=8) slow_length = input(title="Slow MA period", type=input.integer, defval=21) src = input(close,"Source") // ----------MA calculation - ChartArt------------- smoothinput = input(1, minval=1, maxval=4, title='Moving Average Calculation: (1 = SMA), (2 = EMA), (3 = WMA), (4 = Linear)') fast_ma = smoothinput == 1 ? sma(src, fast_length):smoothinput == 2 ? ema(src, fast_length):smoothinput == 3 ? wma(src, fast_length):smoothinput == 4 ? linreg(src, fast_length,0):na slow_ma = smoothinput == 1 ? sma(src, slow_length):smoothinput == 2 ? ema(src, slow_length):smoothinput == 3 ? wma(src, slow_length):smoothinput == 4 ? linreg(src, slow_length,0):na //---------------------------------------------- macd = fast_ma - slow_ma p1=plot(macd,"macd signal",color=color.blue) length = input(40, minval=1) mult = input(2.0,"BB multiplier") basis = sma(macd, length) dev = mult * stdev(macd, length) plot(basis,"BB basis",color=color.orange) upper = basis + dev lower = basis - dev p2=plot(upper,"BB upper",color=color.red) p3=plot(lower,"BB basis",color=color.green) longCondition = crossover(macd, lower) shortCondition = crossunder(macd, upper) plotshape(longCondition?lower:na, title="Long", style=shape.xcross, location=location.absolute, text="Long", color=color.green, transp=0, size=size.tiny) plotshape(shortCondition?upper:na, title="Short", style=shape.xcross, location=location.absolute, text="Short", color=color.red, transp=0, size=size.tiny) fill(p1,p3,color=macd<lower?color.green:na,transp=90,title="support") fill(p1,p2,color=macd>upper?color.red:na,transp=90,title="resistance") if longCondition strategy.entry("Long",strategy.long) if shortCondition strategy.entry("Short",strategy.short)