この戦略は,トレード後の自動的なトレンドを実装し,ボリンジャー帯を計算し,ダウンとピークを特定し,長期および短期移動平均を使用して,全体的なトレンド方向性を決定します. 基本的なアイデアは,支配的なトレンドに従ってダウンを購入し,ピークを販売することです.
戦略の主要構成要素は以下のとおりです.
閉じる価格と標準偏差に基づいて上下帯帯を持つボリンジャー帯を計算する.
300 期間の SMA と 20 期間の SMA を使って長期および短期トレンドを決定する.
ストローが下帯を下回り,ロングSMAが上回り,ショートSMAが上回りすると買い信号を生成する.
ストローが上部帯を突破し,ロングSMAが下にあり,ショートSMAが下がるとセールシグナルを生成する.
ストップ・ロスを設定し 利益を取るためにOCOオーダーを使用します
このデザインによって 戦略は主要なトレンド方向に沿って ディープ・バイディングとピーク・セール・チャンスを自動的に特定できます
この戦略の利点は以下の通りです.
手動判断なしで自動的なトレンド検出
購入機会の 低迷を体系的に把握する
利益を得るためのピーク販売機会を体系的に特定する.
ストップ・ロストとテイク・プロフィートの有効なリスク管理
無効信号をフィルタリングして 勝利率を上げます
位置調整による柔軟な傾向
論理が明確で 分かりやすく最適化できます
考慮すべき主なリスクは
不適切なセキュリティ選択は 傾向追跡に失敗する可能性があります
パラメータの調整が不適切である場合,過剰取引または失敗する取引を引き起こす可能性があります.
突発的な出来事によるトレンドの逆転は,より大きな損失につながる可能性があります.
ストップ・ロスは太りすぎると,過剰なストップが起こる可能性があります.
十分な流動性がない場合,完全な執行が妨げられる.
バックテスト期間が不十分で オーバーフィッティング
解決策には: 明確なトレンドを持つ流動株を選択する パラメータを最適化する ニュースに注意する ストップロスを緩和する リアル取引量を評価する バックテスト期間を拡大する
戦略を最適化する方法:
ボリンジャー周期,標準偏差倍数,移動平均期などのパラメータを最適化します
ストップ・ロスのメソッドを追加します. トレイリング・ストップや移動平均ストップなどです.
資本利用効率を向上させるために,キーレベルに基づいてポジションサイズを組み込む.
低音量で無効なブレイクを避けるために音量フィルターを追加します.
購入/販売バイアスを決定するために相対強度指標を追加します.
自動パラメータ調整と戦略評価のための機械学習を導入します
他の戦略と組み合わせて 多戦略のポートフォリオを作成し,より堅牢になる.
これらの最適化は,戦略のパフォーマンスと安定性をさらに高めることができます.
この戦略は,トレンドに沿って体系的にディープを購入しピークを販売するための明確で理解可能なアプローチを提供しています.適切なリスク管理により,良い利益の可能性があります.パラメータ調整,ストップ損失修正,ポジションサイズ化などによりさらなる改善ができます.この戦略は,トレンド後に自動化されたトレンドのための堅牢な基盤として機能します.
/*backtest start: 2023-09-23 00:00:00 end: 2023-10-23 00:00:00 period: 3h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("Buy Dip Sell Rip Strategy", overlay=true) source = close length = input(15, minval=1) mult = input(1.25, minval=0.001, maxval=50) longMAPeriod = input(300, minval=5) shortMAPeriod = input(20, minval=5) basis = sma(source, length) longMA = sma(source, longMAPeriod) prevLongMA = sma(close[1],longMAPeriod) shortMA = sma(source, shortMAPeriod) dev = mult * stdev(source, length) upper = basis + dev lower = basis - dev buyEntry = crossover(source, lower) sellEntry = crossunder(source, upper) if (source > lower and source[1] < lower) if (longMA < source and shortMA>source) strategy.entry("BBandLE", strategy.long, stop=lower, oca_name="BollingerBands", comment="BBandLE") else strategy.close("BBandSE") else strategy.cancel(id="BBandLE") if (source > upper and source[1] < upper) if (longMA > source and shortMA < source) strategy.entry("BBandSE", strategy.short, stop=upper, oca_name="BollingerBands", comment="BBandSE") else strategy.close("BBandLE") else strategy.cancel(id="BBandSE") //plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)