Stratégie High-Low


Date de création: 2023-09-14 17:53:17 Dernière modification: 2023-09-14 17:53:17
Copier: 0 Nombre de clics: 612
1
Suivre
1617
Abonnés

Principe de stratégie

La stratégie est basée sur le fait que les lignes K se comportent de la même manière que les hauts et les bas. Lorsque les lignes K se comportent de la même manière pendant une semaine, comme condition de déclenchement d’un signal de négociation.

La logique de l’opération est la suivante:

  1. Jugez que le prix le plus élevé de la ligne K actuelle ou de la ligne K précédente est égal au prix le plus élevé des deux lignes K précédentes

  2. Jugez que le prix minimum de la ligne K actuelle ou de la ligne K précédente est égal au prix minimum des deux lignes K précédentes

  3. La forme double fond apparaît lorsque le prix atteint un point bas.

  4. Le double sommet apparaît lorsque le prix atteint un sommet et se vide.

  5. Le point d’arrêt est placé à proximité du point de rupture et le point d’arrêt est le coefficient de la valeur de l’indicateur ATR

La stratégie tente de saisir les opportunités de tendance de cours après que les prix ont franchi les hauts et les bas de leur niveau. Le risque est contrôlé par une stratégie de stop-loss.

Avantages stratégiques

  • Les signaux de rupture sont clairs.

  • La méthode ATR Stop Stop permet de suivre les tendances dynamiquement

  • Les règles sont simples, les risques sont maîtrisés

Risque stratégique

  • Formation de hauts et de bas de niveau moins fréquente

  • Le point d’arrêt est trop proche et risque d’être bloqué.

  • Attention au paramètre ATR

Résumer

Cette stratégie permet de traiter les tendances en capturant des opportunités de rupture à la hausse ou à la baisse de son niveau, mais en tenant compte des paramètres de la stratégie de stop-loss et de la fréquence des transactions.

Code source de la stratégie
/*backtest
start: 2023-09-06 00:00:00
end: 2023-09-13 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © cherepanovvsb

//@version=5
strategy("SHL", overlay=true, margin_long=100, margin_short=100,initial_capital=100,default_qty_type = strategy.cash,default_qty_value =40,commission_type = strategy.commission.percent,commission_value =0.04,currency="EUR", process_orders_on_close=true)
atr = input.int(title="ATR length for abnormal candles", defval=5)
plotshape(low == low[1], style=shape.triangleup, location=location.belowbar, color=color.blue, title="1 Setup")
plotshape(high==high[1], style=shape.triangledown, location=location.abovebar, color=color.blue, title="1 Setup")
plotshape(low == low[1] and low[1]==low[2], style=shape.triangleup, location=location.belowbar, color=color.red, title="Triple Setup")
plotshape(low==high[1] or low==high[2] or low==high[3] or low==high[4] or low==high[5] or low==high[6], style=shape.triangleup, location=location.belowbar, color=color.green, title="Mirror Setup")
plotshape(high==low[1] or high==low[2] or high==low[3] or high==low[4] or high==low[5] or high==low[6], style=shape.triangledown, location=location.abovebar, color=color.green, title="Mirror Setup")
barcolor(high-low>2*ta.atr(atr)? color.yellow:na)


ATRlenght   = input.int(title="ATR length for take profit", defval=14, group="Strategy Settings")
rewardMultiplier= input.int(title="ATR multiplier", defval=5, group="Strategy Settings")

// Get ATR
atr1 = ta.atr(ATRlenght)

validlow =  low[1] == low[2] and not na(atr1)
validhigh = high[1]==high[2] and not na(atr1)

validlong = validlow and strategy.position_size == 0 and low[1]<low 
validshort = validhigh and strategy.position_size == 0 and high[1]>high

// Calculate Entrance, SL/TP
longStopPrice = low[1]-syminfo.mintick
longStopDistance = close - longStopPrice
longTargetPrice = close + (longStopDistance * rewardMultiplier)
shortStopPrice = high[1]+syminfo.mintick
shortStopDistance = shortStopPrice - close
shortTargetPrice = close - (shortStopDistance * rewardMultiplier)
var tradeStopPrice = 0.0
var tradeTargetPrice = 0.0
if validlong 
    tradeStopPrice := longStopPrice
    tradeTargetPrice := longTargetPrice
if validshort 
    tradeStopPrice := shortStopPrice
    tradeTargetPrice := shortTargetPrice
strategy.entry ("Long", strategy.long,1, when=validlong)
strategy.entry ("Short", strategy.short,1, when=validshort)

strategy.exit(id="Long Exit", from_entry="Long", limit=tradeTargetPrice, stop=tradeStopPrice, when=strategy.position_size > 0)
strategy.exit(id="Short Exit", from_entry="Short", limit=tradeTargetPrice, stop=tradeStopPrice, when=strategy.position_size < 0)

plot(strategy.position_size != 0 or validlong or validshort ? tradeStopPrice : na, title="Trade Stop Price", color=color.red, style=plot.style_linebr, transp=0)
plot(strategy.position_size != 0 or validlong or validshort ? tradeTargetPrice : na, title="Trade Target Price", color=color.green, style=plot.style_linebr, transp=0)