単一移動平均のクロスオーバー ボリンガーバンド戦略

作者: リン・ハーンチャオチャン開催日:2023年12月22日 14時10分14秒
タグ:

img

概要

この戦略は,単一の移動平均値とボリンジャーバンド指標に基づいています.価格はボリンジャーバンドの上または下帯を突破したとき,購入および販売信号を生成します.また,傾向を決定するために移動平均値の方向性を組み込み,MAが上昇するときに長く,MAが低下するときに短くなります.

戦略の論理

戦略は主に以下の指標を用いて判断する.

  1. 移動平均値 (SMA): CLOSE価格の単純な移動平均値で,価格動向を表す.
  2. 上部ボリンジャー帯:レジスタンスレベルを表し,ブレイクアウトは強い勢いを示します.
  3. ローナー・ボリンジャー・バンド: サポートレベルを表し,分解はトレンド逆転の可能性を示します.

特定の取引信号は次のとおりです.

  1. 購入信号: 閉じる価格が上部帯を突破し,MAが上昇する.
  2. セールシグナル: 閉じる価格が下帯を突破し,MAが下がる.

トレンドとブレイクを組み合わせることで,取引信号はより信頼性が高くなり,偽ブレイクを避ける.

利点

  1. シンプルで明快なルールで 分かりやすく実行できます
  2. MAは,ショートブルとロングベア市場を避ける一般的な傾向を判断しています.
  3. ボリンジャー・バンド 上部と下部帯は ローカルブレイクポイントを正確に位置付けます
  4. 人々のリスクの好みに合致します.

リスク

  1. 単一インジケーターは 誤った信号を生成する傾向があります パラメータ調整によって改善できます
  2. 市場の大きな変動に対応できず,それに応じてストップロスを調整できます
  3. メガトレンドから利益を得られないので,より大きなポジションサイズを検討できます.

改善

  1. より多くの製品に合うように MA 期間を最適化します.
  2. 誤った信号を減らすためにMACDのような他のフィルターを追加します.
  3. ストップ・ロスを動的に調整して最大引き上げを制限します
  4. PnLの業績を安定させるためにマネーマネジメントを導入する.

結論

一般的には,これはほとんどの人に適したシンプルで実用的な戦略です.いくつかの調整と最適化により,より堅牢で,より多くの市場状況に適応できます.これは推奨される戦略です.


/*backtest
start: 2023-12-14 00:00:00
end: 2023-12-18 19:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title="single sma cross", shorttitle="single sma cross",default_qty_type = strategy.percent_of_equity, default_qty_value = 100,overlay=true,currency="USD")
s=input(title="s",defval=90)
p=input(title="p",type=float,defval=.9,step=.1)

sa=sma(close,s)
plot(sa,color=red,linewidth=3)
band=stdev(close,s)*p
plot(band+sa,color=lime,title="")
plot(-band+sa,color=lime,title="")

// ===Strategy Orders============================================= ========
inpTakeProfit = input(defval = 0, title = "Take Profit", minval = 0)
inpStopLoss = input(defval = 0, title = "Stop Loss", minval = 0)
inpTrailStop = input(defval = 0, title = "Trailing Stop Loss", minval = 0)
inpTrailOffset = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0)
useTakeProfit = inpTakeProfit >= 1 ? inpTakeProfit : na
useStopLoss = inpStopLoss >= 1 ? inpStopLoss : na
useTrailStop = inpTrailStop >= 1 ? inpTrailStop : na
useTrailOffset = inpTrailOffset >= 1 ? inpTrailOffset : na

longCondition = crossover(close,sa+band) and rising(sa,5)
shortCondition = crossunder(close,sa-band) and falling(sa,5)
crossmid = cross(close,sa)


strategy.entry(id = "Long", long=true, when = longCondition)
strategy.close(id = "Long", when = shortCondition)
strategy.entry(id = "Short", long=false, when = shortCondition)
strategy.close(id = "Short", when = longCondition)
strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=crossmid)
strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=crossmid)

もっと