이 시스템은 트리플 익스포넌셜 모빙어워드 (EMA) 크로스오버 신호를 기반으로 트렌드를 따르는 거래 시스템입니다. 이 시스템은 EMA8, EMA21, EMA89를 결합하여 크로스오버를 통해 거래 신호를 생성하고 리스크와 리워드 비율에 기반한 스마트 스톱 로스 관리를 통합하여 자동화된 리스크 관리를 달성합니다.
시스템은 다음의 핵심 기능 모듈로 구성됩니다.
이 전략은 고전적인 EMA 크로스오버 시스템을 현대적인 리스크 관리 방법과 결합하여 완전한 트렌드-추천 거래 시스템을 달성합니다. 이 시스템의 강점은 신뢰할 수있는 신호 생성 메커니즘과 지능적인 리스크 제어 방법, 그러나 매개 변수는 여전히 최적화되어야하며 실제 응용 분야에서 특정 시장 특성에 따라 기능을 확장해야합니다. 지속적인 개선과 최적화를 통해 전략은 다양한 시장 조건에서 안정적인 성능을 유지할 수 있습니다.
/*backtest start: 2024-12-06 00:00:00 end: 2025-01-04 08:00:00 period: 4h basePeriod: 4h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("EMA Crossover with SL to BE", shorttitle="OmegaGalsky", overlay=true) // Входни параметри ema8_period = input.int(8, title="EMA 8 Period") ema21_period = input.int(21, title="EMA 21 Period") ema89_period = input.int(89, title="EMA 89 Period") fixed_risk_reward = input.float(1.0, title="Risk/Reward Ratio (R2R)") sl_percentage = input.float(0.001, title="Stop Loss Percentage", step=0.0001) tp_percentage = input.float(0.0025, title="Take Profit Percentage", step=0.0001) // Изчисляване на EMA ema8 = ta.ema(close, ema8_period) ema21 = ta.ema(close, ema21_period) ema89 = ta.ema(close, ema89_period) // Условия за BUY buy_condition = ta.crossover(ema8, ema21) and close > ema89 and close > open // Условия за SELL sell_condition = ta.crossunder(ema8, ema21) and close < ema89 and close < open // Вход в BUY позиция if (buy_condition) stop_loss = close * (1 - sl_percentage) take_profit = close * (1 + tp_percentage) strategy.entry("BUY", strategy.long) strategy.exit("TP/SL", from_entry="BUY", stop=stop_loss, limit=take_profit) // Вход в SELL позиция if (sell_condition) stop_loss = close * (1 + sl_percentage) take_profit = close * (1 - tp_percentage) strategy.entry("SELL", strategy.short) strategy.exit("TP/SL", from_entry="SELL", stop=stop_loss, limit=take_profit) // Логика за преместване на стоп към BE if (strategy.position_size > 0) entry_price = strategy.position_avg_price // За LONG позиция if (strategy.position_size > 0 and high >= entry_price + (entry_price * sl_percentage * fixed_risk_reward)) strategy.exit("SL to BE", from_entry="BUY", stop=entry_price) label.new(bar_index, high, "SL moved to BE", color=color.green) // За SHORT позиция if (strategy.position_size < 0 and low <= entry_price - (entry_price * sl_percentage * fixed_risk_reward)) strategy.exit("SL to BE", from_entry="SELL", stop=entry_price) label.new(bar_index, low, "SL moved to BE", color=color.red) // Чертеж на EMA plot(ema8, color=color.orange, title="EMA 8") plot(ema21, color=color.blue, title="EMA 21") plot(ema89, color=color.purple, title="EMA 89")