이 전략은 ATR 및 피보나치 가중 평균을 기반으로 한 고급 트렌드 다음 시스템입니다. 반응적이고 적응적인 거래 모델을 만들기 위해 여러 시간 프레임에 걸쳐 변동성 분석과 피보나치 가중 평균을 결합합니다. 핵심 강점은 더 나은 트렌드 캡처와 정확한 수익을 얻기 위해 동적인 무게 할당에 있습니다.
이 전략은 다층 기술 지표 접근 방식을 사용합니다. 먼저 True Range (TR) 와 구매 압력 (BP) 을 계산하고, 그 다음 피보나치 순서 기간 (8,13,21,34,55) 에 기초한 압력 비율을 계산합니다. 다른 중량 (5,4,3,2,1) 을 다른 기간에 적용하여 가중 평균을 구성하고, 3 기간 SMA에 의해 더욱 부드럽게됩니다. 거래 신호는 미리 설정된 임계 (58.0 및 42.0) 와 함께 SMA 크로스오버에 의해 유발되며, ATR을 사용하여 4 단계 수익 취득 메커니즘이 설계됩니다.
이 전략은 ATR 및 피보나치 가중 평균을 통합하여 포괄적인 트렌드 추적 시스템을 구축합니다. 이 전략의 강점은 다차원 분석과 동적 적응 능력에 있으며 매개 변수 최적화 및 시장 환경 필터링에주의를 기울여야합니다. 지속적인 최적화 및 위험 통제 향상으로 전략은 다른 시장 조건에서 안정적인 성능을 유지할 수 있습니다.
/*backtest start: 2019-12-23 08:00:00 end: 2024-11-27 00:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © PresentTrading // The Fibonacci ATR Fusion Strategy is an advanced trading methodology that uniquely integrates Fibonacci-based weighted averages with the Average True Range (ATR) to // identify and exploit significant market trends. Unlike traditional strategies that rely on single indicators or fixed parameters, this approach leverages multiple timeframes and // dynamic volatility measurements to enhance accuracy and adaptability. //@version=5 strategy("Fibonacci ATR Fusion - Strategy [presentTrading]", overlay=false, precision=3, commission_value= 0.1, commission_type=strategy.commission.percent, slippage= 1, currency=currency.USD, default_qty_type = strategy.percent_of_equity, default_qty_value = 10, initial_capital=10000) // Calculate True High and True Low tradingDirection = input.string(title="Trading Direction", defval="Both", options=["Long", "Short", "Both"]) // Trading Condition Thresholds long_entry_threshold = input.float(58.0, title="Long Entry Threshold") short_entry_threshold = input.float(42.0, title="Short Entry Threshold") long_exit_threshold = input.float(42.0, title="Long Exit Threshold") short_exit_threshold = input.float(58.0, title="Short Exit Threshold") // Enable or Disable 4-Step Take Profit useTakeProfit = input.bool(false, title="Enable 4-Step Take Profit") // Take Profit Levels (as multiples of ATR) tp1ATR = input.float(3.0, title="Take Profit Level 1 ATR Multiplier") tp2ATR = input.float(8.0, title="Take Profit Level 2 ATR Multiplier") tp3ATR = input.float(14.0, title="Take Profit Level 3 ATR Multiplier") // Take Profit Percentages tp1_percent = input.float(12.0, title="TP Level 1 Percentage", minval=0.0, maxval=100.0) tp2_percent = input.float(12.0, title="TP Level 2 Percentage", minval=0.0, maxval=100.0) tp3_percent = input.float(12.0, title="TP Level 3 Percentage", minval=0.0, maxval=100.0) true_low = math.min(low, close[1]) true_high = math.max(high, close[1]) // Calculate True Range true_range = true_high - true_low // Calculate BP (Buying Pressure) bp = close - true_low // Calculate ratios for different periods calc_ratio(len) => sum_bp = math.sum(bp, len) sum_tr = math.sum(true_range, len) 100 * sum_bp / sum_tr // Calculate weighted average of different timeframes weighted_avg = (5 * calc_ratio(8) + 4 * calc_ratio(13) + 3 * calc_ratio(21) + 2 * calc_ratio(34) + calc_ratio(55)) / (5 + 4 + 3 + 2 + 1) weighted_avg_sma = ta.sma(weighted_avg,3) // Plot the indicator plot(weighted_avg, "Fibonacci ATR", color=color.blue, linewidth=2) plot(weighted_avg_sma, "SMA Fibonacci ATR", color=color.yellow, linewidth=2) // Define trading conditions longCondition = ta.crossover(weighted_avg_sma, long_entry_threshold) // Enter long when weighted average crosses above threshold shortCondition = ta.crossunder(weighted_avg_sma, short_entry_threshold) // Enter short when weighted average crosses below threshold longExit = ta.crossunder(weighted_avg_sma, long_exit_threshold) shortExit = ta.crossover(weighted_avg_sma, short_exit_threshold) atrPeriod = 14 atrValue = ta.atr(atrPeriod) if (tradingDirection == "Long" or tradingDirection == "Both") if (longCondition) strategy.entry("Long", strategy.long) // Set Take Profit levels for Long positions if useTakeProfit tpPrice1 = strategy.position_avg_price + tp1ATR * atrValue tpPrice2 = strategy.position_avg_price + tp2ATR * atrValue tpPrice3 = strategy.position_avg_price + tp3ATR * atrValue // Close partial positions at each Take Profit level strategy.exit("TP1 Long", from_entry="Long", qty_percent=tp1_percent, limit=tpPrice1) strategy.exit("TP2 Long", from_entry="Long", qty_percent=tp2_percent, limit=tpPrice2) strategy.exit("TP3 Long", from_entry="Long", qty_percent=tp3_percent, limit=tpPrice3) if (longExit) strategy.close("Long") if (tradingDirection == "Short" or tradingDirection == "Both") if (shortCondition) strategy.entry("Short", strategy.short) // Set Take Profit levels for Short positions if useTakeProfit tpPrice1 = strategy.position_avg_price - tp1ATR * atrValue tpPrice2 = strategy.position_avg_price - tp2ATR * atrValue tpPrice3 = strategy.position_avg_price - tp3ATR * atrValue // Close partial positions at each Take Profit level strategy.exit("TP1 Short", from_entry="Short", qty_percent=tp1_percent, limit=tpPrice1) strategy.exit("TP2 Short", from_entry="Short", qty_percent=tp2_percent, limit=tpPrice2) strategy.exit("TP3 Short", from_entry="Short", qty_percent=tp3_percent, limit=tpPrice3) if (shortExit) strategy.close("Short")