Bollinger Bands と ゴールデン レショア を ベース に する 平均 逆転 取引 戦略

作者: リン・ハーンチャオチャン,日付: 2023年11月16日 16:52:55
タグ:

img

概要

この戦略は,平均逆転を取引するために,ボリンジャーバンドの黄金比線と移動平均形成を組み合わせて使用します.価格が黄金比線に触ると,平均逆転傾向を利用するための購入信号とみなされます.

戦略の論理

  1. Bollinger Bands を計算する 中間帯,上部帯,黄金比率下部帯
  • 中間帯: n 期間の vwma
  • 上部帯: 中部帯 + k * n 周期標準偏差
  • 黄金比率下帯: 中帯 - 0.618 * n 期間の標準偏差
  1. 裁判官の構成
  • 200日間MAを上回る50日間MAは上昇傾向を示します
  • 価格は,購入信号として,黄金比率の下部帯に触れるか以下です
  1. 出口
  • 価格がBB上位帯を超えると,価格が下位帯から移動したとみられ,閉じるポジション
  1. ストップ損失
  • 停止損失を固定する割合を設定します.例えば 5%

利点

  1. BB 中間線に sma の代わりに vwma を使えば,価格動きがよりよく反映される.

  2. 黄金比率は重要なサポート/レジスタンスであり,逆転の基礎を提供します

  3. 上昇傾向におけるMAは,全体的な傾向が上昇することを保証します

  4. 固定ストップ・ロスは,各取引の損失を制御する.

リスク

  1. 黄金線は保証されていない 価格が突破する可能性があります

  2. 固定ストップ・ロスは任意であり,波動性に基づく調整を検討すべきです.

  3. MA上昇傾向は誤ったブレイクかもしれない.より多くの指標を確認すべきです.

  4. 逆転の長さを確信していない 合理的な利益の出口が必要

強化

  1. BB期間,SD倍数,固定ストップ損失パーセントなどパラメータの異なる組み合わせをテストします.

  2. 市場動向と逆転確率を判断するために,MACD,KDなど,より多くの指標を追加します.

  3. ATR や トレイリング ストップ のような ダイナミック ストップ を 考慮 する

  4. 利得を最大化します 例えば 移動利得停止や 部分利得採取など

概要

この戦略の取引は,明確な論理,シンプルなパラメータ,制御可能な引き下げを備えたBBゴールデン比率ラインを使用してリバースを意味します. しかし,リスクもあり,さらなるテストと最適化,トレンドのためのより多くの技術指標を追加し,実際の使用前により良いストップ/エグジットが必要です. 全体的に,量子取引でゴールデン比率を使用するアイデアを提供します.さらに探求する価値があります.


/*backtest
start: 2023-10-01 00:00:00
end: 2023-10-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © mohanee

//@version=4

strategy(title="Bollinger Band with Fib Golden Ratio (0.618)",  shorttitle="Bollinger Band with Fib Golden Ratio" , overlay=true, pyramiding=1,     default_qty_type=strategy.percent_of_equity,  default_qty_value=20, initial_capital=10000, currency=currency.USD)  

length = input(50,title="BB Length" , minval=1)
src1 = input(hlc3, title="Source")
//mult1 = input(1.33, minval=0.001, maxval=50)
mult = input(1.5,title="multplier", minval=0.001, maxval=50)

stopLoss=input(5,title="Stop Loss",minval=1)

basis = vwma(src1, length)
dev = mult * stdev(src1, length)

//dev3 = mult3 * stdev(src, length)

upper_618= basis + (0.618*dev)
lower_618= basis - (0.618*dev)

//lower_618_dev3= basis - (0.618*dev3)



plot_upper618= plot(upper_618, color=color.purple, linewidth=2, title="0.618")
plot(basis, color=color.purple,style=plot.style_circles,  linewidth=2)

plot_lower618= plot(lower_618, color=color.purple, linewidth=2, title="0.618 entry")
//plot_lower618_dev3= plot(lower_618_dev3, color=color.red, linewidth=1, title="0.618 stop")

//plot_lower618= plot(lower_618, color=color.purple, linewidth=1, title="0.618 entry")

ema200=ema(close,200)
ema50=ema(close,50)

plot (ema200, title="ema200", color=color.orange, linewidth=2)
plot (ema50, title="ema50", color=color.blue , linewidth=2)


longCondition= ema50 > ema200

strategy.entry(id="BB_Fib618", long=true, when = longCondition and ( close < lower_618  or  low <= lower_618)  )

strategy.close(id="BB_Fib618",  comment="points="+tostring(close - strategy.position_avg_price,  "###.##") , when = strategy.position_size >= 1  and crossover(close,upper_618 )) 

//stoploss exit
stopLossVal = strategy.position_size>=1 ?  strategy.position_avg_price * ( 1 - (stopLoss/100) ) : 0.00
strategy.close(id="BB_Fib618", comment="SL="+tostring(close - strategy.position_avg_price,  "###.##"), when=abs(strategy.position_size)>=1 and close < stopLossVal ) //and close > strategy.position_avg_price )


もっと