La stratégie de trading Open High Close Low Breakout est une stratégie de suivi des tendances. Elle identifie la direction de la tendance à court terme en vérifiant la relation entre les prix d'ouverture et de fermeture sur les graphiques de bougies.
La logique de base consiste à vérifier si le prix d'ouverture est égal au prix le plus bas ou le plus élevé du chandelier. Un signal long est déclenché lorsque le prix d'ouverture est égal au prix le plus bas. Un signal court est déclenché lorsque le prix d'ouverture est égal au prix le plus élevé.
Une fois qu'un signal est déclenché, une position de taille fixe sera immédiatement ouverte. Le stop loss est défini en fonction de l'indicateur ATR pour suivre la volatilité du marché. Le niveau de profit est un multiple RR fixe de la distance de stop loss par rapport au prix d'entrée. Lorsque le prix atteint soit le stop loss, soit le take profit, la position sera fermée en conséquence.
La stratégie aplatit également toutes les positions à une heure de coupe quotidienne définie par l'utilisateur, par exemple 30 minutes avant la clôture du marché américain.
Les principaux avantages sont les suivants:
Utiliser les prix d'ouverture/fermeture pour identifier rapidement les signaux de rupture.
Des signaux d'entrée clairs et faciles à mettre en œuvre.
Arrêter les pertes en temps opportun et réaliser des bénéfices afin de bloquer les bénéfices et de limiter les pertes.
Placer les positions à la limite journalière pour éviter le risque d'écart de nuit.
Neutre sur le marché, s'applique au forex, aux actions, aux cryptos, etc.
Quelques risques à prendre en considération:
Arrêt fréquent des pertes avec ATR sur les marchés agités.
Suradaptation à des instruments spécifiques et à des séances sans filtres supplémentaires.
Le niveau des bénéfices fixes peut être inférieur en cas de forte tendance.
Un mauvais timing sur les positions d'aplatissement pourrait manquer les tendances ou entraîner des pertes inutiles.
Quelques façons de l'optimiser davantage:
Expériencez différentes techniques de stop loss pour différentes conditions de marché.
Ajouter des filtres utilisant des indicateurs de momentum, etc. pour éviter les faux signaux.
Ajustez dynamiquement les niveaux de prise de profit en fonction de la volatilité du marché.
Optimiser le temps de coupe quotidien pour différents instruments et sessions de négociation.
La stratégie Open High Close Low offre un moyen simple de commercialiser l'élan. Des règles d'entrée et de sortie claires la rendent facile à mettre en œuvre et à gérer. Mais des optimisations supplémentaires sur des paramètres tels que le stop loss, le take profit, les filtres amélioreraient sa robustesse dans plus de conditions de marché.
/*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.")