トレンドフォロー戦略 ボリンジャーバンドオシレーターに基づく

作者: リン・ハーンチャオチャン開催日:2023年10月10日 10:54:05
タグ:

概要

この戦略の主な考え方は,ボリンジャーバンド振動器を使用してトレンドを特定し,トレンドが変化するとポジションを入力することです.価格が上部帯を突破するとロングになり,価格が下部帯を突破するとショートになります.トレンドが利益へのアプローチをたどります.

戦略の論理

この戦略は主にボリンジャー帯振動器を使用してトレンド方向を決定する.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を下回ると,下向きトレンドをシグナルします.

ポジションを入力した後,戦略はリスクを制御し,利益をロックするために移動ストップ損失,固定テイク利益,トラッキングストップ損失を使用します.パラメータはバックテスト結果に基づいて最適化できます.

利点

  1. BBOはトレンド変化に敏感です.

  2. トレンドが逆転すると 移動ストップ損失が 個々の損失を制御します

  3. 決まった利益は,傾向が正しいとき,利益にロックされます.

  4. トレイリングストップロスは 1つの取引で最大利益を得る

  5. 戦略はシンプルで直感的です

リスク

  1. BBOは誤った信号を与えます

  2. 誤ったストップ・ロース/テイク・プロフィットが早すぎる場合もある.

  3. 固定得益は早すぎるので 利益は失われるかもしれません

  4. パラメーターはオーバーフィットしないために最適化が必要です

  5. 潜在的に大きな引き上げ,十分な資本が必要です

最適化

  1. BBOとMAのパラメータを最適化

  2. ATR,パーセントなど ストップロスの異なる方法をテストします

  3. 安定した利益とストップ損失を最適化します

  4. 偽信号を避けるためにフィルターを追加します.

  5. ポジションのサイズを異なる市場で最適化する

  6. 戦略の有効性を 計測する

結論

この戦略は,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)

もっと