Эта стратегия в сочетании с многополосными стоп-паролями в многовременных рамках используется для сделок с распространением, чтобы захватить прорыв короткой линии в течение периода сеанса.
Вычислить многолетние траектории в течение дня и короткого времени, чтобы сформировать прорыв в двух временных рамках.
Торговля осуществляется только в течение заданного периода. Начало периода начинается с прорыва, а конец периода - с ликвидации.
Расчет цены в реальном времени ЭМА в качестве входных цен. Цена превышает среднюю орбиту, вызывая сигнал прорыва.
Установка линии остановки за пределами прорыва.
Когда цена возвращается в районе средней орбиты, подтвердите провал прорыва и ликвидируйте позицию.
В сочетании с несколькими временными рамками можно эффективно отфильтровывать фальшивые прорывы.
Ограничение времени торгов позволяет избежать важных новостей.
EMA может отслеживать цены по ходу и вовремя.
Установка линий стоп-лосса помогает контролировать риски.
Обязательное закрытие позиций в определенные часы позволяет избежать риска остаться на ночь.
Прорыв короткой линии может произойти в случае, когда сбой был вызван.
Некоторые прорывы могут не принести полной прибыли до конца периода.
Неправильно настроенное время также может привести к упущенным возможностям.
Нельзя гарантировать, что каждый прорыв принесет ожидаемую прибыль.
Возможно, параметры оптимизации не совпадают.
Тест различных прорывных параметров, чтобы найти оптимальную комбинацию.
Оценить другие показатели, чтобы повысить точность поступления.
Оптимизируйте время торговли, чтобы найти баланс между прибылью и риском.
Изучение того, как блокировать прибыль в сочетании с стратегией сдерживания прибыли.
Тестирование различия в параметрах различных сортов.
Параметры динамической оптимизации с использованием алгоритмов машинного обучения.
Стратегия пытается совершать коротколинейные распространенные сделки с помощью ограниченных сеансовых прорывов. Оптимизация в отношении ложных прорывов и управления рисками может быть улучшена в практически эффективную стратегию коротколинейных торгов.
/*backtest
start: 2023-08-20 00:00:00
end: 2023-09-19 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy("Breakout Scalper", overlay=true)
// -------------------------------------------------------------------------------------------------
// INPUTS
// -------------------------------------------------------------------------------------------------
// Period of the "fast" donchian channel
fast_window = input(title="Fast Window", defval=13, minval=1)
// Used for the volatility (atr) period
slow_window = input(title="Slow Window", defval=52, minval=1)
// Period of EMA used as the current price
instant_period = input(title="Instant Period", defval=3, minval=1)
// Minimum ratio of cloud width to ATR in order for trade to be active
cloud_min_percent = input(title="Minimum Cloud ATR Multiplier", type=float, defval=1.0, minval=0)
// Session where we allow trades to be active
trading_sesh = input(title="Trading Session", defval='1000-1500')
// -------------------------------------------------------------------------------------------------
// -------------------------------------------------------------------------------------------------
// SESSION TIMING
// -------------------------------------------------------------------------------------------------
is_newbar(t) =>
na(t[1]) and not na(t) or t[1] < t
day_time = time("D")
sess_time = time(timeframe.period, trading_sesh)
day_open_bar = is_newbar(day_time)
sess_open_bar = is_newbar(sess_time)
sess_close_bar = na(sess_time) and not na(sess_time[1])
sess_is_open = false
sess_is_open := sess_open_bar ? true : (sess_close_bar ? false : sess_is_open[1])
// -------------------------------------------------------------------------------------------------
// -------------------------------------------------------------------------------------------------
// DONCHIANS
// -------------------------------------------------------------------------------------------------
slow_high = na
slow_high := day_open_bar ? high : (high > slow_high[1] ? high : slow_high[1])
slow_low = na
slow_low := day_open_bar ? low : (low < slow_low[1] ? low : slow_low[1])
slow_mid = (slow_high + slow_low) / 2
fast_low = max(slow_low, lowest(fast_window))
fast_high = min(slow_high, highest(fast_window))
fast_mid = (fast_low + fast_high) / 2
// -------------------------------------------------------------------------------------------------
// -------------------------------------------------------------------------------------------------
// TREND CLOUD
// -------------------------------------------------------------------------------------------------
cloud_width = fast_mid - slow_mid
slow_atr = atr(slow_window)
cloud_percent = cloud_width / slow_atr
cloud_color = cloud_percent > cloud_min_percent ? green : (cloud_percent < -cloud_min_percent ? red : gray)
fp = plot(fast_mid, title="Fast MidR", color=green)
sp = plot(slow_mid, title="Slow MidR", color=red)
fill(fp, sp, color=cloud_color)
// -------------------------------------------------------------------------------------------------
// -------------------------------------------------------------------------------------------------
// INSTANT PRICE
// -------------------------------------------------------------------------------------------------
instant_price = ema(close, instant_period)
plot(instant_price, title="Instant Price", color=black, transp=50)
// -------------------------------------------------------------------------------------------------
// -------------------------------------------------------------------------------------------------
// ENTRY SIGNALS & STOPS
// -------------------------------------------------------------------------------------------------
buy_entry_signal = sess_is_open and (instant_price > fast_mid) and (cloud_percent > cloud_min_percent)
sell_entry_signal = sess_is_open and (instant_price < fast_mid) and (cloud_percent < -cloud_min_percent)
buy_close_signal = sess_close_bar or (cloud_percent < 0)
sell_close_signal = sess_close_bar or (cloud_percent > 0)
entry_buy_stop = slow_high
entry_sell_stop = slow_low
exit_buy_stop = max(slow_low, fast_low)
exit_sell_stop = min(slow_high, fast_high)
entry_buy_stop_color = (strategy.position_size == 0) ? (buy_entry_signal ? green : na) : na
plotshape(entry_buy_stop, location=location.absolute, color=entry_buy_stop_color, style=shape.circle)
entry_sell_stop_color = (strategy.position_size == 0) ? (sell_entry_signal ? red : na) : na
plotshape(entry_sell_stop, location=location.absolute, color=entry_sell_stop_color, style=shape.circle)
exit_buy_stop_color = (strategy.position_size > 0) ? red : na
plotshape(exit_buy_stop, location=location.absolute, color=exit_buy_stop_color, style=shape.xcross)
exit_sell_stop_color = (strategy.position_size < 0) ? green : na
plotshape(exit_sell_stop, location=location.absolute, color=exit_sell_stop_color, style=shape.xcross)
// -------------------------------------------------------------------------------------------------
// -------------------------------------------------------------------------------------------------
// STRATEGY EXECUTION
// -------------------------------------------------------------------------------------------------
strategy.entry("long", strategy.long, stop=entry_buy_stop, when=buy_entry_signal)
strategy.cancel("long", when=not buy_entry_signal)
strategy.exit("stop", "long", stop=exit_buy_stop)
strategy.entry("short", strategy.short, stop=entry_sell_stop, when=sell_entry_signal)
strategy.cancel("short", when=not sell_entry_signal)
strategy.exit("stop", "short", stop=exit_sell_stop)
strategy.close("long", when=buy_close_signal)
strategy.close("short", when=sell_close_signal)
// -------------------------------------------------------------------------------------------------