
Эта стратегия объединяет в себе случайный шокирующий индикатор (стохастический осциллятор) и движущуюся среднюю (движущуюся среднюю) для оценки состояния перекупа и перепродажи на рынке и для определения направления торговли в соответствии с направлением тренда движущейся средней. Стратегия открывает позиции плюс-оф, когда случайный шокирующий индикатор пересекает верхнюю часть зоны перепродажи, а движущаяся средняя имеет тенденцию к повышению; стратегия открывает позиции пустых позиций, когда случайная шокирующая индикатор пересекает нижнюю часть зоны перекупа, а движущаяся средняя имеет тенденцию к снижению.
Стратегия использует движущиеся средние для фильтрации торговых сигналов и установки остановок для контроля риска, используя в сочетании с случайными шокирующими показателями и движущимися средними, чтобы захватить рынок в перепродаже, и установить остановку для контроля риска. Идея стратегии ясна, ее легко понять и реализовать. Однако, стратегия также имеет некоторые ограничения, такие как задержка показателей, частота торговли и т. д.
/*backtest
start: 2024-04-22 00:00:00
end: 2024-04-29 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Pablo_2uc
//@version=5
strategy("Estrategia Stoch + MA c/ SL", overlay=true)
// Parámetros del Estocástico
length = input.int(14, title="Longitud Estocástico")
smoothK = input.int(3, title="Suavizado K")
smoothD = input.int(3, title="Suavizado D")
oversold = input.int(20, title="Sobreventa")
overbought = input.int(80, title="Sobrecompra")
// Parámetros de la Media Móvil
maLength = input.int(9, title="Longitud MA")
maSource = input(close, title="Fuente MA")
// Capital inicial
capital = 500
// Tamaño de posición (10% del capital)
positionSize = 1
// Stop Loss (2% del precio de entrada)
stopLossPercent = input.int(2, title="Stop Loss (%)") / 100
// Cálculo del Estocástico
k = ta.sma(ta.stoch(close, high, low, length), smoothK)
d = ta.sma(k, smoothD)
// Cálculo de la Media Móvil
ma = ta.sma(maSource, maLength)
// Condiciones de entrada en largo y corto
longCondition = ta.crossunder(k, oversold) and ma > ma[1]
shortCondition = ta.crossover(k, overbought) and ma < ma[1]
// Condiciones de salida
exitLongCondition = ta.crossover(k, ma) and ma < ma[1]
exitShortCondition = ta.crossunder(k, ma) and ma > ma[1]
// Estrategia
if (longCondition)
strategy.entry("Long", strategy.long, qty=positionSize)
strategy.exit("Exit Long", "Long", stop=close * (1 - stopLossPercent))
if (shortCondition)
strategy.entry("Short", strategy.short, qty=positionSize)
strategy.exit("Exit Short", "Short", stop=close * (1 + stopLossPercent))
// Cierre de posiciones
if (exitLongCondition)
strategy.close("Long")
if (exitShortCondition)
strategy.close("Short")