
Эта стратегия сочетает в себе случайный шокирующий индикатор Stochastic Oscillator и движущийся средний Moving Average, чтобы создать торговый сигнал, наблюдая за тенденцией перепродажи и перепродажи случайных индикаторов, а также движущихся средних. В то же время, эта стратегия вводит фильтр случайных индикаторов, который может создавать соответствующий торговый сигнал, когда случайная линия K поддерживает определенное количество K ниже 50.
Вычислите случайные показатели колебаний, получив K-линии и D-линии. Параметры могут быть изменены, включая циклы случайных показателей, K-сглаживание, D-сглаживание, зоны сверхпокупок и зоны сверхпродаж.
Вычисляется скользящая средняя, по умолчанию используется цена закрытия, периодичность регулируется.
Расчет фильтра случайных показателей. Когда K-линия поднимается ниже 50 и поддерживает определенную K-линию, создается сигнал фильтрации. Периодичность регулируется.
Условия, при которых генерируется многоголовый сигнал: случайный индикатор пересекается вверх в зоне перепродажи или случайный индикатор фильтрует сигнал и поднимает скользящую среднюю.
Условия для создания пустого сигнала: случайный индикатор пересекается сверхпокупаемой зоной вниз или случайный индикатор фильтрует сигнал, а движущаяся средняя - вниз.
Условия многоглавого плава: пересечение скользящей средней по случайной линии K и смещение средней линии вниз.
Плохая позиция: случайный проход под K-линией по движущемуся среднему значению с переходом средней линии вверх.
Управление позициями использует фиксированный процент, по умолчанию 10%. При этом устанавливается стоп-лосс, по умолчанию 2%
В сочетании с сверхпокупками и сверхпродажами, а также с трендовыми характеристиками, можно отследить падение в тренде.
Фильтр случайных индикаторов позволяет избежать частых сделок во время колебаний.
Параметры Stop Loss помогают контролировать отказ.
Структура кода ясна, параметры настраиваются, подходят для дальнейшей оптимизации.
Рандомные индикаторы имеют определенную отсталость и могут пропускать лучшие точки покупки и продажи.
Недостаточная точность схватывания в точке поворота тренда может привести к более высокой частоте стоп-лосса.
Управление фиксированными пропорциональными капиталами может быть отменено в случае непрерывного убытка.
Внедрение дополнительных фильтров, таких как поведение цены, другие вспомогательные индикаторы и т.д., повышает точность сигналов.
Разделение сильных и слабых сигналов, увеличение позиций при появлении сильных сигналов.
Оптимизируйте свои суждения о переломных моментах, чтобы лучше понять ситуацию.
Для оптимизации управления позициями можно рассмотреть варианты корректировки позиции по сравнению с плавающими прибылями и убытками.
Попробуйте различные комбинации параметров, чтобы найти оптимальный.
Эта стратегия на основе случайных колебательных показателей, в сочетании с движущейся средней для определения тенденции, а также использование самих случайных показателей фильтрации функции, чтобы создать относительно надежный торговый сигнал. Общая идея стратегии ясна, подходящая для использования в условиях тренда. Однако, из-за наличия задержки случайных показателей, может быть плохая производительность в повороте ситуации, в целом адаптивность и грубость ожидает дальнейшего изучения.
/*backtest
start: 2024-03-01 00:00:00
end: 2024-03-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"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 Estocástico + MA con Stop Loss y Filtro Estocástico", 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 = 5000
// Tamaño de posición (10% del capital)
positionSize = capital * 0.10
// Stop Loss (2% del precio de entrada)
stopLossPercent = input.int(2, title="Stop Loss (%)") / 100
// Número de ruedas para el filtro estocástico
filterPeriods = input.int(12, title="Ruedas de Filtro Estocástico")
// 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)
// Filtro estocástico
stochasticFilter = ta.sma(k > 50 ? 1 : 0, filterPeriods)
// Condiciones de entrada en largo y corto
longCondition = (ta.crossunder(k, oversold) or ta.crossover(stochasticFilter, 1)) and ma > ma[1]
shortCondition = (ta.crossover(k, overbought) or ta.crossover(stochasticFilter, 1)) 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")