Эта стратегия сочетает в себе стохастический осциллятор с скользящей средней, генерируя торговые сигналы путем наблюдения за условиями перекупки и перепродажи стохастического индикатора и тенденцией скользящей средней. Она производит короткий сигнал, когда стохастический индикатор находится в зоне перекупки и скользящая средняя находится вниз, и длинный сигнал, когда находится в зоне перепродажи и скользящая средняя находится вверх. Кроме того, стратегия вводит фильтр стохастического индикатора, который также может генерировать соответствующие торговые сигналы, когда стохастическая линия K пересекает линию D после пребывания ниже 50 на определенное количество K-линий. Стратегия также устанавливает Stop Loss для контроля риска.
Вычислите стохастический осциллятор, чтобы получить линию K и линию D. Параметры регулируемы, включая стохастический период, сглаживание K, сглаживание D, зону перекупления и зону перепродажи.
Вычислить скользящую среднюю, используя по умолчанию цену закрытия, с регулируемым периодом.
Когда линия K остается ниже 50 в течение определенного количества линий K, она генерирует сигнал фильтра.
Условия получения длинного сигнала: Стохастический индикатор пересекается вверх в зоне перепроданности ОЛЬШЕ фильтрный сигнал стохастического индикатора И скользящая средняя показатель вверх.
Условия для генерации короткого сигнала: Стохастический индикатор пересекает вниз в зоне перекупленности ОЛЬШЕ Сигнал фильтра стохастического индикатора И скользящая средняя вниз.
Условие закрытия длинной позиции: Стохастическая линия K пересекает переходную среднюю и средняя поворачивается вниз.
Условие закрытия короткой позиции: Стохастическая линия K пересекается ниже скользящей средней и средняя поворачивается вверх.
Управление позициями использует фиксированный процент средств, 10% по умолчанию.
Сочетая характеристики перекупленности/перепроданности и тенденции, он может преследовать и уничтожать тенденцию.
Фильтр стохастического индикатора позволяет избегать частой торговли на колеблющихся рынках.
Настройка 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")