ProRealCode - Trading & Coding with ProRealTime™
Bonjour,
Dans la documentation ProRealCode pour la fonction CALL, faut-il comprendre “parameter1, parameter2,…” au sens réel, booléen, ou autre, car je n’arrive pas à faire fonctionner l’appel.
Voici le problème:
Capture 1 : Création de l’algo “Oscillator” entièrement graphique mais qui retournera 4 valeurs X et Y pour entry, X et Y pour exit, et un signal que je n’utiliserais pas pour la suite.
Capture 2: Création de “My backtest” qui appelle “Oscillator” au sens booléen.
Capture 3: Création de “My backtest” qui appelle “Oscillator” au sens paramêtres réels.
Le flag “fSignal” ne me servira pas dans le backtest et reste donc ignoré.
Que n’ai-je pas compris ?
Cordialement.
Bonjour,
les variables entre crochets (les parameter1 parameter2 de la doc) ne sont pas à comprendre comme les variables de sortie mises dans la ligne return de l’indicateur, mais comme les éventuels paramètres d’entrée de l’indicateur. Ce ne sont donc ni les mêmes, ni en même nombre, que ce qui est avant le signal = dans la ligne CALL (ajoutons que dans le cas où l’indicateur n’a pas de paramètres d’entrée, alors il suffit de ne pas mettre de variables entre crochets du tout dans le CALL).
Bonjour @JC_Bywan,
Merci pour ces précisions, mais l’apprenti-codeur que je suis cale lamentablement à résoudre le problème.
Voici un complément d’informations.
La capture d’écran.montre l’algo “Oscillator” ET l’ébauche de “My backtest” sur le même panneau.
Comment dois-je écrire ma ligne d’appel pour pouvoir sortir “My backtest” dans un nouveau panneau sous le panneau “Oscillator” afin de pouvoir créer un backtest sous forme d’indicateur.
Je n’ai besoin que de 4 variables pour le backtest: X et Y entry , X et Y exit données par “Oscillator”
Cordialement.
Je sais à partir des infos que ton indicateur a 5 sorties, mais je ne connais pas les paramètres d’entrée de l’indicateur. Je vais supposer que s’il y en avait, tu les aurais mentionnés dans le complément d’informations, donc voici comment s’écrit le cas où il n’y en a pas, qui supprime les crochets:
myXentry, myYentry, myXexit, myYexit, ignored = CALL "ecrire ici le nom de l'indicateur"
@JC_Bywan ,
Ta question pose exactement le problème, je ne signale pas les paramêtres d’entrée de l’indicateur car je souhaite un backtest universel applicable sur n’importe quel algo.
J’ai actuellement un Big-Algo qui comprend algo1, algo2, algo3, etc …. Tous ces algos de paramètres divers envoient leurs X et Y entry et X et Y exit . Un sélecteur d’algos envoie au backtest ces 4 variables.
Je souhaite sortir le bactest de ce Big-Algo pour qu’il devienne universel avec n’importe quels types d’indicateurs en les appelant.
J’ai déjà réalisé My bactest sous Oscillator mais ce n’était qu”un double d’ Oscillator dont j’ai supprimé la partie graph or je veux un backtest indépendant se débrouillant seul avec mes 4 variables d’entrée.
Est-ce vraiment possible ? Peut-être pas, et si oui, quelle stucture adhoc adopter ?
Merci par avance.
PS: Je vais m’absenter une bonne semaine et je ne sais pas si j’aurais du réseau. A très bientôt.
Ouf ! J’ai du réseau…
Précisions complémentaires:
Compte-tenu de ma description ci-dessus, dans le cas d’un backtest qui serait totalement indépendant, le flag de la 5éme variable “fSignal” devient absolument nécéssaire: fSignal= 1 pour X et Y entry et -1 pour X et Y exit.
Je pense qu’il y a un risque non négligeable qu’on ne parle pas des mêmes choses en parlant “des entrées”. Donc assurons-nous d’être sur la même longueur d’onde, quand je parle des paramètres d’entrée de l’indicateur qui est “CALLé” (ton oscillator), je ne parle pas de valeurs tapées dans le script de l’indicateur, mais de paramètres qu’on peut modifier dans la fenêtre de propriétés de l’indicateur sans avoir besoin de modifier le code, voir dans cette vidéo PRT, à partir de 1mn jusqu’à 1mn50s:
http://www.youtube.com/watch?v=avgc88x_0_o
Et du moment que tu “call” par son nom un fichier .itf qui a ce genre d’entrées personnalisables, alors il a un nombre déterminé par toi d’entrées, peu importe la tambouille entre tous les x et y de toutes les sous-parties du fichier des algos1,2,3,4. S’il y en a 2 par exemple, appelons-les param1, param2, et que le fichier .itf “CALLé” a 5 sorties dans sa ligne return, alors dans le backtest qui fait le call, tu dois dire combien valent param1 et param2 pour que l’indicateur sache avec quoi travailler, cela peut se faire ainsi dans le backtest:
param1= ...donner une valeur pour ce backtest...
param2= ...donner une valeur pour ce backtest...
myXentry, myYentry, myXexit, myYexit, myFSignal= CALL “le nom de l’indicateur CALLé”[param1, param2]
Et s’il n’y a pas d’entrée personnalisable dans la fenêtre de propriétés de l’indicateur, alors on n’a rien à mettre entre crochets:
myXentry, myYentry, myXexit, myYexit, myFSignal= CALL “le nom de l’indicateur CALLé”
Merci infiniment @JC_Bywan pour toutes ces précisions. Je vais analyser tout cela. 🙂
Bonjour
Malgré ces explications, je cale encore avec cette fonction CALL.
Je résume mon problème: J’ai un big-algo avec nombre d’indicateurs et de paramêtres et un backtest inclus dont tous les résultats sont en mode Texte sur mon graphe. (Exemple backtest)
Je souhaite simplement sortir le backtest sous le graphe dans un nouveau panneau, ce qui me dispensera du booléen : Affichage ou non du backtest sur le graphe.
Comme exemple pédagogique j’ai codé ci-dessous Indicateur AB et Backtest AB.
// Indicateur AB
X= BarIndex
pA= 21
pB= 34
A= Average[pA](Close)
B= Average[pB](Close)
IF A CROSSES OVER B THEN
Signal= 1
DrawPoint(X, A, 3) Coloured("Lime")
ELSIF A CROSSES UNDER B THEN
Signal= -1
DrawPoint(X, B, 3) Coloured("Red")
ENDIF
RETURN A AS "A", B AS "B", Signal AS "Signal"
// Bactest AB
X= Barindex // X-axis
S= Close // Source
ignored, ignored, Signal= CALL "Indicateur AB" //[pA, pB]
IF f= 0 AND Signal= 1 THEN
f= 1
Xentry= X
Yentry= S
DrawText("Entry #Yentry#", Xentry, 0)
DrawPoint(X, -0.5, 5)
ELSIF f= 1 AND Signal= -1 THEN
f= 0
Xexit= X
Yexit= S
DrawText("Exit #Yexit#", Xexit, 0)
DrawPoint(X, 0.5, 5)
ENDIF
RETURN Signal
Si, comme dans mon big-algo, je neutralise les lignes 3 et 4 (pA et pB) et déclare pA et pB en vraies variables pour pouvoir immédiatement voir la performance sur le backtest, ici j’ai un message d’erreur.
Comment faire pour que le Backtest du panneau inférieur suive immédiatement les différentes valeurs testées de pA et pB de Indicateur AB ?
Merci par avance.
Bonsoir,
Ok, j’ai pu reproduire le problème, mais juste une fois, et depuis ça marche.
Pour cela, il a fallu, au lieu de créer directement “indicateur AB” avec ses paramètres externes pA et pB, que d’abord je crée et ajoute au graphique les 2 indicateurs tels qu’ajoutés en code inséré dans ton message, puis dans un deuxième temps j’ai supprimé pA et pB du script du code “indicateur AB” pour les mettre à la place en paramètres d’entrée externes. Ce faisant, la nature d’indicateur AB a changé, et l’autre indicateur “backtest AB” a alors affiché ton 1er message d’erreur et s’est enlevé du graphe.
De là, dans un 3ème temps, on ré-accède au script de “backtest AB” pour le réinstaller en le faisant ainsi tenir compte de la nouvelle nature d’indicateurAB et ses paramètres externes ajoutés, au passage on pense à rajouter à ” backtest AB” si ce n’est pas encore fait les 2 lignes pA=21 et pB=34 juste avant la ligne CALL (pour éviter la 2ème erreur: “veuillez définir les variables suivantes: pA, PB”).
Ainsi le “backtest AB” apparait sans erreur en nouveau panneau en bas du graphique.
Bonjour,
J’ai suivi attentivement ( 1er temps, 2eme temps) les explications mais bizarrement au 3eme temps la synchronisation des 2 panneaux n’a fonctionné qu’un seule fois.
J’entends par synchronisation les variations de pA et pB depuis l’ Indicateur.
Si j’ajoutais avant CALL, les lignes pA= 21 et pB= 34 comme demandé, j’obtenais un message d’erreur. (3eme temps Error 1)
La synchronisation n’a fonctionné que lorsque j’ai corrigé la ligne CALL par : ignored, ignored, Signal= CALL “Indicateur AB” [pA, pB] qui a bien pris en charge la variabilité de pA et pB depuis l’Indicateur, mais une seule fois comme dans ta reproduction du problème.!
Courage et merci pour ton aide, on va y arriver !
Bonjour,
Selon moi, le problème vient du fait que la fonction « Call » utilise les paramètres transmis par l’indicateur appelé…
On peut considérer cela comme une opération (transaction) unique… (one-way)
Il est possible de modifier les paramètres de l’indicateur appelé, mais dans ce cas, il faudra également exécuter à nouveau la fonction « Call »…
Ce n’est donc pas le cas que, si vous ajoutez l’indicateur appelé comme indicateur distinct dans le panneau supérieur et que vous modifiez les paramètres à cet endroit, la fonction « Call » prendra automatiquement en compte ces nouveaux paramètres…
Malheureusement, ce n’est pas ainsi que fonctionne la fonction « Call »…
Une précision pour être sûr qu’on se comprenne bien, les 3 temps, ce n’était pas un mode d’emploi général, c’était la seule façon par laquelle j’ai réussi à reproduire tes messages d’erreurs, et de là rétablir le bon fonctionnement, afin que tu puisses faire les modifications en partant de là où tu en étais.
On va faire autrement : je joins à ce post le fichier exporté « JC backtest AB », nommé ainsi pour ne pas écraser ton « backtest AB » si tu souhaites l’importer dans ta plateforme.
Il inclut l’indicateur callé « JC indicateur AB », dont le nom a été aussi modifié dans le script de “JC backtest AB”. Après import, tu peux afficher « JC indicateur AB » puis en-dessous « JC backtest AB ».
Ils marchent sur ma plateforme, plus d’une fois si ensuite je modifie dans le backtest les valeurs des lignes pA= et pB=
S’ils marchent sur la tienne aussi, tu pourras comparer avec ce que tu avais avant afin de voir ce qui est différent. Par exemple, si je regarde une de tes captures d’écran, je n’ai pas mis de paramètre externe à Backtest AB, mais il y a peut-être d’autres différences. S’ils ne marchent pas, alors nos 2 plateformes se comportent différemment (ce serait un autre problème).
Merci pour votre sagcité, je suis en PRT V12 et effectivement c’est peut-être un problème de plateforme…
Je jette l’éponge pour aujourd’hui après de multiples essais.
Bien cordialement.
Merci pour votre sagacité, (Coquille précédente)
Je viens d’interroger l’IA Claude :
Sur le fond, JS a raison:
Pour rester synchronisés, pensez à modifier les deux indicateurs en parallèle si vous changez les périodes manuellement (ProRealTime ne partage pas automatiquement une variable entre deux indicateurs distincts, même avec le même nom).
Sur la forme, JC n’a pas tort, car si la synchronisation fonctionne sur sa plateforme, on pourrait dire qu’il s’agit d’un bug positif ! Et çà … a fonctionné … aussi sur ma plateforme, sinon j’aurais depuis longtemps arrété les recherches.
Si ça suit → parfait, vous avez votre point d’édition unique. Si ça ne suit pas (ce que suggère la doc CALL), c’est que ProRealTime isole bien chaque instance et qu’il faudra alors ajuster les deux réglages en parallèle — mais au moins la formule de croisement n’existe plus qu’à un seul endroit, ce qui limite déjà nettement le risque d’erreur entre les deux affichages.
Encore un grand Merci pour vos contributions.
Describe what this topic is trying to build, in plain English, and ProRealAI writes the ProRealTime™ indicator, screener or system for you.
Fonction CALL ProBuilder : type des paramètres et usage
This topic contains 14 replies,
has 3 voices, and was last updated by
Bernard13
4 weeks, 1 day ago.
| Forum: | ProBuilder : Indicateurs & Outils Personnalisés |
| Language: | French |
| Started: | 09/08/2026 |
| Status: | Active |
| Attachments: | 14 files |
The information collected on this form is stored in a computer file by ProRealCode to create and access your ProRealCode profile. This data is kept in a secure database for the duration of the member's membership. They will be kept as long as you use our services and will be automatically deleted after 3 years of inactivity. Your personal data is used to create your private profile on ProRealCode. This data is maintained by SAS ProRealCode, 407 rue Freycinet, 59151 Arleux, France. If you subscribe to our newsletters, your email address is provided to our service provider "MailChimp" located in the United States, with whom we have signed a confidentiality agreement. This company is also compliant with the EU/Swiss Privacy Shield, and the GDPR. For any request for correction or deletion concerning your data, you can directly contact the ProRealCode team by email at privacy@prorealcode.com If you would like to lodge a complaint regarding the use of your personal data, you can contact your data protection supervisory authority.