Stratégie de négociation quantitative de la boîte de Darvas

Auteur:ChaoZhang est là., Date: 2023-12-27 à 14h45
Les étiquettes:

img

Résumé

La stratégie Trending Darvas Box est une stratégie de trading à court terme qui utilise le canal Darvas Box pour capturer les tendances du marché. Le mécanisme de base repose sur l'indicateur Darvas Box pour déterminer la dynamique du marché et localiser les opportunités de trading.

La logique de la stratégie

  • Utilisez le paramètre longueur pour définir la taille de la boîte Darvas, qui est de 5 barres par défaut dans cette stratégie.
  • Déterminer la direction de la tendance sur la base des écarts élevés/faibles, et prendre les positions longues/courtes correspondantes.
  • Lorsque le prix dépasse le sommet de la boîte, une ligne verte de la boîte supérieure est tracée.
  • Lorsque le prix dépasse le bas de la case, une ligne rouge BottomBox est tracée.
  • Utilisez le système de moyenne mobile comme indicateur auxiliaire.
  • Utilisez RVI pour identifier la zone de surachat/survente.

Les entrées sont prises lorsque tous les indicateurs ci-dessus donnent leur accord. Le stop loss est réglé à la bande opposée de la zone Darvas. Les sorties sont gérées avec la direction RVI.

Analyse des avantages

  • Le canal de la boîte Darvas capte efficacement la tendance du marché.
  • Des signaux de sortie fréquents, une bonne fréquence d'entrées.
  • Une boîte raisonnable arrête le réglage des pertes.
  • Les indicateurs auxiliaires améliorent la précision.

Analyse des risques

  • Une large plage de stop-loss, un risque plus élevé par transaction.
  • Les transactions longues peuvent être arrêtées lors de retombées mineures.
  • La direction de la boîte n'est pas toujours correcte.
  • Un réglage fin est nécessaire pour que les indicateurs auxiliaires s'alignent sur la boîte.

Les paramètres auxiliaires doivent également être optimisés pour filtrer efficacement les signaux.

Directions d'optimisation

  • Testez la longueur de la boîte pour trouver la taille optimale.
  • Optimisez les paramètres auxiliaires pour qu'ils s'adaptent au mieux à la boîte.
  • Essayez d'autres indicateurs auxiliaires pour une vérification ultérieure du signal, par exemple KDJ, MACD.
  • Testez les paramètres stop loss et take profit pour une plus grande stabilité.

Conclusion

En résumé, la stratégie Trending Darvas Box est une stratégie de trading agressive ciblant les tendances à court terme. Elle capte rapidement les changements de tendance avec le canal de la boîte Darvas, tandis que les indicateurs auxiliaires aident à améliorer la précision.


/*backtest
start: 2023-11-26 00:00:00
end: 2023-12-26 00:00:00
period: 1d
basePeriod: 1h
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/
// © xxy_theone
// https://www.youtube.com/watch?v=YYxlnFOX9sQ
// This strategy script has been made to backtest the strategy explained in the video above


//@version=5
strategy(shorttitle = "Darvas Box Test", title="TradeIQ Darvas Box Test", overlay=true, pyramiding=0, default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=100, currency=currency.USD)

// === INPUT BACKTEST RANGE ===
var GRP1 = "Backtest Range"
fromDate = input(timestamp("7 Mar 2022 00:00 +0000"), "From", group=GRP1)
toDate = input(timestamp("19 Mar 2022 23:59 +0000"), "To", group=GRP1)
window() =>  true


var GRP3 = "Darvas Box"
boxp=input(5, "Box Length", group=GRP3)

LL = ta.lowest(low,boxp)
k1=ta.highest(high,boxp)
k2=ta.highest(high,boxp-1)
k3=ta.highest(high,boxp-2)

NH =  ta.valuewhen(high>k1[1],high,0)
box1 =k3<k2
TopBox = ta.valuewhen(ta.barssince(high>k1[1])==boxp-2 and box1, NH, 0)
BottomBox = ta.valuewhen(ta.barssince(high>k1[1])==boxp-2 and box1, LL, 0)


plot(TopBox, linewidth=3, color=color.green, title="TBbox") 
plot(BottomBox, linewidth=3, color=color.red, title="BBbox")


var GRP4 = "MavilimW"

fmal=input(3,"First Moving Average length", group=GRP4)
smal=input(5,"Second Moving Average length", group=GRP4)
tmal=fmal+smal
Fmal=smal+tmal
Ftmal=tmal+Fmal
Smal=Fmal+Ftmal

M1= ta.wma(close, fmal)
M2= ta.wma(M1, smal)
M3= ta.wma(M2, tmal)
M4= ta.wma(M3, Fmal)
M5= ta.wma(M4, Ftmal)
MAVW= ta.wma(M5, Smal)
col1= MAVW>MAVW[1]
col3= MAVW<MAVW[1]
colorM = col1 ? color.blue : col3 ? color.red : color.yellow

plot(MAVW, color=colorM, linewidth=2, title="MAVW")


var GRP5 = "Relative Vigor Index"
len = input.int(10, title="Length", minval=1, group=GRP5)
rvi = math.sum(ta.swma(close-open), len)/math.sum(ta.swma(high-low),len)
sig = ta.swma(rvi)
offset = input.int(0, "Offset", minval = -500, maxval = 500, group=GRP5)
//plot(rvi, color=#008000, title="RVGI", offset = offset)
//plot(sig, color=#FF0000, title="Signal", offset = offset)


var longStopSet = false

long = ta.crossover(close,TopBox) and close > MAVW ? true : false
longClose = strategy.opentrades.profit(strategy.opentrades-1)>0 and ta.crossunder(rvi,sig) ? true : false
strategy.entry("Long Position", strategy.long, when = long and window() and strategy.position_size==0 and strategy.closedtrades<100)
if(longStopSet==false and strategy.position_size > 0)
    strategy.exit("exit", "Long Position", stop=BottomBox)
    longStopSet := true
if(strategy.position_size==0)
    longStopSet := false
strategy.close("Long Position", when = longClose)

var shortStopSet = false

short = ta.crossunder(close,BottomBox) and close < MAVW ? true : false
shortClose = strategy.opentrades.profit(strategy.opentrades-1)>0 and ta.crossover(rvi,sig) ? true : false
strategy.entry("Short Position", strategy.short, when = short and window() and strategy.position_size==0 and strategy.closedtrades<100)
if(shortStopSet==false and strategy.position_size < 0)
    strategy.exit("exit", "Short Position", stop=TopBox)
    shortStopSet := true
if(strategy.position_size==0)
    shortStopSet := false
strategy.close("Short Position", when = shortClose)


Plus de