Стратегия прорыва двойной черепахи


Дата создания: 2023-11-28 16:25:41 Последнее изменение: 2023-11-28 16:25:41
Копировать: 0 Количество просмотров: 379
1
Подписаться
1166
Подписчики

Стратегия прорыва двойной черепахи

Обзор

Двойная стратегия прорыва на берегу, объединяющая стратегию прорыва в торговле на берегу и принципы мобильного остановки Линды Рашкер, имеет отличную прорывную способность и строгий контроль риска. Эта стратегия одновременно отслеживает взлеты и падения цены, создает позиции на покупку или продажу при появлении прорыва и использует мобильные остановки и управляемые позиции с мобильными остановками.

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

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

Вот конкретные шаги:

  1. Вычислить большие циклы ((20 циклов) высокие точки prevHigh и малые циклы ((4 циклов) высокие точки smallPeriodHigh。
  2. Когда высота последней K-линии больше превHigh, и превHigh больше, чем smallPeriodHigh, показывает, что высота большого периода пробивает высоту маленького периода, в то время, если нет позиции, она пуста.
  3. После создания хранилища устанавливается мобильный стоп, а после перехода позиции отменяется стоп-лист, чтобы предотвратить остановку.
  4. Когда количество удерживаемых позиций достигает установленного количества циклов перемещения стоп (в настоящее время 0 циклов), в следующем цикле выделяется половина позиций и устанавливается перемещение стоп и перемещение стоп, отслеживается разница в цене и блокируется прибыль.
  5. Для прорыва низких точек аналогично, основываясь на прорывных отношениях между большими и малыми циклическими низкими точками.

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

Это сложная и комплексная стратегия, которая имеет следующие преимущества:

  1. В сочетании с методом торговли двукратным циклом, можно эффективно распознавать сигналы прорыва.
  2. Применение мобильных стоп-лостов и мобильных стоп-технологий строго контролирует риски и предотвращает крупные убытки.
  3. По два выступления, один из которых был задержан на половину позиции, а затем, с помощью движения, был задержан на полную позицию, чтобы закрепить прибыль.
  4. Вместе с тем, в соответствии с рыночными особенностями многопространственного взаимодействия, внедряется двунаправленная операция.
  5. Отличные результаты отслеживания, отличная производительность в реальном времени.

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

Основные риски и меры реагирования:

  1. Риск ложного прорыва. При необходимости следует корректировать циклические параметры, чтобы обеспечить эффективность прорыва.
  2. Следить за риском падения. Фильтровать следует в сочетании с трендом и формой, чтобы избежать создания позиций в конце тренда.
  3. Стоп-убытки подвергаются риску обрыва. Стоп-убытки могут быть расширены соответствующим образом, чтобы обеспечить достаточное пространство.
  4. Мобильная остановка слишком чувствительна к риску. Следует изменить настройки скольжения после остановки, чтобы избежать ненужной остановки.

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

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

  1. Повышение прорывной фильтрации, чтобы обеспечить подлинность прорыва.
  2. Присоединяйтесь к трендовым показателям, чтобы избежать позиций в конце тренда.
  3. В сочетании с более длительными временными циклами, можно определить время прорыва.
  4. Добавление алгоритмов машинного обучения, параметров динамической оптимизации.
  5. Сочетание с другими стратегиями, применение статистического арбитража.

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

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

Исходный код стратегии
/*backtest
start: 2022-11-21 00:00:00
end: 2023-11-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title = "Turtle soup plus one", shorttitle = "Turtle soup plus one", overlay=true)

bigPeriod = input(20)
smallPeriod = input(4)
takeProfitBars = input(0)
trailingStop = input(5, title = "Trailing stop percentages")
if (strategy.position_size == 0)
    strategy.cancel("Long")
    strategy.cancel("Short")
    strategy.cancel("Stop")



stopLossPrice = 0.1
stopLossPrice := nz(stopLossPrice[1])
takeProfitStarted = false
takeProfitStarted := nz(takeProfitStarted[1])

prevHigh = highest(high, bigPeriod - smallPeriod)[smallPeriod]
smallPeriodHigh = highest(high, smallPeriod - 1)[1]
if (high > prevHigh and prevHigh > smallPeriodHigh and close > prevHigh and strategy.position_size == 0)
    strategy.order("Short", strategy.short, stop = prevHigh)

if strategy.position_size < 0 and strategy.position_size[1] == 0
    stopLossPrice := high[1]
    strategy.order("Stop", strategy.long, qty = -strategy.position_size, stop = stopLossPrice)
    takeProfitStarted := false

if (strategy.position_size < 0 and sum(strategy.position_size, takeProfitBars) == strategy.position_size * takeProfitBars and close < strategy.position_avg_price and not takeProfitStarted)
    takeProfitStarted := true
    strategy.cancel("Stop")
    strategy.order("ExitHalf", strategy.long, qty = ceil(-strategy.position_size / 2), stop = close)
    if (strategy.position_size != -1)
        strategy.exit("ExitFull", "Short", qty = -strategy.position_size - ceil(-strategy.position_size / 2), loss = stopLossPrice, trail_price  = close, trail_offset = -(close - strategy.position_avg_price) * trailingStop / 100 / syminfo.mintick)
        

prevLow = lowest(low, bigPeriod - smallPeriod)[smallPeriod]
smallPeriodLow = lowest(low, smallPeriod - 1)[1]
if (low < prevLow and prevLow < smallPeriodLow and close < prevLow and strategy.position_size == 0)
    strategy.order("Long", strategy.long, stop = prevLow)

if strategy.position_size > 0 and strategy.position_size[1] == 0
    stopLossPrice := low[1]
    strategy.order("Stop", strategy.short, qty = strategy.position_size, stop = stopLossPrice)
    takeProfitStarted := false

if (strategy.position_size > 0 and sum(strategy.position_size, takeProfitBars) == strategy.position_size * takeProfitBars and close > strategy.position_avg_price and not takeProfitStarted)
    takeProfitStarted := true
    strategy.cancel("Stop")
    strategy.order("ExitHalf", strategy.short, qty = ceil(strategy.position_size / 2), stop = close)
    if (strategy.position_size != 1)
        strategy.exit("ExitFull", "Long", qty = strategy.position_size - ceil(strategy.position_size / 2),loss = stopLossPrice, trail_price  = close, trail_offset = (close - strategy.position_avg_price) * trailingStop / 100 / syminfo.mintick)

// === Backtesting Dates ===
testPeriodSwitch = input(false, "Custom Backtesting Dates")
testStartYear = input(2018, "Backtest Start Year")
testStartMonth = input(3, "Backtest Start Month")
testStartDay = input(6, "Backtest Start Day")
testStartHour = input(08, "Backtest Start Hour")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,testStartHour,0)
testStopYear = input(2038, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(14, "Backtest Stop Day")
testStopHour = input(14, "Backtest Stop Hour")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,testStopHour,0)
testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false
isPeriod = testPeriodSwitch == true ? testPeriod() : true
// === /END
if not isPeriod
    strategy.cancel_all()
    strategy.close_all()