ダブル・ムービング・平均ボリンジャー・バンド・システム戦略は,典型的なタッチ・トレード戦略である. 波動性指標ボリンジャー・バンドとダブル・ライン・タッチを使用してポジションを開く. 資金を管理し利益を生むためにストップ・プロフィートとストップ・ロスト・メカニズムを使用する.
この戦略は主にボリンジャーバンド指標に基づいている.ボリンジャーバンドは移動平均線と帯幅から構成される.戦略はまず,中間帯として n 期間の閉じる価格の移動平均を計算し,帯幅は中間帯の標準偏差の m 倍である.上帯と下帯は中帯の上下に m 標準偏差としてプロットされる.価格が上帯に触るとショートポジションが開く.価格が下帯に触るとロングポジションが開く.
具体的には,この戦略は次のステップを実行します.
入力パラメータ: 設定移動平均長 n と標準偏差倍数 m
中間帯を計算する: 閉値の n 期間の単純な移動平均値
上値帯を計算する: 中値帯 + 閉値の m * n 期間の標準偏差
下帯を計算する: 中帯 - 閉値の m * n 期間の標準偏差
中央,上部,下部帯をプロット
閉店価格が中間帯を超えると,ロング
閉店価格が中間帯を下回ると,ショート
出口ポジションにストップ・プロフィットとストップ・ロスのポイントを設定する
双線関数とストップ・プロフィット・ストップ・ロスのメカニズムを組み合わせてポジションを入力することで,リスクを効果的に制御し,安定した利益を得ることができます.
この戦略の利点は以下の通りです.
シンプルで明快なルールで 実行が簡単です
科学的な根拠を 持たせたボリンジャー・バンド指標に基づいています
2つの線で触れるのは 市場をフィルタリングするものです
ストップ・プロフィートとストップ・ロスを含み,リスクを管理する.
十分なバックテストデータが信頼性を保証します
パラメータを最適化するための大きな調整スペース
考慮すべきリスクは:
ボリンジャー帯はパラメータに敏感で,結果が異なることがあります.
低頻度で取引機会を逃す可能性があります.
誤ったストップ・プロフィットとストップ・ロスの設定は,早期ストップ・ロスの発生または不十分な利益につながる可能性があります.
市場の動向が変わると大きな損失が発生する可能性があります.
バックテストの時間枠が短くなると,過剰なフィットメントのリスクが生じる可能性があります.
可能な解決策:
パラメータを最適化して 最高の組み合わせを見つけます
周波数を増やすために 狭いバンドを
異なる市場に基づいてストップを調整します
逆トレンド取引を避けるためにトレンドフィルターを追加します.
バックテストの時間枠を拡大して 安定性を確保します
戦略を改善する方法:
より良いエントリのためにパラメータを最適化します. より包括的なパラメータチューニングにより最適なパラメータセットを見つけることができます.
トレンド検出を追加します.トレンドフィルターはトレンドに反する取引を防止します.
出口を最適化します ダイナミックまたは遅いストップは 利益管理を改善できます
MACD,KDJ などが偽のブレイクをフィルタリングするのに役立ちます.
LSTMのような機械学習モデルを組み込み さらに最適化します
ポートフォリオ管理のための他の基本的または高度な戦略と組み合わせる.
ダブル・ムービング・平均ボリンジャー・バンドシステムは,科学的指標,明確なルール,柔軟なパラメータなどの利点で,全体的にポジティブな結果を示しています.パラメータ,出口,トレンドフィルターのさらなる改善は安定性を高めることができます.他の戦略とフレームワークと組み合わせることで,戦略のパフォーマンスを向上させ,価値を最大化することができます.
/*backtest start: 2023-09-17 00:00:00 end: 2023-10-17 00:00:00 period: 3h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("BB돌파", overlay=true) length = input.int(20, minval=1) src = input(close, title="Source") mult = input.float(2.0, minval=0.001, maxval=50, title="StdDev") basis = ta.sma(src, length) dev = mult * ta.stdev(src, length) upper = basis + dev lower = basis - dev offset = input.int(0, "Offset", minval = -500, maxval = 500) plot(basis, "Basis", color=#FF6D00, offset = offset) p1 = plot(upper, "Upper", color=#2962FF, offset = offset) p2 = plot(lower, "Lower", color=#2962FF, offset = offset) fill(p1, p2, title = "Background", color=color.rgb(33, 150, 243, 95)) long = ta.crossover(close,basis) short = ta.crossunder(close,basis) strategy.entry("long", strategy.long, when =long) strategy.entry("short", strategy.short, when =short)