
Стратегия является системой торговли, которая отслеживает тенденции, основанные на двухуровневых скользящих средних (EMA). Стратегия использует две линии EMA с 44-ми и 200-ми циклами, чтобы определить направление торговли в сочетании с ценовыми прорывными сигналами. При этом интегрирован механизм управления рисками, включая динамическое расчетные позиции и мобильные стоп-лоры.
Основная логика стратегии основана на взаимосвязи цены с двумя линиями EMA. Используются 44-циклические EMA для формирования верхних и нижних каналов, а 200-циклические EMA - как фильтры для долгосрочных тенденций. Система генерирует многосигналы, когда цена закрытия пробивает поверхнюю EMA и удовлетворяет условиям фильтрации 200 EMA. Система генерирует пустые сигналы, когда цена закрытия падает поверхнюю EMA и удовлетворяет условиям фильтрации 200 EMA.
Это целостная, логически ясная стратегия отслеживания тенденций. Обеспечение торговых сигналов с помощью двойных каналов EMA и фильтрации долгосрочных тенденций, в сочетании с совершенным механизмом управления рисками, имеет хорошую практическую полезность.
/*backtest
start: 2024-02-25 00:00:00
end: 2024-03-17 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"SOL_USDT"}]
*/
//@version=5
strategy("RENTABLE Dual EMA Breakout TSLA ", overlay=true)
// Inputs for EMA lengths and risk per trade
length = input(44, title="EMA Length")
longTermLength = input(200, title="Long-Term EMA Length")
riskPerTrade = input.float(1.0, title="Risk per Trade (%)", minval=0.1, maxval=10.0)
// Additional inputs for strategy customization
useFilter = input.bool(true, title="Use 200 EMA Filter")
tradeDirection = input.string("Both", title="Trade Direction", options=["Long", "Short", "Both"])
// EMAs based on the high and low prices and long-term EMA
emaHigh = ta.ema(high, length)
emaLow = ta.ema(low, length)
ema200 = ta.ema(close, longTermLength)
// Plotting EMAs on the chart
plot(emaHigh, color=color.green, title="High EMA")
plot(emaLow, color=color.red, title="Low EMA")
plot(ema200, color=color.blue, title="200 EMA")
// Entry conditions with optional EMA filter
longCondition = close > emaHigh and (useFilter ? close > ema200 : true)
shortCondition = close < emaLow and (useFilter ? close < ema200 : true)
// Calculating stop-loss and position size
longStop = emaLow
shortStop = emaHigh
riskPerShareLong = close - longStop
riskPerShareShort = shortStop - close
equity = strategy.equity
// Ensure risk per share is positive for calculations
riskPerShareLong := riskPerShareLong > 0 ? riskPerShareLong : 0.01
riskPerShareShort := riskPerShareShort > 0 ? riskPerShareShort : 0.01
positionSizeLong = (equity * riskPerTrade / 100) / riskPerShareLong
positionSizeShort = (equity * riskPerTrade / 100) / riskPerShareShort
// Ensure position sizes are positive before entering trades
if (longCondition and (tradeDirection == "Long" or tradeDirection == "Both") and positionSizeLong > 0)
strategy.entry("Long", strategy.long, qty= positionSizeLong)
if (shortCondition and (tradeDirection == "Short" or tradeDirection == "Both") and positionSizeShort > 0)
strategy.entry("Short", strategy.short, qty=positionSizeShort)
// Applying the stop-loss to strategy
strategy.exit("Exit Long", "Long", stop=longStop)
strategy.exit("Exit Short", "Short", stop=shortStop)
////Usar en 1,2 3 4 HRS TSLA