Stratégie de négociation de rupture ouverte élevée fermée basse

Auteur:ChaoZhang est là., Date: 2024-02-02 12:03:45 Je suis désolé
Les étiquettes:

img

Résumé

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 la stratégie

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.

Analyse des avantages

Les principaux avantages sont les suivants:

  1. Utiliser les prix d'ouverture/fermeture pour identifier rapidement les signaux de rupture.

  2. Des signaux d'entrée clairs et faciles à mettre en œuvre.

  3. 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.

  4. Placer les positions à la limite journalière pour éviter le risque d'écart de nuit.

  5. Neutre sur le marché, s'applique au forex, aux actions, aux cryptos, etc.

Analyse des risques

Quelques risques à prendre en considération:

  1. Arrêt fréquent des pertes avec ATR sur les marchés agités.

  2. Suradaptation à des instruments spécifiques et à des séances sans filtres supplémentaires.

  3. Le niveau des bénéfices fixes peut être inférieur en cas de forte tendance.

  4. Un mauvais timing sur les positions d'aplatissement pourrait manquer les tendances ou entraîner des pertes inutiles.

Les domaines d'amélioration

Quelques façons de l'optimiser davantage:

  1. Expériencez différentes techniques de stop loss pour différentes conditions de marché.

  2. Ajouter des filtres utilisant des indicateurs de momentum, etc. pour éviter les faux signaux.

  3. Ajustez dynamiquement les niveaux de prise de profit en fonction de la volatilité du marché.

  4. Optimiser le temps de coupe quotidien pour différents instruments et sessions de négociation.

Conclusion

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.")



Plus de