Масштабируемая стратегия торговли прорывами


Дата создания: 2023-10-30 17:25:17 Последнее изменение: 2023-10-30 17:25:17
Копировать: 0 Количество просмотров: 630
1
Подписаться
1617
Подписчики

Масштабируемая стратегия торговли прорывами

Обзор

Расширяемая стратегия прорыва - это очень гибкая и масштабируемая стратегия прорыва, которая может быть применена к различным временным периодам путем корректировки параметров, а также может легко интегрировать различные дополнительные фильтрующие условия и механизмы управления рисками, чтобы оптимизировать для конкретных активов.

Стратегический принцип

В первую очередь, эта стратегия используетswings()Функция рассчитывает высокие и низкие колебания текущей цены на основе периода ретроспекции.swingLookbackПараметры настроены по умолчанию на 20 K-линий. Затем, когда цена пересекает высокую точку колебания, делается больше; когда цена падает низкую точку колебания, делается меньше.

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

Кроме того, в стратегии также установлены стоп-ложи, которые могут быть использованы для погашения убытков.stopTargetPercentПараметры для установления величины стоп-лосса. Например, при установке стоп-лосса на 5% от максимальной цены, при установке стоп-лосса на 5% от минимальной цены.

Преимущество этой стратегии заключается в том, что можно контролировать частоту торгов путем корректировки периода обратного просмотра. Чем короче период обратного просмотра, тем более чувствителен к прорыву, и тем выше частота торгов. Слишком длинный период обратного просмотра, наоборот, снижает частоту торгов, но может пропустить возможность.

Стратегические преимущества

  • Простые, прорывные идеи, которые легко понять и реализовать
  • Оптимизируемые параметры, регулирующие частоту сделок
  • Легко интегрируемые механизмы управления рисками, такие как остановка, мобильная остановка
  • Расширяемая, с возможностью добавления различных условий фильтрации для повышения доходности
  • Применяется в любом временном цикле, подходит для внутридневных и долгосрочных сделок

Риски и противодействие

  • Слишком короткий отсчет может привести к чрезмерной торговле
  • Слишком длительный отсчет может привести к упущенным возможностям.
  • Слишком широкая стоп-установка может сократить прибыль
  • Слишком узкая остановка может привести к частому срабатыванию остановки

Ответ:

  • Проверка различных периодов для определения оптимального сочетания параметров
  • Оптимизация стоп-лосса, балансирование прибыльного пространства и контроль риска
  • Можно добавить движущийся стоп или кольцевой стоп для блокировки прибыли
  • Увеличение условий фильтрации, повышение вероятности выгодных сделок

Направление оптимизации

Эта стратегия может быть оптимизирована в следующих аспектах:

  1. Проверка различных параметров для определения оптимального сочетания параметров;

  2. тестирование различных циклов торговли, например, 5 минут, 15 минут, 1 час и т. д., чтобы выбрать оптимальный цикл;

  3. Оптимизация стоп-лосс, балансировка прибыльного пространства и контроль риска;

  4. Добавление условий фильтрации, таких как фильтрация объемов торгов, фильтрация падений и т. д., чтобы уменьшить низкокачественные сигналы;

  5. Интеграция большего количества механизмов управления рисками, таких как перенос потерь и блокирование прибыли;

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

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

Подвести итог

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

Исходный код стратегии
/*backtest
start: 2023-09-29 00:00:00
end: 2023-10-29 00:00:00
period: 1h
basePeriod: 15m
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/
// © deperp

//@version=5
// strategy("Range Breaker", overlay=true, initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=10, commission_type=strategy.commission.percent, commission_value=0.07, pyramiding=0)

// Backtest Time Period

useDateFilter = input.bool(true, title="Begin Backtest at Start Date",
     group="Backtest Time Period")
backtestStartDate = input(timestamp("1 Jan 2020"), 
     title="Start Date", group="Backtest Time Period",
     tooltip="This start date is in the time zone of the exchange " + 
     "where the chart's instrument trades. It doesn't use the time " + 
     "zone of the chart or of your computer.")

inTradeWindow = true

swingLookback = input.int(20, title="Swing Lookback", minval=3)
stopTargetPercent = input.float(5, title="Stop Target Percentage", step=0.1)

// Calculate lockback swings
swings(len) =>
    var highIndex = bar_index
    var lowIndex = bar_index
    var swingHigh = float(na)
    var swingLow = float(na)
    
    upper = ta.highest(len)
    lower = ta.lowest(len)
    
    if high[len] > upper
        highIndex := bar_index[len]
        swingHigh := high[len]

    if low[len] < lower
        lowIndex := bar_index[len]
        swingLow := low[len]

    [swingHigh, swingLow, highIndex, lowIndex]


// Strategy logic
[swingHigh, swingLow, highIndex, lowIndex] = swings(swingLookback)
longCondition = inTradeWindow and (ta.crossover(close, swingHigh))
shortCondition = inTradeWindow and (ta.crossunder(close, swingLow))

if longCondition
    strategy.entry("Long", strategy.long)
if shortCondition
    strategy.entry("Short", strategy.short)

longStopTarget = close * (1 + stopTargetPercent / 100)
shortStopTarget = close * (1 - stopTargetPercent / 100)

strategy.exit("Long Stop Target", "Long", limit=longStopTarget)
strategy.exit("Short Stop Target", "Short", limit=shortStopTarget)

// Plot break lines
// line.new(x1=highIndex, y1=swingHigh, x2=bar_index, y2=swingHigh, color=color.rgb(255, 82, 82, 48), width=3, xloc=xloc.bar_index, extend=extend.right)
// line.new(x1=lowIndex, y1=swingLow, x2=bar_index, y2=swingLow, color=color.rgb(76, 175, 79, 47), width=3, xloc=xloc.bar_index, extend=extend.right)


// Alert conditions for entry and exit
longEntryCondition = inTradeWindow and (ta.crossover(close, swingHigh))
shortEntryCondition = inTradeWindow and (ta.crossunder(close, swingLow))

longExitCondition = close >= longStopTarget
shortExitCondition = close <= shortStopTarget

alertcondition(longEntryCondition, title="Long Entry Alert", message="Enter Long Position")
alertcondition(shortEntryCondition, title="Short Entry Alert", message="Enter Short Position")
alertcondition(longExitCondition, title="Long Exit Alert", message="Exit Long Position")
alertcondition(shortExitCondition, title="Short Exit Alert", message="Exit Short Position")