ボリンジャー帯域幅スケーリングデュアル移動平均トレンドスクリーニング戦略


作成日: 2023-10-25 15:00:20 最終変更日: 2023-10-25 15:00:20
コピー: 3 クリック数: 782
1
フォロー
1617
フォロワー

ボリンジャー帯域幅スケーリングデュアル移動平均トレンドスクリーニング戦略

この戦略は,ブリン帯と双均線をベースに取引信号生成を行い,トレンドフィルタリングと組み合わせ,高い勝率と良い損益率を追求することを目的としている.

戦略原則

  1. ブリン帯の上線,中線,下線を用いて多空信号判定を行う.価格が上線に触れたとき空を見,下線に触れたとき多を見ること.

  2. 長期平均線は,長さ20の中短期平均線と長さ60の長期平均線を用いてトレンド判断を行う.短期平均線の上を長期平均線穿戴すると看板となり,下を穿戴すると看板となる.

  3. ブリン帯域の幅に合わせて動的に止損位置を調整する。ブリン帯域の幅が0.5%以上であるとき,止損位置は下線;幅が0.5%未満であるとき,止損位置は下線半分の区間に縮小する。

  4. 入場条件:看時,価格が下線を突破すると多信号,看時,価格が上線を突破すると空調信号.

  5. 出場条件:多行時,ブリン帯が上線または短期均線に触れたとき止まる.空き時,ブリン帯が下線または短期均線に触れたとき止まる.

  6. ストップ条件:多行時,価格がブリン帯の下軌道動的区間のストップ;空行時,価格がブリン帯上軌道動的区間のストップ.

戦略的優位性

  1. 双均線を用いてトレンド判断し,トレンド不明や市場騒音を効果的にフィルターすることができる.

  2. ブリン帯中軌は,サポート抵抗として,上軌下軌は,動的止損位として,リスクを制御することができる.

  3. ブリン帯域に合わせてストップの幅を調整し,ストップが起動する確率を低減し,ストップ位置が合理的であることを確認する.

  4. トレンド方向の取引を追跡し,勝率が高い.

戦略リスク

  1. 双均線は偽突破の発生確率が高いため,トレンド転換点を逃す可能性があります.均線周期を適切に短縮することができます.

  2. ブリン帯は波動的なトレンドに巻き込まれやすい.取引頻度を減らすことで回避できます.

  3. 止損位置は,サポート抵抗に近づくと簡単に打ち破られる. 止損範囲を適切に放寬することができる.

  4. ショートラインの回调を効果的に捕捉できないチャンス. 適切な保持時間を短縮することができます.

戦略最適化の方向性

  1. 平均線周期パラメータを最適化して,戦略に適した市場環境を見つける.

  2. ブリン帯の倍数パラメータを最適化し,ストップダメージが打ち破られる確率をバランスする.

  3. 他の指標を追加してMulti-Factor検証を行い,信号の質を向上させる.

  4. 取引量のエネルギーとトレンドを組み合わせて,脱線を避ける.

  5. 資金管理の最適化,例えば,固定分,固定ストップなど,単一損失を制御する.

  6. 価格ショック処理,例えば大きな空隙の処理

要約する

この戦略は全体的に安定しており,双均線でトレンドの方向を判断し,ブリン帯はサポートレジスタンス値を提供し,ダイナミックな止損を設定する.しかし,トレンドを誤判し,近すぎる止損などの問題など,一定の制限がある.その後,均線システム,止損戦略,資金管理などの複数の側面から最適化することができ,戦略パラメータをより粗略なものにし,さまざまな市場環境で安定したパフォーマンスを維持することができる.全体的に言えば,この戦略は,高い勝率,良き損益比率で際立っており,初心者向けに適したシンプルで効果的な戦略思考である.

ストラテジーソースコード
/*backtest
start: 2022-10-18 00:00:00
end: 2023-10-24 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title="yuthavithi BB Scalper 2 strategy", overlay=true)

len = input(20, minval=1, title="Length")
multiplier = input(4, minval=1, title="multiplier")
trendTimeFrame = input(60, minval=1, title="Trend Time Frame")
useTrendFilter = input(true, type=bool, title = "Use Trend Filter")

src = input(close, title="Source")
out = sma(src, len)
//plot(out, title="SMA", color=blue)

stdOut = stdev(close, len)
bbUpper = out + stdOut * multiplier
bbLower = out - stdOut * multiplier
bbUpper2 = out + stdOut * (multiplier / 2)
bbLower2 = out - stdOut * (multiplier / 2)
bbUpperX2 = out + stdOut * multiplier * 2
bbLowerX2 = out - stdOut * multiplier * 2
bbWidth = (bbUpper - bbLower) / out


closeLongTerm = request.security(syminfo.tickerid, tostring(trendTimeFrame), close)
smaLongTerm = request.security(syminfo.tickerid, tostring(trendTimeFrame), sma(close,20))

//plot(smaLongTerm, color=red)

trendUp = useTrendFilter ? (closeLongTerm > smaLongTerm) : true
trendDown = useTrendFilter? (closeLongTerm < smaLongTerm) : true

bearish = ((cross(close,bbUpper2) == 1) or (cross(close,out) == 1)) and (close[1] > close) and trendDown
bullish = ((cross(close,bbLower2) == 1) or (cross(close,out) == 1)) and (close[1] < close) and trendUp


closeBuy = (high[1] > bbUpper[1]) and (close < bbUpper) and (close < open) and trendUp 
closeSell = (((low[1] < bbLower[1]) and (close > bbLower)) or ((low[2] < bbLower[2]) and (close[1] > bbLower[1]))) and (close > open) and trendDown


cutLossBuy = iff(bbWidth > 0.005, (low < bbLower) and (low[1] > bbLower[1]) and trendUp, (low < bbLowerX2) and (low[1] > bbLowerX2[1]) and trendUp)
cutLossSell = iff(bbWidth > 0.005, (high > bbUpper) and (high[1] < bbUpper[1]) and trendDown, (high > bbUpperX2) and (high[1] < bbUpperX2[1]) and trendDown)


if (bullish)
    strategy.entry("Buy", strategy.long, comment="Buy")

if (bearish)
    strategy.entry("Sell", strategy.short, comment="Sell")
    

strategy.close("Buy", closeBuy or cutLossBuy)
   
strategy.close("Sell", closeSell or cutLossSell)