이 전략은 적응적인 모멘텀과 마틴게일 포지션 관리를 결합한 완전히 자동화된 거래 시스템이다. 자동 인코더 평형화, CNN-시뮬레이션 모멘텀 특징 추출 및 변동성 기반 무역 신호 필터링을 포함한 시장 분석을 위해 여러 가지 기술적 지표를 활용한다. 시스템은 고정된 영리 및 스톱 로스 레벨을 통해 위험과 보상 사이의 균형을 유지하면서 마틴게일 방법을 사용하여 포지션 크기를 동적으로 조정한다.
이 전략은 세 가지 핵심 모듈을 기반으로 합니다.
이 전략은 현대적인 양적 거래 기술을 고전적인 마르틴게일 방법과 결합하여 이론적 기초와 실용성을 모두 갖춘 거래 시스템을 만듭니다. 특정 위험이 존재하지만 적절한 매개 변수 설정과 엄격한 위험 통제를 통해 전략은 암호화폐 시장에서 안정적인 수익을 달성하는 것을 약속합니다.
/*backtest start: 2024-12-06 00:00:00 end: 2025-01-04 08:00:00 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Adaptive Crypto Trading Strategy with Martingale", shorttitle = "ACTS_w_MG_V1",overlay=true) // Inputs smoothing_length = input.int(14, title="Smoothing Length (Autoencoder)") momentum_window = input.int(21, title="Momentum Window (CNN)") volatility_threshold = input.float(0.02, title="Volatility Threshold (GAN Simulation)") take_profit = input.float(0.05, title="Take Profit (%)") stop_loss = input.float(0.02, title="Stop Loss (%)") // Martingale Inputs base_lot_size = input.float(1, title="Base Lot Size") // Initial trade size multiplier = input.float(2, title="Martingale Multiplier") // Lot size multiplier after a loss max_lot_size = input.float(2, title="Maximum Lot Size") // Cap on lot size var float lot_size = base_lot_size // Initialize the lot size // Step 1: Data Smoothing (Autoencoder) smoothed_price = ta.sma(close, smoothing_length) // Step 2: Feature Extraction (Momentum - CNN Simulation) momentum = ta.sma(close, momentum_window) - close volatility = ta.stdev(close, momentum_window) // Step 3: Entry Conditions (GAN-Inspired Pattern Detection) long_condition = (momentum > 0 and volatility > volatility_threshold) short_condition = (momentum < 0 and volatility > volatility_threshold) // Martingale Logic if (strategy.closedtrades > 0) if (strategy.closedtrades.profit(strategy.closedtrades - 1) < 0) lot_size := math.min(lot_size * multiplier, max_lot_size) // Increase lot size after a loss, but cap it else lot_size := base_lot_size // Reset lot size after a win or on the first trade // Step 4: Take Profit and Stop Loss Management long_take_profit = close * (1 + take_profit) long_stop_loss = close * (1 - stop_loss) short_take_profit = close * (1 - take_profit) short_stop_loss = close * (1 + stop_loss) // Execute Trades if (long_condition) strategy.entry("Long", strategy.long, qty=lot_size, stop=long_stop_loss, limit=long_take_profit) if (short_condition) strategy.entry("Short", strategy.short, qty=lot_size, stop=short_stop_loss, limit=short_take_profit)