Стратегия создает торговый сигнал на основе прорыва движущейся величины. Основная идея заключается в том, чтобы наблюдать за движением цены в течение указанного периода времени и оценивать изменения тенденции цены на основе прорыва движущейся величины.
Эта стратегия определяет движение цены, рассчитывая наивысшие и наименьшие цены в течение определенного периода времени, то есть пивотное высокое и пивотное низкое.
В частности, стратегия рассчитывает максимальные цены на прошедшей N-корневой K-линии как пивотное высокое значение, а минимальные цены на прошедшей M-корневой K-линии как пивотное низкое значение. При превышении пивотной высоты на текущей K-линии, создается сигнал доли; при падении пивотной низкости на текущей K-линии, создается сигнал доли.
После увеличения и уменьшения, стратегия использует ATR, чтобы установить остановку и поэтапную остановку в течение дня. В то же время, стратегия также очищает все позиции в течение определенного периода времени (например, 14:55).
Эта стратегия просто и эффективно использует ценовые прорывы в определенном временном диапазоне для захвата тенденций, что очень подходит для короткой торговли в течение дня.
Время входа в игру может быть определено с помощью соответствующих временных интервалов или комбинации других показателей.
Можно скорректировать параметры или добавить фильтрующие условия, такие как индикатор тренда, объем сделок и т. д.
Позиции могут быть изменены в соответствии с размером или продолжительностью
Параметры должны быть адаптированы к различным условиям рынка или автоматически оптимизированы с помощью методов машинного обучения и т. Д.
Попробуйте другие ценовые данные, такие как типичные цены, средние цены и т.д.
Условия фильтрации, такие как увеличение объема или волатильности
Попробуйте различные комбинации параметров
Определение направления тренда в сочетании с индикаторами тренда
Автоматическая оптимизация параметров с использованием методов машинного обучения
Расширяется на несколько периодов времени, входящих в эпоху
Общая концепция стратегии ясна и проста, благодаря эффективному использованию движущихся прорывов цены для захвата краткосрочных тенденций достигается более высокий коэффициент прибыли. Параметры стратегии меньше, их легко тестировать и оптимизировать, они подходят для операций на коротких линиях в течение суток.
/*backtest
start: 2022-10-27 00:00:00
end: 2023-11-02 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// ____________ _________ _____________
// |____________| ||________| ||__________|
// || || || ||
// || ||________|| ||
// || H E ||________ U L L || H A R T I S T
// || || || ||
// || ||________|| ||__________
// || ||________| ||__________|
//@version=5
// strategy("PIVOT STRATEGY [5MIN TF]",overlay=true ,commission_type = strategy.cash, commission_value = 30 , slippage = 2, default_qty_value = 60, currency = currency.NONE, pyramiding = 0)
leftbars = input(defval = 10)
rightbars = input(defval = 15)
// ═══════════════════════════ //
// ——————————> INPUTS <——————— //
// ═══════════════════════════ //
EMA1 = input.int(title='PRICE CROSS EMA', defval = 150, minval = 10 ,maxval = 400)
factor1 = input.float(title='_ATR LONG',defval = 3.2 , minval = 1 , maxval = 5 , step = 0.1, tooltip = "ATR TRAIL LONG")
factor2 = input.float(title='_ATR SHORT',defval = 3.2 , minval = 1 , maxval = 5 , step = 0.1, tooltip = "ATR TRAIL SHORT")
risk = input.float(title='RISK',defval = 200 , minval = 1 , maxval = 5000 , step = 50, tooltip = "RISK PER TRADE")
var initialCapital = strategy.equity
t = time(timeframe.period, '0935-1400:1234567')
time_cond = true
// ══════════════════════════════════ //
// ———————————> EMA DATA <——————————— //
// ══════════════════════════════════ //
ema1 = ta.ema(close, EMA1)
plot(ema1, color=color.new(color.yellow, 0), style=plot.style_linebr, title='ema1')
// ══════════════════════════════════ //
// ————————> TRAIL DATA <———————————— //
// ══════════════════════════════════ //
// *******Calculate LONG TRAIL data*****
ATR_LO = ta.atr(14)*factor1
// *******Calculate SHORT TRAIL data*****
ATR_SH = ta.atr(14)*factor2
longStop = close - ATR_LO
shortStop = close + ATR_SH
// Plot atr data
//plot(longStop, color=color.new(color.green, 0), style=plot.style_linebr, title='Long Trailing Stop')
//plot(shortStop , color=color.new(color.red, 0), style=plot.style_linebr, title='Short Trailing Stop')
// ══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════ //
// ————————————————————————————————————————————————————————> PIVOT DATA <———————————————————————————————————————————————————————————————————————————————————————————————————— //
// ══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════ //
ph = ta.pivothigh(close,leftbars, rightbars)
pl = ta.pivotlow(close,leftbars, rightbars)
pvt_condition1 = not na(ph)
upper_price = 0.0
upper_price := pvt_condition1 ? ph : upper_price[1]
pvt_condition2 = not na(pl)
lower_price = 0.0
lower_price := pvt_condition2 ? pl : lower_price[1]
// Signals
long = ta.crossover(high, upper_price + syminfo.mintick)
short = ta.crossunder(low, lower_price - syminfo.mintick)
plot(upper_price, color= close > ema1 ? color.green : na, style=plot.style_line, title='PH')
plot(lower_price, color= close < ema1 ? color.red : na, style=plot.style_line, title='PL')
// ══════════════════════════════════//
// ————————> LONG POSITIONS <————————//
// ══════════════════════════════════//
//******barinstate.isconfirmed used to avoid repaint in real time*******
if ( long and strategy.opentrades==0 and barstate.isconfirmed and time_cond and close >= ema1 )
strategy.entry(id= "Long" ,direction = strategy.long, comment = "B")
//plot(longStop , color=color.new(color.blue, 0), style=plot.style_linebr, title='long Stop')
if strategy.position_size > 0
strategy.exit("long tsl", "Long" , stop = longStop ,comment='S')
// ═════════════════════════════════════//
// ————————> SHORT POSITIONS <————————— //
// ═════════════════════════════════════//
if ( short and strategy.opentrades==0 and barstate.isconfirmed and time_cond and close <= ema1 )
strategy.entry(id = "Short" ,direction = strategy.short, comment = "S")
if strategy.position_size < 0
strategy.exit("short tsl", "Short" , stop = shortStop ,comment='B')
// ════════════════════════════════════════════════//
// ————————> CLOSE ALL POSITIONS BY 3PM <————————— //
// ════════════════════════════════════════════════//
strategy.close_all(when = hour == 14 and minute == 55)
// ════════════════════════════════════════//
// ————————> MAX INTRADAY LOSS <————————— //
// ════════════════════════════════════════//
// strategy.risk.max_intraday_loss(type = strategy.cash, value = risk)