В процессе загрузки ресурсов... загрузка...

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

Автор:Чао Чжан, Дата: 2024-11-28 17:24:30
Тэги:WPRРСИSMAATRТенденция

img

Обзор

Это адаптивная стратегия, которая сочетает в себе индикаторы волатильности и Williams Percent 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")

Связанные

Больше