Bonjour,
Je suis débutant sur PRT.
J’ai créée l’indicateur suivant qui fonctionne comme je m’y attendais c’est à dire : Renvoi 1 pour signal d’achat et -1 pour signal de vente
// Description condition haussiere
TIMEFRAME(1 hour)
C1 = Close > (DHigh(1)+DLow(1)+DOpen(0))/3
C2 = Close > Average[100](close)
C3 = Close > Average[130](close)
C4 = Close > Average[200](close)
// Description condition baissiere
C17 = Close < (DHigh(1)+DLow(1)+DOpen(0))/3
C18 = Close < Average[100](close)
C19 = Close < Average[130](close)
C20 = Close < Average[200](close)
TIMEFRAME(15 minutes)
C5 = Close > (DHigh(1)+DLow(1)+DOpen(0))/3
C6 = Close > Average[100](close)
C7 = Close > Average[130](close)
C8 = Close > Average[200](close)
// Description condition baissiere
C21 = Close < (DHigh(1)+DLow(1)+DOpen(0))/3
C22 = Close < Average[100](close)
C23 = Close < Average[130](close)
C24 = Close < Average[200](close)
TIMEFRAME(5 minutes)
C9 = Close > (DHigh(1)+DLow(1)+DOpen(0))/3
C10 = Close > Average[100](close)
C11 = Close > Average[130](close)
C12 = Close > Average[200](close)
C13 = Average[100](close) > Average[200](close)
C14 = Average[130](close) > Average[200](close)
C33 = Average[100](close) > Average[130](close)
// Description condition baissiere
C25 = Close < (DHigh(1)+DLow(1)+DOpen(0))/3
C26 = Close < Average[100](close)
C27 = Close < Average[130](close)
C28 = Close < Average[200](close)
C29 = Average[100](close) < Average[200](close)
C30 = Average[130](close) < Average[200](close)
C35 = Average[100](close) < Average[130](close)
//C31 = Stochastic[14,3](close[1]) > 80
//C32 = Stochastic[14,3](close[1]) CROSSES UNDER Stochasticd[14,3,5](close [1])
IF C1 AND C2 AND C3 AND C4 THEN
IF C5 AND C6 AND C7 AND C8 THEN
IF C9 AND C10 AND C11 AND C12 AND C13 AND C14 AND C33 THEN
IF Stochasticd[11,3,5]<20 THEN
IF Stochastic[11,3] CROSSES OVER Stochasticd[11,3,5] THEN
R=1
ELSE
R=0
ENDIF
ELSE
R=0
ENDIF
ELSE
R=0
ENDIF
ELSE
R=0
ENDIF
ENDIF
IF C17 AND C18 AND C19 AND C20 THEN
IF C21 AND C22 AND C23 AND C24 THEN
IF C25 AND C26 AND C27 AND C28 AND C29 AND C30 AND C35 THEN
IF Stochasticd[11,3,5]>80 THEN
IF Stochastic[11,3] CROSSES UNDER Stochasticd[11,3,5] THEN
R=-1
ELSE
R=0
ENDIF
ELSE
R=0
ENDIF
ELSE
R=0
ENDIF
ELSE
R=0
ENDIF
ENDIF
RETURN R
J’ai voulu créer un Probacktest en m’appuyant sur cet indicateur mais cela ne fonctionne pas.
L’outil me renvoie le message suivant : “Le Backtest ne peut pas démarrer à cause d’une erreur d’analyse de code : ligne 2, colonne 0”.
Je ne sais pas comment résoudre le problème.
Pourriez-vous m’aider ?
Cordialement
Bonjour, quel est le code du backtest précisément? Seul le code de l’indicateur est joint, donc on ne peut pas supposer que c’est “cette” ligne 2 ci-dessus qui est à regarder. A moins que l’indicateur ait été copié-collé tel quel dans une fenêtre de backtest, auquel cas il faut enlever la ligne return, ajouter les ordres d’achat, vente et/ou target et/ou stop avant de pouvoir considérer que la transformation de l’indicateur en backtest est exploitable sans erreur.
Bonjour,
Merci pour votre retour
Oui désolé… voici le code du Probacktest
L’erreur apparait dès ce simple code associé à l’indicateur dont j’ai transmis le code.
// Définition des paramètres du code
DEFPARAM CumulateOrders = False // Cumul des positions désactivé
// Conditions pour ouvrir une position acheteuse
indicator1 = CALL "#IND_Mala_Debutant HB"(close)
c1 = (indicator1 = 1)
IF c1 THEN
BUY 1 CONTRACT AT MARKET
ENDIF
Fonctionne sans call:
DEFPARAM CumulateOrders = False
TIMEFRAME (1 hour)
C1 = Close > (DHigh(1)+DLow(1)+DOpen(0))/3
C2 = Close > Average[100](close)
C3 = Close > Average[130](close)
C4 = Close > Average[200](close)
// Description condition baissiere
C17 = Close < (DHigh(1)+DLow(1)+DOpen(0))/3
C18 = Close < Average[100](close)
C19 = Close < Average[130](close)
C20 = Close < Average[200](close)
TIMEFRAME(15 minutes)
C5 = Close > (DHigh(1)+DLow(1)+DOpen(0))/3
C6 = Close > Average[100](close)
C7 = Close > Average[130](close)
C8 = Close > Average[200](close)
// Description condition baissiere
C21 = Close < (DHigh(1)+DLow(1)+DOpen(0))/3
C22 = Close < Average[100](close)
C23 = Close < Average[130](close)
C24 = Close < Average[200](close)
TIMEFRAME(5 minutes)
C9 = Close > (DHigh(1)+DLow(1)+DOpen(0))/3
C10 = Close > Average[100](close)
C11 = Close > Average[130](close)
C12 = Close > Average[200](close)
C13 = Average[100](close) > Average[200](close)
C14 = Average[130](close) > Average[200](close)
C33 = Average[100](close) > Average[130](close)
// Description condition baissiere
C25 = Close < (DHigh(1)+DLow(1)+DOpen(0))/3
C26 = Close < Average[100](close)
C27 = Close < Average[130](close)
C28 = Close < Average[200](close)
C29 = Average[100](close) < Average[200](close)
C30 = Average[130](close) < Average[200](close)
C35 = Average[100](close) < Average[130](close)
//C31 = Stochastic[14,3](close[1]) > 80
//C32 = Stochastic[14,3](close[1]) CROSSES UNDER Stochasticd[14,3,5](close [1])
IF C1 AND C2 AND C3 AND C4 THEN
IF C5 AND C6 AND C7 AND C8 THEN
IF C9 AND C10 AND C11 AND C12 AND C13 AND C14 AND C33 THEN
IF Stochasticd[11,3,5]<20 THEN
IF Stochastic[11,3] CROSSES OVER Stochasticd[11,3,5] THEN
R=1
ELSE
R=0
ENDIF
ELSE
R=0
ENDIF
ELSE
R=0
ENDIF
ELSE
R=0
ENDIF
ENDIF
IF C17 AND C18 AND C19 AND C20 THEN
IF C21 AND C22 AND C23 AND C24 THEN
IF C25 AND C26 AND C27 AND C28 AND C29 AND C30 AND C35 THEN
IF Stochasticd[11,3,5]>80 THEN
IF Stochastic[11,3] CROSSES UNDER Stochasticd[11,3,5] THEN
R=-1
ELSE
R=0
ENDIF
ELSE
R=0
ENDIF
ELSE
R=0
ENDIF
ELSE
R=0
ENDIF
ENDIF
if R=1 then
BUY 1 CONTRACT AT MARKET
ENDIF
Bonjour,
Je vous remercie beaucoup.
Effectivement ça marche.
Du coup j’ai une questions svp
– Est-ce que cela veut dire que je peux pas faire appel à un indicateur que j’ai créé pour l’utiliser dans un Probacktest (sauf à l’adapter comme vous me l’indiquez) ?
Non c’est bien possible d’utiliser un CALL, cependant le message d’erreur que tu obtiens ne nous permet pas de débloquer la situation, le mieux étant de lancer une demande de support technique via l’interface de la plateforme et en y référant ce sujet dans le corps du message, merci.
WimParticipant
Junior
Je suis tombé dans ce piège plusieurs fois. Dans l’indicateur appelé par la commande CALL il y a du code MTF (MultiTimeFrame). ProBacktTest n’aime pas du code MTF dans une subroutine. Quand tu intègres le code MTF dans la stratégie même, comme montré par JC_Bywan, ProBackTest l’exécute sans faille. Dommage que le message d’erreur de PRoBackTest ne donne pas ce tuyeau.
C’es typique d’un problème de CALL de Multiframe. Donc, coller directement le code de l’indicateur dans l’Algo.