Стратегия импульса между ограниченными циклами

Автор:Чао Чжан, Дата: 2023-09-20 14:59:37
Тэги:

Обзор

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

Логика стратегии

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

  2. Определить, была ли предыдущая свеча быстрой или медвежьей. Если закрытие было выше, чем открытие, это было быстрым. Если закрытие было ниже, чем открытие, это было медвежьим.

  3. Если предыдущая свеча была бычьей, и содержимый паттерн возникает, разместите ордер на покупку на предыдущем уровне свечи плюс 10% от его диапазона.

  4. Если предыдущая свеча была медвежьей, и содержимый паттерн возникает, разместите ордер на остановку продажи на низком уровне предыдущей свечи минус 10% от ее диапазона.

  5. После того, как заказ на остановку активируется и позиция открывается, устанавливается стоп-лосс и берут прибыль.

  6. Если формируется новый внутренний шаблон, сначала закрывайте существующие позиции, а затем размещайте новые ожидающие ордера.

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

Преимущества этой стратегии включают:

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

  2. Правила просты и легко соблюдаются для реальной торговли.

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

  4. Каждый раз, когда появляется квалифицированный шаблон, мы размещаем новые заказы, что позволяет нам следовать новой тенденции.

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

Существуют также некоторые риски:

  1. Не всегда содержащийся шаблон приводит к изменению или ускорению тренда.

  2. Расстояние стоп-лосса может быть слишком малым, чтобы выдержать большие колебания на рынке.

  3. Цель получения прибыли может быть слишком широкой, что препятствует своевременной прибыли.

  4. Стратегия больше опирается на тенденции рынков.

  5. Высокая частота торговли приводит к большим затратам на транзакции.

Решения:

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

  2. Небольшое увеличение стоп-лосса, но не более 50% от предыдущего диапазона свечей.

  3. Сократить целевую прибыль до 50% от предыдущего диапазона.

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

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

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

Некоторые способы оптимизации стратегии:

  1. Добавьте индикатор тренда, такой как MACD, чтобы определить направление тренда, избегая сбоев во время консолидации.

  2. Используйте более продвинутые методы стоп-лосса, такие как стоп-лосс отслеживания или стоп-лосс защиты прибыли.

  3. Проверьте различные коэффициенты стоп-лосса и прибыли, чтобы найти оптимальные параметры.

  4. Добавьте логику повторного входа, чтобы снова захватить тренд после остановки потери.

  5. Оптимизировать размер позиций на основе волатильности рынка.

  6. Оптимизировать управление капиталом, например, фиксированное размеры позиций.

  7. Проверьте стратегию на различных продуктах и сроках.

Заключение

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


/*backtest
start: 2023-01-01 00:00:00
end: 2023-03-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3

// Inside Bar Momentum Strategy
// As defined on Babypips.com
// https://www.babypips.com/trading/forex-inside-bar-20170113

// strategy("Babypips: Inside Bar Momentum Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=5)

From_Year  = input(defval = 2018, title = "From Year")
From_Month = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
From_Day   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
To_Year    = input(defval = 9999, title = "To Year")
To_Month   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
To_Day     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
Start  = timestamp(From_Year, From_Month, From_Day, 00, 00)  // backtest start window
Finish = timestamp(To_Year, To_Month, To_Day, 23, 59)        // backtest finish window
Window = true

Stop_Buy_Perc  = input(10, "Stop Buy Order Percentage From Previous Candle's Range")/100
Stop_Loss_Perc = input(20, "Stop Loss Distance from High/Low of Previous Candle")/100
Take_Prof_Perc = input(80, "Take Profit Distance from High/Low of Previous Candle")/100

Risk = input(2, "Percentage Of EQUITY to risk per trade", step=0.1, minval=0, maxval=100)/100

Inside_Bar = high[1] > high[0] and low[1] < low[0]
Prev_Range = high[1] - low[1]
Bullish = open[1] < close[1]
Bearish = open[1] > close[1]

// Get Key Levels 
Long_Stop_Buy_Level   = high[1] + (Prev_Range * Stop_Buy_Perc)
Short_Stop_Buy_Level  = low[1]  - (Prev_Range * Stop_Buy_Perc)
Long_Stop_Loss_Level  = high[1] - (Prev_Range * Stop_Loss_Perc)
Short_Stop_Loss_Level = low[1]  + (Prev_Range * Stop_Loss_Perc)
Long_Take_Prof_Level  = high[1] + (Prev_Range * Take_Prof_Perc)
Short_Take_Prof_Level = low[1]  - (Prev_Range * Take_Prof_Perc)

// Position Sizing
long_qty = floor((strategy.equity * Risk) / (Long_Stop_Buy_Level - Long_Stop_Loss_Level))
short_qty = floor((strategy.equity * Risk) / (Short_Stop_Loss_Level - Short_Stop_Buy_Level))

// -------------------------- LONG CONDITIONS --------------------------------//
// The first candlestick must be bullish (green or white) and if the second 
// candlestick is completely contained by the first, set a buy stop order at 
// the first candle’s high plus 10% of its range (high minus low).

// Place the stop loss at the first candle’s high minus 20% of its range 
// and set the target at the first candle’s high plus 80% of its range

// If another inside bar pattern forms, the current position should be closed 
// or the pending buy/sell order must be canceled and entry orders must be 
// updated to the latest candles.

Long_Condition = Window and Inside_Bar and Bullish
if (Long_Condition)
    // Incase we still have a buy stop order in the market
    strategy.cancel_all()
    // Close any existing positions according to the rules
    strategy.close_all()
    strategy.entry("Bullish IB", strategy.long, stop=Long_Stop_Buy_Level)
    strategy.exit("Bullish Exit","Bullish IB", stop=Long_Stop_Loss_Level, limit=Long_Take_Prof_Level)
    
// -------------------------- SHORT CONDITIONS -------------------------------//
// The first candlestick must be bearish (red or black) and if the second 
// candlestick is completely contained by the first, set a sell stop order at 
// the first candle’s low minus 10% of its range (high minus low).

// Place the stop loss at the first candle’s low plus 20% of its range and 
// set the target at the first candle’s low minus 80% of its range.

// If another inside bar pattern forms, the current position should be closed 
// or the pending buy/sell order must be canceled and entry orders must be 
// updated to the latest candles.

Short_Condition = Window and Inside_Bar and Bearish
if (Short_Condition)
    // Incase we still have a buy stop order in the market
    strategy.cancel_all()
    // Close any existing positions according to the rules
    strategy.close_all()
    strategy.entry("Bearish IB", strategy.short, stop=Short_Stop_Buy_Level)
    strategy.exit("Bearish Exit","Bearish IB", stop=Short_Stop_Loss_Level, limit=Short_Take_Prof_Level)
    
// ----------------------------- PLOTTING ------------------------------------//
plotshape(Inside_Bar, style=shape.arrowdown, location=location.abovebar, color=purple)


Больше