Стратегия Breakback Storm специализируется на поглощении возможностей отступления после прорыва цен для захвата скрытых взрывных движений в рамках краткосрочных переворотов. Она сочетает в себе определение тренда и сигналы отступления, чтобы идти долго после восходящих прорывов, когда цены возвращаются к предыдущим уровням поддержки, и идти коротко после нисходящих прорывов, когда цены возвращаются к предыдущим уровням сопротивления. Стратегия фильтрует большинство ложных прорывов через строгие проверки прорывов, обеспечивая высокое качество записей.
Стратегия основана на двух основных триггерах: недавние высокие/низкие прорывы в долгосрочной перспективе и паттерны снижения в краткосрочной перспективе. В частности, она сначала требует, чтобы цены превышали 80-периодный максимум, чтобы определить восходящую тенденцию из более высокой временной рамки. Во-вторых, она требует, чтобы цены превышали предыдущий дневный максимум, чтобы подтвердить краткосрочный восходящий прорыв.
Короткий сигнал работает симметрично, требуя недавнего низкого прорыва плюс отскок обратно к предыдущему дню.
Эта стратегия сочетает в себе концепции двойного направления торговли и выхода с существенными преимуществами:
В частности, 80-периодный фильтр предотвращает большинство ложных прорывов на краткосрочном шуме. Прорыв экстремальных точек предыдущего дня надежно улавливает краткосрочные изменения тренда. Такие качественные сигналы обеспечивают направленную точность сделок.
Вход в ретрогенерацию, обеспечивающий определенный буфер стоп-лосса, затем захватывает большую часть средней части тренда.
Наконец, механизм временного выхода также сбалансирует как факторы рентабельности, так и факторы управления рисками путем предварительного определения сценариев результатов, минимизируя эмоциональное вмешательство.
Однако в этой стратегии есть определенные риски:
Когда на рынке появляются одновременные волны восходящего и нисходящего тренда, сигналы входа с обеих сторон могут переполняться, предотвращая входы с обеих сторон.
Этого можно избежать, настроив фильтры выхода и установив минимальные диапазоны прорыва для помещения сигналов.
Второй риск связан с частой перестройкой, которая приводит к увеличению затрат и фактическим потерям.
Это может быть уменьшено путем настройки периода хранения и параметров остановки потери, чтобы свести к минимуму ненужные выходы.
Наконец, в результате обратный импульс также может иногда не иметь достаточной величины в пределах диапазонов консолидации.
На основе анализа, дальнейшие оптимизации включают:
Перемещение остановок прибыли или остановок при безубыточности может сначала зафиксировать прибыль и избежать ретрекшей.
Показатели волатильности, такие как ATR и RVI, также могут измерять режимы колебаний, чтобы избежать периодов низкой возможности.
Наконец, циклические тенденции вокруг сезонных сдвигов также обеспечивают большие пространства тренда для минимизации побочных эффектов.
В целом, стратегия Breakback Storm направлена на захват краткосрочных возможностей для обратного тренда после прорыва тренда. Объединяя долгосрочные фильтры тренда, краткосрочные сигналы обратного тренда, проверки прорыва и записи о обратном тренде, она обеспечивает надежную основу для торговли обратными трендами в рамках более крупных движений тренда. При оптимизации с соответствующим получением прибыли, показателями волатильности и сезонными фильтрами такая структура может генерировать стабильную прибыль в различных рыночных условиях.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("Smash Day Pattern (Type B)", overlay=true, default_qty_type = strategy.fixed, default_qty_value = 1, initial_capital = 10000) in1 = input(40, "Max Days to Hold") - 1 isLong = strategy.position_size > 0 isShort = strategy.position_size < 0 longTrigger = close[1]<low[2] shortTrigger = close[1]>high[2] longFilter = close[1] > close[80] shortFilter = close[1] < close[80] longEntry = (not isLong) and longTrigger and longFilter shortEntry = (not isShort) and shortTrigger and shortFilter longStop = valuewhen(longEntry, low[1], 0) longPrice = valuewhen(longEntry, high[1], 0) shortStop = valuewhen(shortEntry, high[1],0) shortPrice = valuewhen(shortEntry, low[1], 0) strategy.entry(id = "Long", long = true, stop = longPrice+.001, when = longEntry) strategy.exit(id = "Stop Long", from_entry = "Long", stop = longStop, when = isLong) strategy.close("Long", barssince(longEntry==true)>=in1) strategy.entry(id = "Short", long = false, stop = shortPrice-.001, when = shortEntry) strategy.exit(id = "Stop Short", from_entry = "Short", stop = shortStop, when = isShort) strategy.close("Short", barssince(shortEntry==true)>=in1)