Количественная стратегия торговли, основанная на улучшенном индикаторе вихря

Автор:Чао Чжан, Дата: 2023-11-14 14:40:54
Тэги:

img

Обзор

Эта стратегия является обновленной версией стратегии Vortex Indicator. Основанная на оригинальном Vortex Indicator, она включает в себя несколько новых функций, включая запуск сделок на основе порога, сглаживание линий вихря с EMA, добавление стоп-лосса и получения прибыли, реализацию только длинных, коротких или длинных/коротких стратегий и т. Д. Она подходит для инвесторов, которые хотят применять улучшенный Vortex Indicator в количественной торговле.

Принципы

Основным индикатором этой стратегии является улучшенный индикатор вихря. Традиционный индикатор вихря формирует положительные и отрицательные линии вихря, рассчитывая абсолютную сумму колебаний цен. Когда положительная линия переходит выше отрицательной линии, она посылает сигнал покупки. Когда отрицательная линия переходит ниже положительной линии, она посылает сигнал продажи.

Эта стратегия делает следующие обновления традиционного индикатора вихре:

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

  2. Линии вихря сглажены ЭМА, чтобы уменьшить колебания кривой.

  3. Добавлены функции Stop Loss и Take Profit. Соотношения Loss/Profit могут быть заранее настроены для лучшего контроля рисков.

  4. Трейдеры могут выбирать между только длинными, только короткими или длинными/короткими стратегиями в соответствии с различными потребностями.

Благодаря этим усовершенствованиям стратегия может более надежно обнаруживать тенденции и хорошо выполняет обратные тесты.

Анализ преимуществ

  1. Улучшенный индикатор вихря фильтрует недействительные сигналы и избегает ложных перерывов.

  2. Использование порога для сигналов вместо простых перекрестков может более надежно обнаруживать точки переворота тренда.

  3. Функции стоп-лосс/take-profit позволяют заранее установить коэффициент прибыли/убытка для контроля рисков для каждой сделки в соответствии с принципами рациональной торговли.

  4. Выбор между только длинным, только коротким или длинным/коротким обеспечивает гибкость для адаптации к различным этапам рынка и удовлетворения потребностей различных трейдеров.

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

Анализ рисков

  1. Стратегия работает в основном для рынков с тенденциями.

  2. Вихревые линии по своей природе чувствительны к колебаниям цен.

  3. Если порог установлен слишком высоко, он может пропустить сделки. Если он установлен слишком низко, он может генерировать ложные сигналы. Для поиска оптимальных уровней необходимо обширное тестирование.

  4. Стоп-лосс может быть выбран во время событий черного лебедя.

Руководство по оптимизации

  1. Подумайте о сочетании с другими показателями для подтверждения сигнала и более полных суждений.

  2. Проверьте чувствительность параметров на различных запасах и оптимизируйте настройки.

  3. Исследование адаптивных методов остановки потери для корректировки остановок по основному тренду.

  4. Внедрить машинное обучение и т.д. для автоматической оптимизации параметров.

  5. Исследование методов индексации, основанных на этой стратегии для расширения мощностей.

Заключение

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


/*backtest
start: 2023-10-14 00:00:00
end: 2023-11-13 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// [Guz] Custom Vortex
// Custom version of the Vortex indicators that adds many features:
// -Triggers trades after a threshold is reached instead of the normal vortex lines cross (once the difference between the 2 lines is important enough)
// -Smooths the Vortex lines with an EMA
// -Adds Take Profit and Stop Loss selection
// -Adds the possibility to go Long only, Short only or both of them
// ! notice that it uses 10% position size and 0.04% trade fee, found on some crypto exchanges futures contracts
// Allows testing leverage with position size moddification (values above 100%, to be done with caution)
// Not an investment advice 

//@version=4
strategy(title="%-[Guz] Vortex Indicator Custom", shorttitle="%-[Guz] Vortex Indicator Custom", overlay=true)

period_ = input(300, title="Length", minval=2)
VMP = sum( abs( high - low[1]), period_ )
VMM = sum( abs( low - high[1]), period_ )
STR = sum( atr(1), period_ )
ema_len = input(title="EMA Length", defval=7)
tresh= input(title="Threshold", defval=16.2, step=0.1)
VIP = ema(VMP / STR,ema_len)
VIM = ema(VMM / STR,ema_len)
//plot(VIP, title="VI +", color=#2962FF)
//plot(VIM, title="VI -", color=#E91E63)

condition_long = crossover(VIP-VIM, tresh/100)
condition_close = cross(VIP-VIM,0)
condition_short = crossunder(VIP-VIM, -tresh/100)

is_short=input(true,title="Do Short?")
is_long=input(true,title="Do Long?")


if (condition_long and is_long)
    strategy.entry("VortexLE", strategy.long, comment="Long Algo")
if (condition_short and is_short)
	strategy.entry("VortexSE", strategy.short, comment="Short Algo")
if (condition_close)
    strategy.close_all()

//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)


stop_loss_long_percent = input(2.5, title="Stop Loss Long", minval=0.1, step=0.1)
stop_loss_long = (1-stop_loss_long_percent/100)*strategy.position_avg_price

take_profit_long_percent = input(1.5, title="Take Profit Long", minval=0.1, step=0.1)
take_profit_long = (1+take_profit_long_percent/100)*strategy.position_avg_price


stop_loss_short_percent = input(2.5,title="Stop Loss Short", minval=0.1, step=0.1) 
stop_loss_short = (1+stop_loss_short_percent/100)*strategy.position_avg_price

take_profit_short_percent = input(1.7,title="Take Profit Short", minval=0.1, step=0.1)
take_profit_short = (1-take_profit_short_percent/100)*strategy.position_avg_price

strategy.exit("TP-SL Long", "VortexLE",  limit = take_profit_long , stop = stop_loss_long) //, trail_price = trail_price_long , trail_offset = trail_offset_long) //, trail_offset=tsl_offset_tick, trail_price=tsl_offset_tick) 
strategy.exit("TP-SL Short", "VortexSE",  limit = take_profit_short , stop = stop_loss_short)  
 


Больше