Система балансовых точек тренда Уэллса Уайлдера

Автор:Чао Чжан, Дата: 23 сентября 2023 года 15:30:58
Тэги:

Обзор

Это оригинальная система баланса точек тренда, созданная Уэллесом Уайлдером в 1978 году, с правилами, найденными в его книге "Новые концепции в технических торговых системах".

Логика стратегии

Ключевыми компонентами и правилами являются:

  1. Индикатор импульса: рассчитывает изменение цены за N периодов для определения тенденции.

  2. Долгое состояние: рост импульса за текущий и два предыдущих периода.

  3. Короткое состояние: падение импульса за текущий и два предыдущих периода.

  4. Стоп-лосс: средняя цена предыдущего дня ± диапазон предыдущего дня.

  5. Приобретение прибыли: 2 * средняя цена предыдущего дня - предыдущий день низкий (длинный) или высокий (короткий).

  6. Выходы с остановкой или целью после входа.

Стратегия напрямую использует импульс для определения тренда и структурированный подход "стоп/цель" для контроля риска и формирования надежной системы следования тренду.

Преимущества

По сравнению с другими стратегиями, следующими за тенденцией, основными преимуществами являются:

  1. Простой расчет импульса, легко внедряемый.

  2. Мультипериодические фильтры.

  3. Структурированная остановка / цель надежна.

  4. Ограничения по потерям на одну сделку.

  5. Снижение контролируемое, получение прибыли чистое.

  6. Легко управлять гибко.

  7. Параметры регулируемые для различных рынков.

  8. Интуитивная и простая логика.

  9. В целом хорошая стабильность и контроль рисков.

Риски

Однако риски заключаются:

  1. Задержка импульса может пропустить ключевые повороты.

  2. Производительность зависит от настройки параметров.

  3. Без фильтра на громкость, риск попасть в ловушку.

  4. Настройки остановки и цели жесткие, могут не работать на практике.

  5. Ограниченный период обратных испытаний, необходимо проверить долгосрочную надежность.

  6. Фиксированный размер не имеет динамической настройки.

  7. Ограниченное пространство для оптимизации, неопределенный альфа.

  8. Нужно следить за соотношением вознаграждения/риска и корректировкой кривой.

Усовершенствования

В свете анализа улучшения могут включать:

  1. Проверяю разные расчеты импульса.

  2. Добавляю подтверждение объема.

  3. Оптимизирую параметры остановки и цели.

  4. Внедрение машинного обучения для динамических сигналов.

  5. Оценка надежности на основе различных продуктов и сроков.

  6. Построение динамических моделей размеров позиций.

  7. Установление максимально допустимого лимита использования.

  8. Оптимизация стратегий управления рисками.

  9. Постоянное обратное тестирование для предотвращения перенастройки.

Заключение

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


/*backtest
start: 2023-09-15 00:00:00
end: 2023-09-22 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © 2020 X-Trader.net

//@version=3
strategy("Trend Balance Point System by Welles Wilder", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital = 10000)

MomPer = input(2, "Momentum Period")

isLong = strategy.position_size > 0
isShort = strategy.position_size < 0

longTrigger = mom(close, MomPer)[1] > mom(close, MomPer)[2] and mom(close, MomPer)[1] > mom(close, MomPer)[3]
shortTrigger = mom(close, MomPer)[1] < mom(close, MomPer)[2] and mom(close, MomPer)[1] < mom(close, MomPer)[3]

longEntry = (not isLong) and longTrigger 
shortEntry = (not isShort) and shortTrigger

longStop = valuewhen(longEntry, ((high[1]+low[1]+close[1])/3 - (high[1]-low[1])), 0)
longTP = valuewhen(longEntry, (2*(high[1]+low[1]+close[1])/3 - low[1]), 0)
shortStop = valuewhen(shortEntry, ((high[1]+low[1]+close[1])/3 + (high[1]-low[1])), 0)
shortTP = valuewhen(shortEntry, (2*(high[1]+low[1]+close[1])/3 - high[1]), 0)

strategy.entry(id = "Long", long = true, when = longEntry)
strategy.exit("Exit Long", "Long", profit = longTP, loss = longStop, when = isLong) 

strategy.entry(id = "Short", long = false, when = shortEntry)
strategy.exit("Exit Short", "Short", profit = shortTP, loss = shortStop, when = isShort) 



Больше