この戦略は,ボリンジャーバンド,RSI,複数の移動平均値,およびMACD指標を組み合わせて,完全な取引システムを構築する.まず,ボリンジャーバンドを使用して価格波動性と中間帯との関係で価格の位置を特定し,トレンドを特定する.同時に,RSI差異を使用して過剰購入および過剰販売条件を評価し,潜在的なトレンド逆転を検出するためにRSI指標を使用する.複数の移動平均値は,トレンド追跡およびサポートおよびレジスタンスレベルを決定するために使用される.最後に,MACD指標は,トレンドと潜在的な逆転を判断するのに役立ちます.これらの指標を包括的に考慮することによって,戦略は完全なエントリーと出口条件を策定し,取引戦略を構築します.
この戦略は,トレンド識別,過剰購入および過剰販売判断,多時間スケール分析,ポジション制御を含む複数の次元から比較的包括的な取引システムを構築する.しかし,この戦略は,不安定な市場や極端なイベントに対処する上でさらなる最適化が必要であり,より体系的なパラメータ最適化とリスク制御が欠けている.将来,この戦略は,より洗練された信号フィルタリング,ダイナミックな重量調整,極端なイベントへの反応の観点から改善し続けることができる.継続的なバックテスト最適化とライブ取引検証を通じて,この戦略は,堅牢で持続可能な定量的な取引戦略に成長する可能性がある.
/*backtest start: 2023-05-21 00:00:00 end: 2024-05-26 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Bollinger Bands + RSI Strategy with MA", overlay=true) // Bollinger Bands length = input.int(20, title="BB Length") mult = input.float(2.0, title="BB Mult") basis = ta.sma(close, length) dev = mult * ta.stdev(close, length) upper_band = basis + dev lower_band = basis - dev // RSI rsi_length = input.int(14, title="RSI Length") rsi_oversold = input.int(30, title="RSI Oversold", minval=0, maxval=100) rsi_overbought = input.int(70, title="RSI Overbought", minval=0, maxval=100) rsi = ta.rsi(close, rsi_length) // RSI Divergence rsi_divergence_bottom = ta.crossunder(rsi, rsi_oversold) rsi_divergence_peak = ta.crossunder(rsi_overbought, rsi) // Moving Averages ma34 = ta.sma(close, 34) ma89 = ta.sma(close, 89) ma144 = ta.sma(close, 144) ma233 = ta.sma(close, 233) ma377 = ta.sma(close, 377) ma610 = ta.sma(close, 610) // MACD Calculation [macd_line, signal_line, _] = ta.macd(close, 12, 26, 9) macd_histogram = macd_line - signal_line // MACD Divergence macd_divergence_bottom = ta.crossunder(macd_histogram, 0) macd_divergence_peak = ta.crossover(macd_histogram, 0) // Conditions for Buy and Sell basis_gt_ma34 = basis > ma34 ma34_gt_ma89 = ma34 > ma89 // Entry condition buy_condition = basis_gt_ma34 and ma34_gt_ma89 sell_condition = basis <ma34 // Calculate position size position_size = 1.0 // 100% capital initially // Update position size based on conditions if (sell_condition) position_size := 0.5 // Sell half of the position if (not basis_gt_ma34) position_size := 0.0 // Sell all if basis < ma34 // Entry and exit strategy if (buy_condition) strategy.entry("Buy", strategy.long, qty=position_size) if (sell_condition) strategy.close("Buy") // Plot Bollinger Bands and Moving Averages bb_fill_color = basis > basis[1] ? color.new(color.blue, 90) : color.new(color.blue, 10) plot(basis, color=color.blue, title="Basis") plot(upper_band, color=color.red, title="Upper Band") plot(lower_band, color=color.green, title="Lower Band") fill(plot1=plot(upper_band), plot2=plot(lower_band), color=bb_fill_color, title="BB Fill") plot(ma34, color=color.orange, title="MA34") plot(ma89, color=color.purple, title="MA89") plot(ma144, color=color.gray, title="MA144") plot(ma233, color=color.blue, title="MA233") plot(ma377, color=color.red, title="MA377") plot(ma610, color=color.green, title="MA610") // Plot RSI Divergence plotshape(series=rsi_divergence_bottom, style=shape.triangleup, location=location.abovebar, color=color.green, size=size.small) plotshape(series=rsi_divergence_peak, style=shape.triangledown, location=location.belowbar, color=color.red, size=size.small) // Plot MACD Histogram Divergence plotshape(series=macd_divergence_bottom, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small) plotshape(series=macd_divergence_peak, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small)