Este é um sistema de negociação de tendência baseado em sinais de cruzamento de média móvel exponencial (EMA) tripla. O sistema combina EMA8, EMA21 e EMA89 para gerar sinais de negociação através de cruzamento e integra gerenciamento inteligente de stop-loss baseado na relação risco-recompensa, alcançando gerenciamento de risco automatizado.
O sistema é constituído pelos seguintes módulos funcionais principais:
A estratégia alcança um sistema de negociação completo seguindo tendências, combinando sistemas de crossover EMA clássicos com métodos modernos de gerenciamento de riscos. Os pontos fortes do sistema estão em seu mecanismo confiável de geração de sinal e métodos inteligentes de controle de risco, mas os parâmetros ainda precisam ser otimizados e as funções estendidas com base em características específicas do mercado em aplicações práticas. Através da melhoria e otimização contínuas, a estratégia tem o potencial de manter um desempenho estável em várias condições de mercado.
/*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")