Stratégie de suivi des stop loss ouverts haut et bas


Date de création: 2024-02-18 14:30:08 Dernière modification: 2024-02-18 14:30:08
Copier: 7 Nombre de clics: 599
1
Suivre
1617
Abonnés

Stratégie de suivi des stop loss ouverts haut et bas

Aperçu

Cette stratégie est basée sur la conception de données à haute et basse fréquence de la ligne K. Les entrées cherchent des points de retournement de la tendance. Les entrées définissent ensuite une ligne d’arrêt en fonction de l’indicateur ATR et suivent les arrêts.

Principe de stratégie

Les entrées de cette stratégie proviennent des points d’ouverture élevés et bas. Un signal d’achat est généré lorsque le prix d’ouverture d’une ligne K est égal au prix le plus bas et un signal de vente lorsque le prix d’ouverture est égal au prix le plus élevé, ce qui indique qu’il peut y avoir une possibilité de renversement de tendance.

Les entrées sont ensuite calculées en fonction de l’indicateur ATR. Le stop-loss est calculé en fonction de l’indicateur ATR.

Le bénéfice cible est calculé en fonction du rapport entre le rendement du risque et le rendement du risque. Le prix cible d’achat est le prix d’entrée plus le rapport entre le rendement du risque et le prix d’arrêt. Le prix cible de vente est le prix d’entrée moins le rapport entre le rendement du risque et le prix d’arrêt.

L’ordre de clôture est émis lorsque le prix atteint le prix d’arrêt ou le prix cible.

Analyse des avantages

Cette stratégie présente les avantages suivants:

  1. Les signaux d’entrée sont simples, clairs, faciles à juger et évitent les vibrations répétées.

  2. L’ATR dynamique arrête les pertes pour maximiser les gains et éviter les pertes de chasse.

  3. Le contrôle des risques et des rendements, afin d’éviter la rétention des bénéfices et les opérations à très courte portée.

  4. Il s’adapte à différentes variétés et est facile à optimiser.

Analyse des risques

Cette stratégie comporte aussi des risques:

  1. Les signaux d’entrée peuvent être un peu retardés et manquer les meilleures positions possibles.

  2. Le prix d’arrêt est trop bas ou trop bas, ce qui peut entraîner des pertes de profit.

  3. Le module de jugement sans tendance est susceptible d’être pris en charge lors d’une secousse.

  4. La construction de granges de nuit est impossible à gérer.

La direction de l’optimisation:

  1. Le nombre d’années de croissance est le plus élevé de l’histoire de l’économie mondiale, et le taux de croissance est le plus élevé du monde.

  2. Ajustez les paramètres ATR ou ajoutez un contrôle de volatilité pour optimiser le stop loss.

  3. ajouter des modules de jugement de tendance ou de filtrage pour réduire l’erreur des signaux d’entrée.

  4. Ajout d’un module de traitement nocturne pour le stockage nocturne d’une variété spécifique.

Résumer

Cette stratégie est généralement simple et directe, les signaux d’entrée sont clairs, la stratégie de freinage est raisonnable et les risques sont maîtrisés. Cependant, il existe également des limitations, telles que l’insuffisance du jugement de la tendance, le retard du signal, etc. Ces problèmes fournissent également une direction pour l’optimisation future.

Code source de la stratégie
/*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.")