이 전략은 이동 평균 크로스오버 신호를 ATR 기반 리스크 관리와 결합한 트렌드 다음 거래 시스템이다. 이 전략은 빠른 및 느린 이동 평균의 크로스오버를 통해 시장 트렌드를 캡처하고 ATR 지표를 사용하여 스톱 로스 및 테이크 노프프 레벨을 동적으로 조정하여 거래 리스크의 정확한 통제를 달성합니다. 이 전략에는 또한 계좌 자본 및 미리 설정된 리스크 매개 변수에 따라 위치 크기를 자동으로 조정하는 돈 관리 모듈이 포함되어 있습니다.
이 전략의 핵심 논리는 다음의 핵심 요소에 기반합니다.
이 전략은 MA 크로스오버를 통해 트렌드를 포착하고 ATR 동적 리스크 컨트롤을 결합하여 트레이딩 시스템을 따르는 완전한 트렌드를 만듭니다. 전략의 강점은 적응력과 리스크 제어 능력에 속하지만 불안정한 시장에서 저성공할 수 있습니다. 트렌드 필터와 돈 관리 시스템의 최적화를 추가함으로써 전략의 전반적인 성능이 향상될 수 있습니다.
/*backtest start: 2024-12-06 00:00:00 end: 2025-01-04 08:00:00 period: 3h basePeriod: 3h 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/ // © davisash666 //@version=5 strategy("Trend-Following Strategy", overlay=true) // Inputs for strategy parameters timeframe = input.timeframe("D", "Timeframe") risk_tolerance = input.float(2.0, "Risk Tolerance (%)", step=0.1) / 100 capital_allocation = input.float(200, "Capital Allocation (%)", step=1) / 100 // Technical indicators (used to emulate machine learning) ma_length_fast = input.int(10, "Fast MA Length") ma_length_slow = input.int(50, "Slow MA Length") atr_length = input.int(14, "ATR Length") atr_multiplier = input.float(1.5, "ATR Multiplier") // Calculations fast_ma = ta.sma(close, ma_length_fast) slow_ma = ta.sma(close, ma_length_slow) atr = ta.atr(atr_length) // Entry and exit conditions long_condition = ta.crossover(fast_ma, slow_ma) short_condition = ta.crossunder(fast_ma, slow_ma) // Risk management stop_loss_long = close - (atr * atr_multiplier) stop_loss_short = close + (atr * atr_multiplier) take_profit_long = close + (atr * atr_multiplier) take_profit_short = close - (atr * atr_multiplier) // Capital allocation position_size = strategy.equity * capital_allocation // Execute trades if long_condition strategy.entry("Long", strategy.long, qty=position_size / close) strategy.exit("Take Profit/Stop Loss", "Long", stop=stop_loss_long, limit=take_profit_long) if short_condition strategy.entry("Short", strategy.short, qty=position_size / close) strategy.exit("Take Profit/Stop Loss", "Short", stop=stop_loss_short, limit=take_profit_short) // Plotting for visualization plot(fast_ma, color=color.green, title="Fast MA") plot(slow_ma, color=color.red, title="Slow MA") plot(stop_loss_long, color=color.blue, title="Stop Loss (Long)", linewidth=1, style=plot.style_cross) plot(take_profit_long, color=color.purple, title="Take Profit (Long)", linewidth=1, style=plot.style_cross)