Адаптивный диапазон волатильности тренда следования стратегии торговли

WPR RSI SMA ATR Trend
Дата создания: 2024-11-28 17:24:30 Последнее изменение: 2024-11-28 17:24:30
Копировать: 4 Количество просмотров: 452
1
Подписаться
1617
Подписчики

Адаптивный диапазон волатильности тренда следования стратегии торговли

Обзор

Это адаптивная стратегия для отслеживания тенденций, основанная на волатильности и сочетании с Williams Percent Range (Уильямсом). Стратегия корректирует чувствительность к трендовым суждениям, рассчитывая диапазон ценовых колебаний и пользовательские счетчики, что позволяет лучше адаптироваться к различным рыночным условиям.

Стратегический принцип

Сначала стратегия рассчитывает диапазон колебаний цены (Range) и его среднее значение (AvgRange) в течение одного периода. Для записи частоты значительных колебаний используются два счетчика (TrueCount и TrueCount2), которые сравнивают изменения цены в реальном времени и их отношение к среднему колебательному диапазону. Эти счетчики используются для динамической корректировки вычисленных параметров индекса Уильяма, что позволяет стратегии автоматически корректировать его чувствительность в зависимости от состояния колебаний рынка.

Стратегические преимущества

  1. Устойчивость - благодаря механизму адаптации к колебаниям, стратегия может стабильно работать в различных рыночных условиях
  2. Управление рисками - встроенный параметр риска RISK позволяет трейдеру регулировать интенсивность стратегии в соответствии с его собственными предпочтениями риска
  3. Сигнал ясен - используйте четкий механизм прорыва сигнала, чтобы избежать ложного сигнала
  4. Хорошая масштабируемость - рамка стратегий позволяет внедрять другие технические показатели для оптимизации
  5. Высокая вычислительная эффективность - использование простых и эффективных методов вычислений для реальных операций

Стратегический риск

  1. Чувствительность параметров - выбор параметров ASClength и RISK значительно влияет на эффективность стратегии
  2. Зависимость от рыночных условий - возможна переоценка сигналов в условиях нестабильных рынков
  3. Отсталость - использование движущихся средних может привести к определенной задержке входа и выхода из игры
  4. Ложный прорыв - ложный сигнал может возникнуть в период высоких колебаний Рекомендуется снижение риска путем отслеживания параметров оптимизации в сочетании с другими подтверждающими показателями.

Направление оптимизации стратегии

  1. Внедрение показателей объема сделок - подтверждение эффективности изменения тенденции через объем сделок
  2. Оптимизация логики счетчика - можно рассмотреть возможность использования более сложных статистических методов для оценки рыночных колебаний
  3. Добавление механизма остановки убытков - рекомендуется ввести динамическую остановку для лучшего управления рисками
  4. Фильтрация рыночной конъюнктуры - добавление модуля оценки рыночной конъюнктуры, чтобы избежать торговли в неблагоприятных рыночных условиях
  5. Параметрная адаптация - разработка механизмов автоматической оптимизации параметров для повышения адаптивности стратегии

Подвести итог

Это инновационная стратегия, которая сочетает в себе анализ волатильности и отслеживание тенденций, повышает стабильность и надежность стратегии с помощью адаптивных механизмов. Несмотря на наличие некоторых присущих рисков, благодаря разумной настройке параметров и реализации оптимизированного направления, стратегия имеет хорошие шансы на стабильную производительность в различных рыночных условиях.

Исходный код стратегии
/*backtest
start: 2024-10-28 00:00:00
end: 2024-11-27 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("ASCTrend", shorttitle="ASCTrend", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

eternalfg = input(false, title="eternal 確定")
eternal = eternalfg ? 1 : 0
ASClength = input.int(title="ASC Length", minval=4, defval=10)
RISK = input.int(title="RISK", minval=0, defval=3)

// Custom sum function
customSum(source, length) =>
    sum = 0.0
    for i = 0 to length - 1
        sum := sum + source[i]
    sum

x1 = 67 + RISK
x2 = 33 - RISK
Range = ta.highest(ASClength) - ta.lowest(ASClength)
AvgRange = ta.sma(Range, ASClength)
CountFg = math.abs(open - close) >= AvgRange * 2.0 ? 1 : 0
TrueCount = customSum(CountFg, ASClength)
CountFg2 = math.abs(close[3] - close) >= AvgRange * 4.6 ? 1 : 0
TrueCount2 = customSum(CountFg2, ASClength - 3)
wpr3RR = ta.wpr(3 + RISK + RISK)
wpr3 = ta.wpr(3)
wpr4 = ta.wpr(4)
WprAbs = 100 + (TrueCount2 > 0 ? wpr4 : TrueCount > 0 ? wpr3 : wpr3RR)
ASC_Trend = 0
ASC_Trend := WprAbs[eternal] < x2[eternal] ? -1 : WprAbs[eternal] > x1[eternal] ? 1 : ASC_Trend[1]

if (ta.crossover(ASC_Trend, 0))
    strategy.entry("Long", strategy.long)

if (ta.crossunder(ASC_Trend, 0))
    strategy.entry("Short", strategy.short)

plotshape(ta.crossover(ASC_Trend, 0), location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small, text="B", textcolor=color.white)
plotshape(ta.crossunder(ASC_Trend, 0), location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small, text="S", textcolor=color.white)

alertcondition(ta.crossover(ASC_Trend, 0), title="ASC_Trend UP", message="ASC_Trend UP")
alertcondition(ta.crossunder(ASC_Trend, 0), title="ASC_Trend Down", message="ASC_Trend Down")