Стратегия торговли с высоким закрытием и низким прорывом

Автор:Чао Чжан, Дата: 2024-02-02 12:03:45
Тэги:

img

Обзор

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

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

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

После запуска сигнала, позиция фиксированного размера будет открыта немедленно. Стоп-лосс устанавливается на основе индикатора ATR для отслеживания волатильности рынка. Уровень прибыли является фиксированным кратным RR расстояния стоп-лосса от цены входа. Когда цена достигает стоп-лосса или прибыли, позиция будет закрыта соответственно.

Стратегия также сглаживает все позиции в определенное пользователем время суточного отсечения, например, за 30 минут до закрытия рынка США.

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

Основными преимуществами являются:

  1. Использование открытых/закрытых цен для быстрой идентификации сигналов прорыва.

  2. Ясные сигналы входа, которые легко реализовать.

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

  4. Плоские позиции на дневном пределе, чтобы избежать риска прорыва в течение ночи.

  5. Нейтральный по отношению к рынку, применяется к валютам, акциям, криптовалютам и т.д.

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

Некоторые риски следует учитывать:

  1. Частые остановки с ATR на нестабильных рынках.

  2. Сверхподходит для конкретных инструментов и сеансов без дополнительных фильтров.

  3. Уровень фиксированной прибыли может быть низким в условиях сильных тенденций.

  4. Плохое время при сглаживании позиций может привести к упущению трендов или привести к ненужным потерям.

Области улучшения

Некоторые способы дальнейшей оптимизации:

  1. Экспериментировать с различными методами стоп-лосса для различных рыночных условий.

  2. Добавить фильтры, использующие индикаторы импульса и т.д., чтобы избежать ложных сигналов.

  3. Динамически корректируйте уровень прибыли на основе волатильности рынка.

  4. Оптимизировать время суточного отсечения для различных торговых инструментов и сессий.

Заключение

Стратегия Open High Close Low Breakout предлагает простой способ получения импульса торговли. Ясные правила входа и выхода облегчают реализацию и управление. Но дальнейшие оптимизации таких параметров, как стоп-лосс, прибыль, фильтры, улучшат ее надежность в более сложных рыночных условиях.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
// Open-High-Low strategy

strategy('Strategy: OLH', shorttitle="OLH", overlay=true)

// Inputs
slAtrLen = input.int(defval=14, title="ATR Period for placing SL", group="StopLoss settings")
showSLLines = input.bool(defval=false, title="Show SL lines in chart", tooltip="Show SL lines also as dotted lines in chart. Note: chart may look untidy.", group="Stolploss settings")
// Trade related
rrRatio = input.float(title='Risk:Reward', step=0.1, defval=2.0, group="Trade settings")
endOfDay = input.int(defval=1500, title="Close all trades, default is 3:00 PM, 1500 hours (integer)", group="Trade settings")
mktAlwaysOn = input.bool(defval=true, title="Markets that never closed (Crypto, Forex, Commodity)", tooltip="Some markers never closes. For those cases, make this checked.", group="Trade settings")
lotSize = input.int(title='Lot Size', step=1, defval=1, group="Trade settings")


// Utils
green(open, close) => close > open ? true : false
red(open, close) => close < open ? true : false
body(open, close) => math.abs(open - close)
lowerwick = green(open, close) ? open - low : close - low
upperwick = green(open, close) ? high - close : high - open
crange = high - low
crangep = high[1] - low[1] // previous candle's candle-range
bullish = close > open ? true : false
bearish = close < open ? true : false


// Trade signals
longCond = barstate.isconfirmed and (open == low)
shortCond = barstate.isconfirmed and (open == high)

// For SL calculation
atr = ta.atr(slAtrLen)
highestHigh = ta.highest(high, 7)
lowestLow = ta.lowest(low, 7)
longStop = showSLLines ? lowestLow - (atr * 1) : na
shortStop = showSLLines ? highestHigh + (atr * 1) : na
plot(longStop, title="Buy SL", color=color.green, style=plot.style_cross)
plot(shortStop, title="Sell SL", color=color.red, style=plot.style_cross)

// Trade execute
h = hour(time('1'), syminfo.timezone)
m = minute(time('1'), syminfo.timezone)
hourVal = h * 100 + m
totalTrades = strategy.opentrades + strategy.closedtrades
if (mktAlwaysOn or (hourVal < endOfDay))
    // Entry
    var float sl = na
    var float target = na
    if (longCond)
        strategy.entry("enter long", strategy.long, lotSize, limit=na, stop=na, comment="Enter Long")
        sl := longStop
        target := close + ((close - longStop) * rrRatio)
        alert('Buy:' + syminfo.ticker + ' ,SL:' + str.tostring(math.floor(sl)) + ', Target:' + str.tostring(target), alert.freq_once_per_bar)
    if (shortCond)
        strategy.entry("enter short", strategy.short, lotSize, limit=na, stop=na, comment="Enter Short")
        sl := shortStop
        target := close - ((shortStop - close) * rrRatio)
        alert('Sell:' + syminfo.ticker + ' ,SL:' + str.tostring(math.floor(sl)) + ', Target:' + str.tostring(target), alert.freq_once_per_bar)

    // Exit: target or SL
    if ((close >= target) or (close <= sl))
        strategy.close("enter long", comment=close < sl ? "Long SL hit" : "Long target hit")
    if ((close <= target) or (close >= sl))
        strategy.close("enter short", comment=close > sl ? "Short SL hit" : "Short target hit")
else if (not mktAlwaysOn)
    // Close all open position at the end if Day
    strategy.close_all(comment = "Close all entries at end of day.")



Больше