Il s'agit d'un système de négociation basé sur des signaux croisés de triple moyenne mobile exponentielle (EMA). Le système combine EMA8, EMA21 et EMA89 pour générer des signaux de négociation via des croisements, et intègre une gestion intelligente du stop-loss basée sur le ratio risque/rendement, permettant une gestion automatisée des risques.
Le système est composé des modules fonctionnels de base suivants:
La stratégie réalise un système de trading complet suivant les tendances en combinant les systèmes de croisement EMA classiques avec des méthodes modernes de gestion des risques. Les forces du système résident dans son mécanisme fiable de génération de signaux et ses méthodes intelligentes de contrôle des risques, mais les paramètres doivent encore être optimisés et les fonctions étendues en fonction des caractéristiques spécifiques du marché dans les applications pratiques. Grâce à l'amélioration et à l'optimisation continues, la stratégie a le potentiel de maintenir une performance stable dans diverses conditions de marché.
/*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")