Bonjour
Je me mets a faire des backtests pour verifier une strategie vraiment toute simple : acheter a 96/100 de l ouverture et vendre au point de fermeture.
Rien de plus easy a faire en daily a priori… et pourtant… mon backtest ne fonctionne absolument pas et ne me retourne aucun resultat.
Bon je debute donc il y a sans doute une chose que je n ai pas du comprendre (je teste cela sur DroneVolt depuis le 24 aout)
(Et pardon pour le titre mais je ne savais pas vraiment quoi mettre pour le coup)
En vous remerciant
// Conditions pour ouvrir une position acheteuse
IF (close = 96/100*DOpen(0)) THEN
BUY 2500 CASH AT MARKET
ENDIF
// Conditions pour fermer une position acheteuse
IF (close = DClose(0)) THEN
SELL AT MARKET
ENDIF
Cela est dû au fait qu’il est presque impossible qu’un prix soit exactement égal, comme vous l’avez écrit, au prix retourné par votre formule à la ligne 2.
Essayez d’utiliser > = ou <= (également à la ligne 7).
Il y a plusieurs problèmes dans ta façon de faire.
- Pour mémoire, le code n’est lu qu’une seule fois en fin de bougie et les ordres lancés à l’open suivant. Il faut donc descendre en unité de temps en utilisant les données OHLC de la bougie daily.
- tu compares des valeurs strictes. Il y a très peu de chance que le close d’une bougie soit strictement égale à 96% de l’open daily, dans ce cas il vaut mieux utiliser un comparatif de type > ou = (>=)
Les constantes OHLC des bougies daily s’obtiennent avec les instructions Dopen(0), Dhigh(0), Dlow(0), Dclose(0)
Pas mieux
Meme en changeant. Cependant je suis etonne car… la valeur de fermeture est necessairement celle du prix, donc on ne devrait pas avoir a faire une fourchette
M enfin, meme en mettant une fourchette cela ne fonctionne pas
c1 = (close <= 96/100*DOpen(0))
IF c1 THEN
BUY 2500 CASH AT MARKET
ENDIF
// Conditions pour fermer une position acheteuse
c2 = (close >= 99/100*DClose(0) and close <= 101/100*DClose(0))
IF c2 THEN
SELL AT MARKET
ENDIF
J ai essaye de changer en mettant sur le graphe a la demie heure, heure, minute, mais sans succes egalement
Bon j ai trouve une solution
Pas ideal mais toujours ca
DEFPARAM CumulateOrders = False
// Conditions pour ouvrir une position acheteuse
c1 = close <= 96/100*DOpen(0)
IF c1 THEN
BUY 2500 CASH AT MARKET
ENDIF
// Conditions pour fermer une position acheteuse
c2 = Time >= 170000
IF c2 THEN
SELL AT MARKET
ENDIF