
Стратегия отслеживания реверсивной крайней величины позволяет отслеживать тенденцию, отслеживая крайние точки в диапазоне колебаний цены, и в то же время делать больше позиций в обратном направлении в крайних точках.
Эта стратегия основана на следующих принципах:
Используя функцию security для получения максимально высоких и минимально низких значений различных циклов K-линий, проверьте, равняется ли это максимально низким значениям предыдущих K-линий, чтобы определить, достигнута ли новая предельная точка.
При обнаружении новой критической точки, если текущая ситуация является многоочередным, то в этой критической точке обратный пустой; если текущая ситуация является пустым, то в этой критической точке обратный пустой.
Установка стоп-стоп для новых предельных точек, которые формируются после дополнительных коротких позиций, чтобы реализовать стоп-стоп для отслеживания тренда.
Политические изменения в различные периоды времени, с помощью установки временного диапазона, в котором политика действует с даты года на месяц.
Основные преимущества этой стратегии:
Это позволяет эффективно улавливать критические точки изменения цен, совершать обратные операции и отслеживать тенденции.
Управление временем и деньгами позволяет контролировать время и деньги, используемые в стратегии, и снижать риск.
Используя новую критическую точку в качестве точки остановки, можно скорректировать позицию остановки в соответствии с новым диапазоном колебаний цен, чтобы реализовать динамическую остановку.
Логика стратегии проста, понятна, легко поддается настройке и оптимизации.
Однако эта стратегия несет в себе определенные риски:
Ограничение может привести к ошибкам, которые могут привести к ошибкам в выполнении многочисленных пробелов. Оптимизация может быть достигнута путем корректировки логики ограничения.
Стоп-потери расположены ближе к входным точкам, что может увеличить вероятность того, что стоп-потери будут вызваны. Для решения стоп-потерей могут быть установлены плавающие стоп-потери.
Не учитывая логику нажима и обратного открытия позиций, которые следуют тренду, может быть трудно получить прибыль в трендовых ситуациях. Можно добавить правила нажима и обратного открытия позиций для оптимизации.
Параметры валют и временных диапазонов являются фиксированными и не поддаются динамическому регулированию. Для этого можно создать систему оптимизации параметров.
Эта стратегия может быть оптимизирована в следующих направлениях:
Оптимизация логики критических оценок, добавление дополнительных условий фильтрации, чтобы избежать ошибочных оценок.
Добавление механизма плавающего остановки, корректирующего остановку в зависимости от изменения цены и колебаний.
Добавление модулей по повышению и обратному открытию позиций, основанных на тенденциях и колебаниях, повышает прибыльность.
Создание механизмов оптимизации параметров для автоматизированного тестирования и оптимизации параметров.
Присоединение к модели машинного обучения для оценки поведения и принятия стратегических решений.
Эта стратегия по отслеживанию критических отклонений обладает высокой адаптивностью и рентабельностью, поскольку захватывает критические точки изменения цены и отслеживает движение тенденции. После продолжения оптимизации определения критических точек, механизмов остановки убытков и правил открытия позиций эта стратегия может стать стабильной и надежной стратегией количественной торговли.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 6h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Noro
//2018
//@version=2
strategy(title = "Noro's Extremum Strategy v1.0", shorttitle = "Extremum str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)
//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(false, defval = false, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
tf = input('W', title = 'Timeframe for extremums')
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")
//Levels
highm = request.security(syminfo.tickerid, tf, high[1])
lowm = request.security(syminfo.tickerid, tf, low[1])
upcolorm = highm == highm[1] ? lime : na
dncolorm = lowm == lowm[1] ? red : na
plot(highm, color = upcolorm, linewidth = 3)
plot(lowm, color = dncolorm, linewidth = 3)
//Signals
size = strategy.position_size
up = size > 0 ? highm * 1000000 : highm != highm[1] ? highm : up[1]
dn = size < 0 ? 0 : lowm != lowm[1] ? lowm : dn[1]
exit = true
//Trading
lot = strategy.position_size != strategy.position_size[1] ? strategy.equity / close * capital / 100 : lot[1]
if highm > 0 and high[1] < highm and highm == highm[1]
strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, stop = up)
if lowm > 0 and low[1] > lowm and lowm == lowm[1]
strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, stop = dn)
if exit
strategy.close_all()