
Стратегия представляет собой количественную торговую систему, которая объединяет двойную экспоненциальную скользящую среднюю (EMA) и стохастический осциллятор. Используйте 20- и 50-периодные EMA для определения рыночных трендов, а также стохастический осциллятор для поиска торговых возможностей в зонах перекупленности и перепроданности, достигая идеального сочетания тренда и импульса. Стратегия использует строгие меры управления рисками, включая фиксированные настройки стоп-лосса и целевой прибыли.
Основная логика стратегии делится на три части: оценка тренда, выбор времени входа и контроль риска. Оценка тренда в основном основывается на относительном положении быстрой EMA (20 периодов) и медленной EMA (50 периодов). Когда быстрая линия находится выше медленной линии, это считается восходящим трендом, в противном случае это нисходящий тренд . Сигнал на вход подтверждается пересечением стохастического осциллятора, что позволяет искать высоковероятные торговые возможности в зонах перекупленности и перепроданности. Контроль рисков использует фиксированный процент стоп-лосса и двукратный коэффициент тейк-профита, чтобы гарантировать, что каждая транзакция имеет четкое соотношение риска и доходности.
Эта стратегия объединяет индикаторы тренда и импульса для создания полноценной торговой системы. Основное преимущество стратегии заключается в ее четкой логической структуре и строгом контроле рисков, однако при практическом применении все равно требуется оптимизация параметров с учетом конкретных рыночных условий. Ожидается, что благодаря постоянному совершенствованию и оптимизации стратегия будет поддерживать стабильную эффективность в различных рыночных условиях.
/*backtest
start: 2024-12-06 00:00:00
end: 2025-01-04 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=6
strategy("EMA + Stochastic Strategy", overlay=true)
// Inputs for EMA
emaShortLength = input.int(20, title="Short EMA Length")
emaLongLength = input.int(50, title="Long EMA Length")
// Inputs for Stochastic
stochK = input.int(14, title="Stochastic %K Length")
stochD = input.int(3, title="Stochastic %D Smoothing")
stochOverbought = input.int(85, title="Stochastic Overbought Level")
stochOversold = input.int(15, title="Stochastic Oversold Level")
// Inputs for Risk Management
riskRewardRatio = input.float(2.0, title="Risk-Reward Ratio")
stopLossPercent = input.float(1.0, title="Stop Loss (%)")
// EMA Calculation
emaShort = ta.ema(close, emaShortLength)
emaLong = ta.ema(close, emaLongLength)
// Stochastic Calculation
k = ta.stoch(high, low, close, stochK)
d = ta.sma(k, stochD)
// Trend Condition
isUptrend = emaShort > emaLong
isDowntrend = emaShort < emaLong
// Stochastic Signals
stochBuyCrossover = ta.crossover(k, d)
stochBuySignal = k < stochOversold and stochBuyCrossover
stochSellCrossunder = ta.crossunder(k, d)
stochSellSignal = k > stochOverbought and stochSellCrossunder
// Entry Signals
buySignal = isUptrend and stochBuySignal
sellSignal = isDowntrend and stochSellSignal
// Strategy Execution
if buySignal
strategy.entry("Buy", strategy.long)
stopLoss = close * (1 - stopLossPercent / 100)
takeProfit = close * (1 + stopLossPercent * riskRewardRatio / 100)
strategy.exit("Take Profit/Stop Loss", from_entry="Buy", stop=stopLoss, limit=takeProfit)
if sellSignal
strategy.entry("Sell", strategy.short)
stopLoss = close * (1 + stopLossPercent / 100)
takeProfit = close * (1 - stopLossPercent * riskRewardRatio / 100)
strategy.exit("Take Profit/Stop Loss", from_entry="Sell", stop=stopLoss, limit=takeProfit)
// Plotting
plot(emaShort, color=color.blue, title="Short EMA")
plot(emaLong, color=color.red, title="Long EMA")