Comment vous y prendriez-vous pour verifier rapidement le niveau clef le plus proche dans un rayon de 50 points par exemple parmis une liste de niveaux clefs comme les niveaux symboliques (1000, 250…) ? Le but final est de “ne pas indiquer de signal” dans le cas où nous somme trop proche du prochain niveau.
Si j’exécute le code ci-dessous en backtests tick par tick, son exécution est extrêment longue… je suppose alors que c’est l’utilisation du tableau qui en est la cause ? Dans cet exemple, il y a les niveaux clefs syboliques mais aussi la place (en indices 2 et3) pour les niveaux MM200 et VWAP.
Auriez-vous en tête une autre approche (qu’un tableau ?) afin d’optimiser les temps de calcul (ici insoutenables en back test 100 kUnités)) ?
Pour optimiser ton code et réduire le temps d’exécution lors des backtests, voici quelques astuces :
Utiliser des Variables Simples Plutôt qu’un Tableau : Si les niveaux clés ne changent pas fréquemment, tu peux les définir comme des variables individuelles plutôt que de les stocker dans un tableau. Cela peut réduire le temps de calcul, car l’accès aux éléments d’un tableau est généralement plus lent que l’accès à des variables simples.
Optimiser la Boucle FOR : Ta boucle FOR parcourt tous les éléments du tableau à chaque tick. Si tu peux déterminer à l’avance quels niveaux sont susceptibles d’être les plus proches, tu peux réduire le nombre d’itérations de la boucle.
Utiliser des Instructions Conditionnelles Efficaces : Si tu as des conditions qui peuvent éliminer rapidement des cas non pertinents, place-les au début de ta boucle pour éviter des calculs inutiles.
Voici une version optimisée de ton code : (non testé)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
DEFPARAMDRAWONLASTBARONLY=false
// Définir les niveaux clés en tant que variables
keyLevel1=1000
keyLevel2=250
// Les niveaux dynamiques sont mis à jour à chaque barre
keyLevel3=pSMA200
keyLevel4=pVWAP
keyLevel5=100
keyLevel6=50
nearestLevel=-1
nearestLevelIndex=-1
minDiff=50
// Boucle optimisée pour vérifier les niveaux clés
To help us continually offer you the best experience on ProRealCode, we use cookies. By clicking on "Continue" you are agreeing to our use of them. You can also check our "privacy policy" page for more information.Continue