
Este es un sistema de trading de seguimiento de tendencias basado en señales de cruce de la media móvil exponencial triple (EMA). El sistema combina tres medias móviles, EMA8, EMA21 y EMA89, genera señales comerciales a través del cruce de medias móviles e integra una función de stop-loss móvil inteligente basada en la relación riesgo-retorno para lograr una gestión automatizada del riesgo.
El sistema incluye principalmente los siguientes módulos funcionales principales:
Esta estrategia implementa un sistema completo de trading de seguimiento de tendencias combinando el clásico sistema de cruce de medias móviles con métodos modernos de gestión de riesgos. Las ventajas del sistema radican en su mecanismo confiable de generación de señales y su método inteligente de control de riesgos, pero en aplicaciones prácticas aún se requiere la optimización de parámetros y la expansión de funciones según las características específicas del mercado. Se espera que mediante la mejora y optimización continuas, la estrategia mantenga un desempeño estable en diversos entornos 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")