
Стратегия представляет собой торговую систему для отслеживания тенденций, основанную на многочисленных скользящих средних показателях (EMA) и реальных колебаниях (ATR). Стратегия использует 20 циклов, 50 циклов и 100 циклов, чтобы отслеживать тенденции рынка и использовать ATR для динамического управления рисками и установления целевых показателей прибыли. Этот метод гарантирует как систематичность торгов, так и динамический контроль риска.
Основная логика стратегии основана на взаимодействии цены и множественных ЭМА. В частности:
Эта стратегия, объединенная с системой множественных равноуровневых линий и динамическим контролем ветров ATR, создает торговую систему, включающую в себя отслеживание тенденций и характеристики работы в диапазоне. Преимущества стратегии заключаются в ее сильной систематичности и управляемости рисками, но в практическом применении необходимо обращать внимание на адаптацию к рыночной обстановке и целенаправленно оптимизировать ее в соответствии с реальными обстоятельствами. Благодаря разумной настройке параметров и строгому контролю риска, эта стратегия может обеспечить стабильный торговый эффект в большинстве рыночных условий.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=6
strategy("EMA Swing Strategy with ATR", overlay=true)
// Inputs
emaShort = input.int(20, "Short EMA")
emaMid = input.int(50, "Mid EMA")
emaLong = input.int(100, "Long EMA")
rrRatio = input.float(1.5, "Risk-Reward Ratio")
contracts = input.int(5, "Number of Contracts")
// Calculations
ema20 = ta.ema(close, emaShort)
ema50 = ta.ema(close, emaMid)
ema100 = ta.ema(close, emaLong)
atr = ta.atr(14)
// Conditions
longCondition = ta.crossover(close, ema20) and close > ema50
shortCondition = ta.crossunder(close, ema20) and close < ema50
// Variables for trades
var float entryPrice = na
var float stopLoss = na
var float takeProfit = na
// Long Trades
if (longCondition)
entryPrice := close
stopLoss := close - atr
takeProfit := close + atr * rrRatio
strategy.entry("Long", strategy.long, contracts)
strategy.exit("Exit Long", from_entry="Long", stop=stopLoss, limit=takeProfit)
// Short Trades
if (shortCondition)
entryPrice := close
stopLoss := close + atr
takeProfit := close - atr * rrRatio
strategy.entry("Short", strategy.short, contracts)
strategy.exit("Exit Short", from_entry="Short", stop=stopLoss, limit=takeProfit)
// Plot EMAs
plot(ema20, color=color.green, title="EMA 20")
plot(ema50, color=color.red, title="EMA 50")
plot(ema100, color=color.white, title="EMA 100")
// Visualization for Entries
plotshape(series=longCondition, style=shape.labelup, color=color.green, location=location.belowbar, title="Long Entry")
plotshape(series=shortCondition, style=shape.labeldown, color=color.red, location=location.abovebar, title="Short Entry")