Стратегия прорыва внутридневного тренда

Автор:Чао Чжан, Дата: 2023-09-18 13:11:51
Тэги:

Обзор

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

При изменении сигнала стратегия изменяет позицию с использованием двойной величины.

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

  1. Вычислить индикатор Supertrend на основе мультипликатора, определенного пользователем, и периода ATR.

  2. Нарисуйте линию супертенденции как поддержку и сопротивление.

  3. Определить длинные/короткие условия. Закрыть выше линии супертенденции - это длинное условие. Закрыть ниже линии супертенденции - это короткое условие.

  4. Проверьте, находится ли текущая панель в пределах внутридневного сеанса, определенного пользователем.

  5. Выпускать длинные/короткие сигналы только при активной внутридневной сессии и выполнении длинных/коротких условий.

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

  7. Квадратировать открытые позиции, когда направление Supertrend не изменилось и внутридневная сессия закончилась.

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

  1. Supertrend определяет тренд и уменьшает ложные сигналы.

  2. Сочетание Supertrend с ценой закрытия позволяет избежать преждевременного остановки.

  3. Своевременное изменение позиции уменьшает потери.

  4. Внутридневная сессия избегает риска на ночь.

  5. Вынужденный выход избегает риска забыть расписаться.

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

  1. Неправильные параметры Supertrend могут привести к плохим результатам стратегии.

  2. Обратная позиция увеличивает частоту торговли и затраты.

  3. Выход в конце сеанса может привести к потерям.

  • Риск 1 можно смягчить путем оптимизации параметров.

  • Риск 2 можно контролировать с помощью стоп-лосса.

  • Риск 3 можно избежать с помощью стоп-лосса или трендового фильтра.

Возможности для расширения

  1. Проверить различные индикаторы тренда, такие как MA, KDJ и т.д.

  2. Добавьте логику остановки.

  3. Добавьте трендовый фильтр, чтобы избежать вынужденных потерь.

  4. Оптимизировать параметры мультипликатора и периода ATR.

  5. Испытание на различных приборах.

Заключение

Эта стратегия сочетает в себе Supertrend и управление внутридневными сессиями, чтобы извлечь выгоду из краткосрочных разрывов тренда.


/*backtest
start: 2023-08-18 00:00:00
end: 2023-09-17 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/
// © Pritesh-StocksDeveloper

//@version=4
strategy("Supertrend - Intraday", overlay=true, calc_on_every_tick = true)

// ********** Strategy inputs - Start **********

// Used for intraday handling
// Session value should be from market start to the time you want to square-off 
// your intraday strategy
// Important: The end time should be at least 2 minutes before the intraday
// square-off time set by your broker
var i_marketSession = input(title="Market session", type=input.session, 
     defval="0915-1455", confirm=true)

var float i_multiplier = input(title = "Multiplier", type = input.float, 
     defval = 4, confirm=true)

var int i_atrPeriod = input(title = "ATR Period", type = input.integer, 
     defval = 14, confirm=true)

// ********** Strategy inputs - End **********


// ********** Supporting functions - Start **********

// A function to check whether the bar or period is in intraday session
barInSession(sess) => time(timeframe.period, sess) != 0

// ********** Supporting functions - End **********


// ********** Strategy - Start **********

[superTrend, dir] = supertrend(i_multiplier, i_atrPeriod)

colResistance = dir == 1 and dir == dir[1] ? color.new(color.red, 0) : color.new(color.red, 100)
colSupport = dir == -1 and dir == dir[1] ? color.new(color.green, 0) : color.new(color.green, 100)

plot(superTrend, color = colResistance, linewidth=2)
plot(superTrend, color = colSupport, linewidth=2)

// Long/short condition
longCondition = close > superTrend
shortCondition = close < superTrend

// See if intraday session is active
bool intradaySession = barInSession(i_marketSession)

// Trade only if intraday session is active
 
// Long position
// When longCondition and intradaySession both are true
strategy.entry(id = "Long", long = strategy.long, 
     when = longCondition and intradaySession)
 
// Short position
// When shortCondition and intradaySession both are true
strategy.entry(id = "Short", long = strategy.short, 
     when = shortCondition and intradaySession)
 
// Square-off position (when session is over and position is open)
squareOff = (not intradaySession) and (strategy.position_size != 0)
strategy.close_all(when = squareOff, comment = "Square-off")

// ********** Strategy - End **********

Больше