Peut-on utiliser des tables ?

Forums ProRealTime forum Français Support ProOrder Peut-on utiliser des tables ?

Viewing 7 posts - 1 through 7 (of 7 total)
  • #15654

    Dans une stratégie je voudrais déterminer automatiquement les supports et résistances, en analysant niveau par niveau (ex: tous les 5 pips) le nb de bougies traversant ce niveau dans les n dernières bougies.

    Je ne  vois pas de difficulté particulière dans une programmation classique où on peut manipuler des données ayant une dimension : des tables au sens programmation, ou des vecteurs au sens mathématique.

    Est-ce que quelqu’un sait si ça existe dans PRT ?

    Merci de vos lumières.

    #15814

    Non, les tableaux (arrays) ne peuvent être créés par l’utilisateur lui même dans son code. Cela viendra probablement un jour !

    Mais ce que tu souhaites faire pourrait être fait dans une boucle:

    Je souhaite déterminer le nombre de bougies A ayant traversé le niveau de prix X dans les N dernières bougies:

     

    #15832

    Merci, Nicolas.

    J’avais fait exactement ça, mais je l’avais inclus dans une autre boucle incrémentant le niveau de prix (ex: tous les 5 pips). Et c’est le résultat de cette incrémentation que je voulais mettre dans une table qui serait devenue la “table des supports/résistance”. Pas de table, donc je ne vais pas me définir 1000 variables !

    J’ai donc voulu me contenter de trouver le premier support et la première résistance en calculant le fameux nb de bougies de niveau en niveau et en ne mémorisant que le max. Ca marche très bien mais dès que je veux analyser une centaine de niveaux (les plus proches de mon prix) et sur une profondeur d’une ou plusieurs centaines de bougies (ce qu’il faut pour rechercher un support/résistance), je me fais jeter avec un message d’erreur de type “trop de calcul” et d’ailleurs, déjà à 10 niveaux x 10 bougies x la profondeur du backtest, ça pédale déjà lourdement… Bref la logique marche mais les limitations la rendent inutilisable…

    Donc pas de calcul auto des supports/résistances sauf autre idée, géniale bien sûr…

    Merci, Nicolas.

     

     

    #15837

    En effet, les tableaux uni ou multi dimensionnel sont un manque.

    Le moteur actuel n’aime pas trop avoir trop de boucles en même temps, d’autant plus si elles sont imbriquées, mais ça va changer j’ai ouïe dire.. Une autre solution est d’utiliser SUMMATION pour faire une somme des “true” retourné par un booléen, c’est le genre de chose que j’ai utilisé dans les vidéos récentes sur les screeners comme cette vidéo sur comment trouver des actions à fort potentiel ..

     

     

    #162575

    Bonjour.

    Je ne sais pas si la question est toujours d’actualité, mais c’est possible dans la V11 (je ne sais pas si ca marche aussi dans les versions précédentes puisque je ne l’ai trouvé que récemment).

    Pour cela, il faut ajouter $ devant le nom d’une variable. ex : $variable[x] où X est l’indice dans la table.

    La fonction Lastset($variable) retourne le dernier indice défini dans la table $variable.

    Pour créer une nouvelle entrée dans une table, $variable[lastset($variable)+1] = …

    Si lastset() retournait 10 avant ce code, sa valeur est à 11 après.

    Rem : l’indice 0 (zero) n’existe pas dans une table.

    Attention toutefois, l’utilisation de table nécessite géneralement l’utilisation de boucles (for..next, wile…wend) dans le code pour balayer les tables et cela peut très vite consommer beaucoup de memoire et ralentir l’affichage des cours (si c’est le cas, un petit triangle jaune avec un ! s’affiche en haut à droite de de la barre du graphe).

    Autre point : Apparement, les tables ne sont pas utilisables dans les pro-screeners.

    Dernière chose : Les utilisant, je vous recommande fortement de penser à “associer” au moins une autre table, qui conserve le n° du bar concerné. par exemple :

    $bar[lastset($bar)+1] = barindex                                => crée une nouvelle valeur dans $bar et y sauve le n° du bar concerné
    $type[lastset($type)+1] = 1                                           => crée une nouvelle valeur dans $Type et y sauve le type d’evenement
    $valeur[lastset($valeur)+1] = close                             => crée une nouvelle valeur dans $valeur et y sauve la valeur close

    (attention à bien faire evoluer les indices de ces 3 tables associées en MEME TEMPS, sinon on peut vite se trouver avec des incoherences. Donc si vous ajoutez un indice à l’une des tables, pensez à bien créer aussi celui des autres tables).

    #162576

    Merci beaucoup de votre réponse !

    En effet, depuis la V11 cette fonctionnalité existe, mais elle est en fait inutilisable pour ce que je veux faire car PRT limite exagérément le calcul : 2 boucles imbriquées (l’une pour la profondeur, l’autre pour le niveau) avec plusieurs dizaines de pas chacune entraînent un refus du calcul.

    J’ai cru y  échapper en utilisant la fonction “summation” (qui est une boucle implicite sur la profondeur)  à l’intérieur d’une seule boucle sur les niveaux, et c’est même pire…

    Bref j’ai abandonné cette idée !

    #162582

    Perso, ca m’a quand meme permis de créer un SEUL indicateur qui trouve et dessine 30 patterns harmoniques différentes, soit 60 au total (30 haussières et 30 baissières). Mais j’ai dû limiter le nb de bars analyser pour eviter trop de calculs  : 200 à 400 bougies en arriere avec un ecartement entre X et D de 200 à 100 bars max ne crée un retard d’affichage que de 2 à 6 sec. Pour ca, j’ai utilisé la fonction “if (islastbarupdate) then”. Comme cela, les calculs de validation des patterns à partir de fracales indicées ne se font que sur la bougie en cours de formation. idem pour les dessins et les textes à afficher.

    Je te mets un screenshot de ce que ca donne. Pour info, j’ai fait s’afficher les fractales prises en compte (trait jaune). Avant la zone à analyser (a gauche du graphe), comme tu peux le voir, le trait jaune n’apparait pas. Bon l’affichage est encore à revoir (chevauchement des textes) mais ca fonctionne. Et pour eviter encore les calculs, je peux aussi limiter l’affichage aux figures terminées (point D défini) à X bougie de celle en formation. Comme je n’ai que les harmoniques tradables.

     

Viewing 7 posts - 1 through 7 (of 7 total)

Create your free account now and post your request to benefit from the help of the community
Register or Login