Стратегия многочасового стохастического перекрестного действия - это типичная стратегия, следующая за трендом. Она рассчитывает значения стандартного отклонения в разных временных рамках (например, ежедневно, еженедельно, ежемесячно и т. Д.), Конструирует несколько линий K и D, принимает среднее значение этих линий для построения скользящих средних, и длится, когда быстрая линия пересекает над медленной линией, и коротко, когда быстрая линия пересекает ниже медленной линии. Объединяя линии стандартного отклонения в разных временных рамках, эта стратегия может эффективно фильтровать шум рынка и улавливать преобладающую тенденцию.
Основная логика этой стратегии заключается в вычислении стандартного отклонения за несколько временных рамок, а затем в среднем для получения торговых сигналов.
Во-первых, стратегия рассчитывает K-значения стандартного отклонения по различным параметрам в пяти группах, соответствующих ежедневным, еженедельным и месячным временным рамкам:
smoothK = input(55)
SMAsmoothK = input(13)
k = sma(stoch(price, high, low, smoothK), SMAsmoothK)
smoothK1 = input(89)
SMAsmoothK1 = input(8)
k1 = sma(stoch(price, high, low, smoothK1), SMAsmoothK1)
...
smoothK4 = input(377)
SMAsmoothK4 = input(2)
k4 = sma(stoch(price, high, low, smoothK4), SMAsmoothK4)
Затем он вычисляет D прямых с различными параметрами соответственно:
smoothD = input(34)
d = sma(k, smoothD)
...
smoothD4 = input(233)
d4 = sma(k4, smoothD4)
Далее он вычисляет среднее значение линий K и D, чтобы получить быструю линию Kavg и медленную линию Davg:
Kavg = avg(k,k1,k2,k3,k4)
Davg = avg(d,d1,d2,d3,d4)
Наконец, он длинный, когда Кавг пересекается над Давгом, и короткий, когда Кавг пересекается ниже Давга:
long = crossover(Kavg, Davg)
short = crossunder(Kavg, Davg)
Объединяя линии стандартного отклонения в нескольких временных рамках, эта стратегия может отфильтровать рыночный шум в более крупные временные рамки и улавливать преобладающее направление тренда.
Решения:
Добавить фильтры, чтобы избежать ложных сигналов прорыва
Использование адаптивных периодов на основе волатильности рынка
Используйте последующие остановки для своевременного выхода сделок
Оптимизировать периоды скользящих средних для наилучшего баланса
Включить больше показателей для повышения надежности
Эта стратегия может быть еще улучшена в следующих областях:
Включить другие индикаторы сигналов, такие как MACD, полосы Боллинджера для улучшения качества сигнала
Добавление фильтров тренда, таких как направление SMA, ADX, чтобы избежать контратендных сделок
Использование адаптивных периодов на основе волатильности рынка
Внедрять последующие остановки на основе параметров стратегии для выхода из торгов
Оптимизировать периоды быстрой и медленной скользящей средней для лучших параметров
Добавить фильтры для входа, чтобы избежать ложных сигналов от короткого шума
Пробный прорыв после перекрестки скользящих средних
Оценить различные стратегии выхода, такие как Chandelier Exit для оптимизации выходов
Стратегия Multi Timeframe Stochastic Crossover сочетает в себе следующую тенденцию способность стохастического индикатора и стабильность движущихся средних стратегий. Принимая средние из многопериодных стандартных отклонений K и D линий для генерации сигналов, она эффективно использует предсказательную силу стандартного отклонения в разных временных рамках, отфильтровывает шум рынка и улавливает преобладающий тренд. Эта стратегия имеет место для настройки параметров и дальнейших улучшений, таких как фильтры, остановки и т. Д. В целом, она интегрирует сильные стороны нескольких инструментов технического анализа и является эффективной стратегией тренда, достойной изучения и оптимизации.
/*backtest start: 2023-09-23 00:00:00 end: 2023-10-23 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy(title="Slow Stochastic Multi K&D Average Crossover Strategy", overlay=false, pyramiding=0, calc_on_order_fills=true, initial_capital=100000, default_qty_type=strategy.percent_of_equity, currency="USD", default_qty_value=100) price = input(close) /////////////////////////////// smoothK = input(55) SMAsmoothK = input(13) k = sma(stoch(price, high, low, smoothK), SMAsmoothK) smoothD = input(34) d = sma(k, smoothD) /////////////////////////// smoothK1 = input(89) SMAsmoothK1 = input(8) k1 = sma(stoch(price, high, low, smoothK1), SMAsmoothK1) smoothD1 = input(55) d1 = sma(k1, smoothD1) ////////////////////////////////////// smoothK2 = input(144) SMAsmoothK2 = input(5) k2 = sma(stoch(price, high, low, smoothK2), SMAsmoothK2) smoothD2 = input(89) d2 = sma(k2, smoothD2) ///////////////////////////////////// smoothK3 = input(233) SMAsmoothK3 = input(3) k3 = sma(stoch(price, high, low, smoothK3), SMAsmoothK3) smoothD3 = input(144) d3 = sma(k3, smoothD3) //////////////////////////////////////////////// smoothK4 = input(377) SMAsmoothK4 = input(2) k4 = sma(stoch(price, high, low, smoothK4), SMAsmoothK4) smoothD4 = input(233) d4 = sma(k4, smoothD4) ///////////////////////////////////////////////// Kavg = avg(k,k1,k2,k3,k4, k4) plot(Kavg, color=green) Davg = avg(d,d1,d2,d3,d4, d4) plot(Davg, color=red) /////////////////////////////////////// hline(50, color=gray) long = crossover(Kavg, Davg)// and d < 50 short = crossunder(Kavg, Davg)// and d > 50 last_long = long ? time : nz(last_long[1]) last_short = short ? time : nz(last_short[1]) long_signal = crossover(last_long, last_short) short_signal = crossover(last_short, last_long) strategy.entry("Long", strategy.long, when=long_signal) strategy.entry("Short", strategy.short, when=short_signal) //len1 = input(3) //closelong = d[1] < k[len1] //closeshort = d[1] > k[len1] //strategy.close("Long", when=closelong) //strategy.close("Short", when=closeshort)