“CALL” is an instruction made for calling value of user indicator. Add under brackets as many parameters the personal indicator have.
Syntax:
1 |
myValue = CALL "myIndicator"[parameter1,parameter2] |
If the personal indicator returns more than one value from its RETURN instruction, the CALL function should be coded like this:
(case of an indicator that return 3 values)
1 |
myValue1, myValue2, myValue3 = CALL "myIndicator"[parameter1,parameter2] |
3 variables are set from the the 3 returns variables of the custom indicator “myIndicator”.
Every defined variables must be used while programming with ProBuilder. So if your called indicator has 3 variables and you don’t want/need to use the second one, this value must be “ignored” by the CALL instruction:
1 |
myValue1, ignored, myValue3 = CALL "myIndicator"[parameter1,parameter2] |
The “ignored” word will be interpreted by ProBacktest/ProOrder as a null variable that will not be used by the program.
In the case where the indicator that is called uses a price constant of type ‘CustomClose’, the CALL statement must specify it in parenthesis like this:
1 |
myValue = CALL "myIndicator"[parameter1,parameter2] (Close) |
The price constant specified in parentheses will of course have to be the same as that used by the called indicator to obtain the same results (e.g: Close, MedianPrice, TotalPrice, High, Low, ..).
Example:
1 2 3 4 5 |
myValue = CALL "my Personnal Indicator Name"[7,14] a = myValue / 2 RETURN a |
Bonjour Nicolas
Comment peut faire pour appeler une moyenne mobile d’une unité de temps supérieur en ticks (100 T) dans un programme d’une unité inférieur (20 T) ?
NB : je retraduirai ma question et ta réponse pour la communauté non francophone
merci
Il suffit de multiplier le nombre de périodes de la moyenne mobile: 100 / 20 = 5.
Il y a 5 fois plus de bougies à considérer pour calculer correctement la MM du graphique 100 ticks.
Cette réponse est valable et viable pour les graphiques décorrélés du temps comme le graphique en ticks, on peut toutefois l’utiliser dans les timeframes normaux, mais dans une moindre mesure (les données restituées seront différentes).
Bonjour Nicolas
Merci pour ton retour et ta réactivité.
Ok pour les MM.
Par contre dans le cas ou je cherche réellement à appeler un RSI ou un stochastique d’un unité 100T alors que je suis dans un programme en 20T, comment puis faire ?
Bien à Toi
Si tu as bien compris, c’est la même chose. Il n’y a pas de lien de temps mais uniquement une quantité de chandeliers. CQFD
ok Nicolas pour les MM mais pour intégrer un RSI 14 d’une UT 100 dans le programme d’une UT 20, je ne vois pas comment tu fais ?
So how does one go about writing a function with parameters… Where are the parameters passed to the function?
Parameters are the variables you set as external ones in the indicator settings.
I would like to CALL an indicator (one from the already available from PRT) from a prorealtime indicator but I can’t do it.
For example I needed pivotpoints, I tried calling it like this but I got a “Pivots Points does not exist”.
Am I missing something? Is it possible to call “Pivots Points” in some way? If yes, which parameters should I pass them (pivot points has some dropdowns and checkboxes as parameters when we add it to a chart)?
Res3, MidR3, Res2, MidR2, Res1, MidR1, Pivot, MidS1, Sup1, MidS2, Sup2, MidS3, Sup3 = CALL “Points Pivots”[5, 0, ?, ?, ?]
You cannot CALL the pivot points indicators. You have to use custom code in order to calculate and use that pivot points price levels, you’ll find many examples on the website.
Bonjour,
J’ai récupéré un indicateur sur internet et j’aimerai en faire un screener. Par contre, le code de cet indicateur n’est pas accessible.
Donc j’aurais voulu faire un call, tester un des résultats de cet indicateur et faire mon screener en fonction de celui-ci.
Le problème est que l’indicateur me renvoie des fois 3, des fois 4 résultats et cela peut se passer sur le même indice.
Avec la fonction “CALL”, je suis obligé de dire que j’attends soit 3, soit 4 résultats.
Lorsque j’exécute le screener, cela génère donc une erreur en me disant que l’indicateur attend 3 résultats lorsque j’en mets 4 et vice-versa.
Même en mettant le mot clé “ignored”, cela ne fonctionne pas.
Ma question est donc de savoir si l’on peut gérer ce genre de phénomène?
Y a-t-il par exemple une fonction permettant de récupérer le nombre de résultats attendus lors d’un “CALL”?
Ou, y a-t-il un moyen de récupérer uniquement le 2e résultat d’un “CALL”? Car j’ai uniquement besoin de celui-ci.
Ou, peut-on récupérer tous les résultats dans un tableau sans définir la taille de ce tableau?
Ou encore, y a-t-il une gestion des erreurs, un genre de “Try”-“Catch” permettant de faire quelque chose comme :
si mon call avec 3 résultats génère une erreur
alors je fais mon traitement avec 4 résultats
sinon je fais mon traitement avec 3 résultats
ce qui donnerait, avec un try catch :
Try // –> je fais mon traitement avec 3 résultats
“CALL avec 3 résultats”
“Je continue mon traitement avec les 3 résultats”
Catch // –> si le traitement ne fonctionne pas, je fais celui avec 4 résultats
“CALL avec 4 résultats”
“Je continue mon traitement avec les 4 résultats”
Merci pour votre aide.
Cela vient d’un bug introduit dans une récente mise à jour de la version 11. Un patch est en cours de préparation, un peu de patience et les CALL fonctionneront à nouveau comme avant avec les codes cachés de certains indicateurs.
Nicolas,
Merci pour votre réponse et votre réactivité.
Très bien, j’attendrai donc le patch.
Hi,
and how we can get the parameters sended with this function? In the trading system, we can CALL an indicator with [param1,param2….]…….and in the indicator we can retrieve param1 using ¿what?
Thanks.
[param1,…] are the external settings you have set in your indicator. That way it is convenient to CALL multiple times the same indicator but with different settings.
Bonjour,
J’aimerai récupérer le résultat de la bougie précédente avec un CALL . Merci
Bonjour,
Est il possible de passer des paramètres complexes à un indicateur personnel? Par exemple, je voudrais créer un indicateur “non croisement” et l’utiliser avec deux moyennes mobiles … Ou avec le %K et le %D du stochastique, … Pour le moment, je ne sais passer que des paramètres simples. Par avance, Merci pour la réponse.
On peut passer plusieurs paramètres dans un CALL, des nombres entiers ou décimaux.