
Это торговая стратегия, основанная на перекрестных 15-циклических и 50-циклических индексных скользящих средних (EMA). Стратегия реализует оптимальный контроль риска-прибыли через интеллектуальные настройки стоп-лосса и выигрыша. Стратегия может не только улавливать сигналы об обратном тренде, но и автоматически корректировать торговые параметры в зависимости от рыночных колебаний, что повышает стабильность и прибыльность стратегии.
Основная логика стратегии основана на перекрестном сигнале быстрого EMA ((15 циклов) и медленного EMA ((50 циклов)). Когда быстрая линия проходит медленную линию, система генерирует многосигналный сигнал; когда быстрая линия проходит медленную линию, система генерирует пустой сигнал. Для оптимизации управления рисками в стратегии используется метод динамического стоп-лоска, то есть минимальная открытая цена на предыдущие 2 K-линии используется в качестве многоголовной остановки, а максимальная открытая цена - в качестве пустой остановки.
Это целостная, логически ясная и равнолинейная кросс-стратегия. Благодаря сочетанию классических методов технического анализа с современными технологиями управления рисками, стратегия достигает лучших характеристик риска и прибыли. Несмотря на то, что существует определенный простор для оптимизации, основная структура стратегии обладает хорошей практичностью и масштабируемостью.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-11 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("EMA Cross - Any Direction", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=30)
// Input for EMAs
ema_short_length = input(15, title="Short EMA Length")
ema_long_length = input(50, title="Long EMA Length")
// Calculate EMAs
ema_short = ta.ema(close, ema_short_length)
ema_long = ta.ema(close, ema_long_length)
// Plot EMAs
plot(ema_short, color=color.blue, title="15 EMA")
plot(ema_long, color=color.red, title="50 EMA")
// Entry Conditions (Any EMA Cross)
cross_condition = ta.crossover(ema_short, ema_long) or ta.crossunder(ema_short, ema_long)
// Determine Trade Direction
is_long = ta.crossover(ema_short, ema_long)
is_short = ta.crossunder(ema_short, ema_long)
// Stop Loss and Take Profit
long_stop_loss = ta.lowest(open[1], 2) // Lowest open of the last 2 candles
short_stop_loss = ta.highest(open[1], 2) // Highest open of the last 2 candles
long_take_profit = close + 2 * (close - long_stop_loss)
short_take_profit = close - 2 * (short_stop_loss - close)
// Execute Trades
if (cross_condition)
if (is_long)
strategy.entry("Long", strategy.long)
strategy.exit("Exit Long", "Long", stop=long_stop_loss, limit=long_take_profit)
else if (is_short)
strategy.entry("Short", strategy.short)
strategy.exit("Exit Short", "Short", stop=short_stop_loss, limit=short_take_profit)
// Plot Stop Loss and Take Profit Levels
plot(long_stop_loss, color=color.orange, title="Long Stop Loss", style=plot.style_circles, linewidth=2)
plot(long_take_profit, color=color.green, title="Long Take Profit", style=plot.style_circles, linewidth=2)
plot(short_stop_loss, color=color.orange, title="Short Stop Loss", style=plot.style_circles, linewidth=2)
plot(short_take_profit, color=color.red, title="Short Take Profit", style=plot.style_circles, linewidth=2)