この戦略の主な考え方は,ボリンジャーバンド振動器を使用してトレンドを特定し,トレンドが変化するとポジションを入力することです.価格が上部帯を突破するとロングになり,価格が下部帯を突破するとショートになります.トレンドが利益へのアプローチをたどります.
この戦略は主にボリンジャー帯振動器を使用してトレンド方向を決定する.BBOの公式は:
BBO = (Close - N-day Moving Average) / (2 * N-day Standard Deviation) * 100
閉じる価格が Close であり, N 日移動平均は Close の N 日単純な移動平均であり, N 日標準偏差は Close の N 日標準偏差である.
この戦略は,まず65日間のBBOを計算し,その後30日間の移動平均を計算する.BBOがMAを超えると,上向きトレンドをシグナルします.BBOがMAを下回ると,下向きトレンドをシグナルします.
ポジションを入力した後,戦略はリスクを制御し,利益をロックするために移動ストップ損失,固定テイク利益,トラッキングストップ損失を使用します.パラメータはバックテスト結果に基づいて最適化できます.
BBOはトレンド変化に敏感です.
トレンドが逆転すると 移動ストップ損失が 個々の損失を制御します
決まった利益は,傾向が正しいとき,利益にロックされます.
トレイリングストップロスは 1つの取引で最大利益を得る
戦略はシンプルで直感的です
BBOは誤った信号を与えます
誤ったストップ・ロース/テイク・プロフィットが早すぎる場合もある.
固定得益は早すぎるので 利益は失われるかもしれません
パラメーターはオーバーフィットしないために最適化が必要です
潜在的に大きな引き上げ,十分な資本が必要です
BBOとMAのパラメータを最適化
ATR,パーセントなど ストップロスの異なる方法をテストします
安定した利益とストップ損失を最適化します
偽信号を避けるためにフィルターを追加します.
ポジションのサイズを異なる市場で最適化する
戦略の有効性を 計測する
この戦略は,BBO を使用してトレンド変化を特定し,それに応じてポジションを入力する.さまざまな種類の出口でリスクと利益を制御する.この戦略はシンプルで直感的ですが,パラメータ最適化が必要です.適切に最適化された場合,トレンド市場では良好なパフォーマンスを発揮できますが,誤った信号や不適切な出口には注意する必要があります.
/*backtest start: 2022-10-03 00:00:00 end: 2023-10-09 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy(title="Strategy CCT Bollinger Band Oscillator", shorttitle="Hornkild", calc_on_order_fills=true, default_qty_type=strategy.percent_of_equity, default_qty_value=50, overlay=false) length=input(65) lengthMA=input(30) src=close cctbbo=100 * ( src + 2*stdev( src, length) - sma( src, length ) ) / ( 4 * stdev( src, length ) ) //ul=hline(100, color=gray, editable=true) //ll=hline(0, color=gray) //hline(50, color=gray) //fill(ul,ll, color=blue) //plot(cctbbo, color=blue, linewidth=2) //plot(ema(cctbbo, lengthMA), color=red) TP = input(0) * 10 SL = input(0) * 10 TS = input(1) * 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(cctbbo, ema(cctbbo, lengthMA)) if (longCondition) strategy.entry("Long", strategy.long) shortCondition = crossunder(cctbbo, ema(cctbbo, lengthMA)) 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)