Это краткосрочный внутридневный тренд, следующий за стратегией, основанной на индикаторе Supertrend. Пользователи могут определить внутридневную торговую сессию, в течение которой будет выполняться стратегия.
При изменении сигнала стратегия изменяет позицию с использованием двойной величины.
Вычислить индикатор Supertrend на основе мультипликатора, определенного пользователем, и периода ATR.
Нарисуйте линию супертенденции как поддержку и сопротивление.
Определить длинные/короткие условия. Закрыть выше линии супертенденции - это длинное условие. Закрыть ниже линии супертенденции - это короткое условие.
Проверьте, находится ли текущая панель в пределах внутридневного сеанса, определенного пользователем.
Выпускать длинные/короткие сигналы только при активной внутридневной сессии и выполнении длинных/коротких условий.
Обратная позиция путем принятия противоположной торговли с двойным количеством, когда направление Supertrend меняется.
Квадратировать открытые позиции, когда направление Supertrend не изменилось и внутридневная сессия закончилась.
Supertrend определяет тренд и уменьшает ложные сигналы.
Сочетание Supertrend с ценой закрытия позволяет избежать преждевременного остановки.
Своевременное изменение позиции уменьшает потери.
Внутридневная сессия избегает риска на ночь.
Вынужденный выход избегает риска забыть расписаться.
Неправильные параметры Supertrend могут привести к плохим результатам стратегии.
Обратная позиция увеличивает частоту торговли и затраты.
Выход в конце сеанса может привести к потерям.
Риск 1 можно смягчить путем оптимизации параметров.
Риск 2 можно контролировать с помощью стоп-лосса.
Риск 3 можно избежать с помощью стоп-лосса или трендового фильтра.
Проверить различные индикаторы тренда, такие как MA, KDJ и т.д.
Добавьте логику остановки.
Добавьте трендовый фильтр, чтобы избежать вынужденных потерь.
Оптимизировать параметры мультипликатора и периода ATR.
Испытание на различных приборах.
Эта стратегия сочетает в себе 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 **********