この戦略は,技術指標MACDとATRと平均逆転原理を組み合わせた定量的な取引システムである.価格偏差を特定するためにボリンジャー帯,モメント確認のためにMACD,ダイナミックリスク管理のためにATRを使用する.コアコンセプトは,価格が重要な偏差を示したときに平均逆転機会を把握し,複数の技術指標を通じて検証することである.
この戦略は3つの技術指標を併用している.第一に,ボリンジャーバンドは重要な価格偏差を決定する.第二に,MACDは価格の勢いを検証し,取引の方向性が市場の動向に一致することを保証する.最後に,ATRは動的なストップ・ロストとテイク・プロフィートレベルを設定する.特に,価格がボリンジャーバンドの下部とMACDラインが信号ラインの上部を突破するとロング・シグナルが生成され,価格がボリンジャーバンド上部とMACDラインが信号ラインの下部を突破するとショート・シグナルが発生する.ATRは市場の波動性に基づいてストップ・ロストとテイク・プロフィートのレベルを動的に調整する.
この戦略は,古典的な技術分析と近代的な定量的な取引方法を組み合わせている.複数の指標の協調的な使用を通じて,単一の指標の限界を克服しながら,平均逆転の基本的な利点を維持している.この戦略は高度に拡張性があり,パラメータ最適化および追加の機能モジュールを通じて継続的な改善が可能である.一方,その包括的なリスク制御メカニズムは安定性を保証する.
/*backtest start: 2024-11-12 00:00:00 end: 2024-12-11 08:00:00 period: 3h basePeriod: 3h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Enhanced Mean Reversion with MACD and ATR", overlay=true) // Nastavenia Bollinger Bands bbLength = input(20, title="Bollinger Bands Length") bbMult = input(2, title="Bollinger Bands Multiplier") basis = ta.sma(close, bbLength) dev = ta.stdev(close, bbLength) upperBand = basis + bbMult * dev lowerBand = basis - bbMult * dev // MACD indikátor macdShort = input(12, title="MACD Short Length") macdLong = input(26, title="MACD Long Length") macdSignal = input(9, title="MACD Signal Length") [macdLine, signalLine, _] = ta.macd(close, macdShort, macdLong, macdSignal) // ATR pre dynamický Stop Loss a Take Profit atrLength = input(14, title="ATR Length") atrMultiplier = input(1.5, title="ATR Multiplier") atrValue = ta.atr(atrLength) // Vstupné podmienky pre long pozície longCondition = ta.crossover(close, lowerBand) and macdLine > signalLine if (longCondition) strategy.entry("Long", strategy.long) // Vstupné podmienky pre short pozície shortCondition = ta.crossunder(close, upperBand) and macdLine < signalLine if (shortCondition) strategy.entry("Short", strategy.short) // Dynamický Stop Loss a Take Profit na základe ATR longSL = strategy.position_avg_price - atrValue * atrMultiplier longTP = strategy.position_avg_price + atrValue * atrMultiplier * 2 shortSL = strategy.position_avg_price + atrValue * atrMultiplier shortTP = strategy.position_avg_price - atrValue * atrMultiplier * 2 // Pridanie stop loss a take profit if (strategy.position_size > 0) strategy.exit("Take Profit/Stop Loss", "Long", stop=longSL, limit=longTP) if (strategy.position_size < 0) strategy.exit("Take Profit/Stop Loss", "Short", stop=shortSL, limit=shortTP) // Vizualizácia Bollinger Bands a MACD plot(upperBand, color=color.red, title="Upper Bollinger Band") plot(lowerBand, color=color.green, title="Lower Bollinger Band") plot(basis, color=color.blue, title="Bollinger Basis") hline(0, "MACD Zero Line", color=color.gray) plot(macdLine - signalLine, color=color.blue, title="MACD Histogram") plot(macdLine, color=color.red, title="MACD Line") plot(signalLine, color=color.green, title="Signal Line") // Generovanie alertov alertcondition(longCondition, title="Long Alert", message="Long Entry Signal") alertcondition(shortCondition, title="Short Alert", message="Short Entry Signal")