Besoin d'aide code PRT.

Forum sur le métier de trader : livres, outils, stations de trading, organisation d'une journée et réalité du métier, racontée par ceux qui l'exercent.
Avatar du membre
Ice.
Apprenti Jedi
Messages : 503
Enregistré le : 12 juil. 2013 11:15

Besoin d'aide code PRT.

Message non lu par Ice. »

Bonjour à tous !

Je fais appelle à vous car prorealtime me donne du fil à retordre en ce moment... Voici ce que j'aimerais coder :

-Un indicateur X arrive à un seuil (par exemple 3), puis retombe à un autre seuil (par exemple 1). Si moins de R minutes se sont écoulés entre ces deux moments --> signal.

J'ai d'abord cru y arriver avec une boucle while/break, puis il s'est avéré que non. Ensuite j'ai testé avec les boucles for, mais cela ne fonctionne pas non plus. Le soucis c'est qu'une fois que mon indic tombe à 1, s'il remonte un peu et retombe à 1, cela me remet un signal que je ne souhaite pas. A chaque fois que je teste quelque chose d'autre qui me parait correct, la boucle est infinie. Yé n'en peux plus :lol: Avez vous une idée de la solution ? :geek:

exemple qui ne marche pas :

Code : #

While (highest[R](X)>=3) DO
     IF X<1 THEN
          SignalVente = 1
     ELSE
         SignalVente= 0
   ENDIF
  BREAK
WEND
Merci beaucoup beaucoup !
ladefense92800
Maître Jedi
Messages : 4289
Enregistré le : 18 déc. 2011 18:21

Re: Besoin d'aide code PRT.

Message non lu par ladefense92800 »

ça m interresse aussi ......
Khepesh
Stormtrooper
Messages : 130
Enregistré le : 19 févr. 2013 21:59

Re: Besoin d'aide code PRT.

Message non lu par Khepesh »

c'est bizarre la description de ton "souhait de code" me fait penser aux screens qu'a posté teg54 il y a quelques jours :roll:

et même si c’était pas le but, ça m'y fait penser quand même ;)

pour revenir au topic : je n'ai malheureusement pas de solution a ton problème (pas retouché a PRT depuis quelques mois...)

PS : t'as les balises

Code : #

[code] pour rendre ton code plus lisible 
[/code]
Avatar du membre
Ice.
Apprenti Jedi
Messages : 503
Enregistré le : 12 juil. 2013 11:15

Re: Besoin d'aide code PRT.

Message non lu par Ice. »

Khepesh a écrit :c'est bizarre la description de ton "souhait de code" me fait penser aux screens qu'a posté teg54 il y a quelques jours :roll:
C'est en effet le même principe ;)

Merci pour les balises !
Arnaud_vh
Apprenti Jedi
Messages : 605
Enregistré le : 10 juin 2013 14:28

Re: Besoin d'aide code PRT.

Message non lu par Arnaud_vh »

Ma question va peut être paraître bête mais tu as bien compris que quand tu codes un programme sous prt le code est déjà à l'intérieur d'une boucle while dans laquelle on rentre à chaque tick ?
Goodgame42
Stormtrooper
Messages : 234
Enregistré le : 29 nov. 2012 13:19

Re: Besoin d'aide code PRT.

Message non lu par Goodgame42 »

Viens en pv Ice je vais voir ce que je peux faire ;-)
Avatar du membre
Ice.
Apprenti Jedi
Messages : 503
Enregistré le : 12 juil. 2013 11:15

Re: Besoin d'aide code PRT.

Message non lu par Ice. »

Arnaud_vh a écrit :Ma question va peut être paraître bête mais tu as bien compris que quand tu codes un programme sous prt le code est déjà à l'intérieur d'une boucle while dans laquelle on rentre à chaque tick ?
Ta remarque n'est pas bête du tout ! Mais oui, en effet, le code tourne à chaque tick ;)
Goodgame42 a écrit :Viens en pv Ice je vais voir ce que je peux faire ;-)
En MP tu veux dire ! (Déformation professionnel :mrgreen: ?)


Merci à vous deux :top:
Arnaud_vh
Apprenti Jedi
Messages : 605
Enregistré le : 10 juin 2013 14:28

Re: Besoin d'aide code PRT.

Message non lu par Arnaud_vh »

Ice. a écrit :
Arnaud_vh a écrit :Ma question va peut être paraître bête mais tu as bien compris que quand tu codes un programme sous prt le code est déjà à l'intérieur d'une boucle while dans laquelle on rentre à chaque tick ?

Ta remarque n'est pas bête du tout ! Mais oui, en effet, le code tourne à chaque tick ;)
Si tu le sais je ne comprends pas pourquoi tu rajoutes un while dans ton programme, un IF suffit et éviterait les boucles infinis.
Avatar du membre
Ice.
Apprenti Jedi
Messages : 503
Enregistré le : 12 juil. 2013 11:15

Re: Besoin d'aide code PRT.

Message non lu par Ice. »

La boucle que j'ai mis en exemple n'est pas infinie !

Je pense qu'une boucle est plus appropriée qu'un if car dès que l'indicateur X retombe à 1, je souhaite que la boucle se casse et qu'elle ne tourne plus. A mon avis faire cela avec un if est assez laborieux (du moins, je ne vois pas encore comment faire)
Arnaud_vh
Apprenti Jedi
Messages : 605
Enregistré le : 10 juin 2013 14:28

Re: Besoin d'aide code PRT.

Message non lu par Arnaud_vh »

Ice. a écrit :La boucle que j'ai mis en exemple n'est pas infinie !

Je pense qu'une boucle est plus appropriée qu'un if car dès que l'indicateur X retombe à 1, je souhaite que la boucle se casse et qu'elle ne tourne plus. A mon avis faire cela avec un if est assez laborieux (du moins, je ne vois pas encore comment faire)
Dans la mesure où ton break est mal placé je comprends bien que ta boucle n'est pas infinie. Là tu y passes une fois si la condition d'entrée est vrai et tu sors car le break n'est pas conditionné. Pour faire un peu plus ce que tu veux il faudrait qu'il soit dans le IF X<1 du genre.

Code : #

While (highest[R](X)>=3) DO
     IF X<1 THEN
          SignalVente = 1
          BREAK
     ELSE
         SignalVente= 0
   ENDIF
WEND
Mais ça a de forte de chance de faire une boucle infinie ...

D'un point de vu plus fondamental, la programmation à base de break, goto & Co c'est à proscrire
ladefense92800
Maître Jedi
Messages : 4289
Enregistré le : 18 déc. 2011 18:21

Re: Besoin d'aide code PRT.

Message non lu par ladefense92800 »

ice demande a teg .
Avatar du membre
teg54
Compagnon Jedi
Messages : 1560
Enregistré le : 30 mars 2012 09:00

Re: Besoin d'aide code PRT.

Message non lu par teg54 »

Pas besoin de te casser la tête, passe par le Barindex ... Un point de référence pour le franchissement de "3", un autre pour le franchissement de "1" et tu compares ensuite les 2 .. ;)
Avatar du membre
Ice.
Apprenti Jedi
Messages : 503
Enregistré le : 12 juil. 2013 11:15

Re: Besoin d'aide code PRT.

Message non lu par Ice. »

Génial Teg ;) Je regarde ça bientôt..
Avatar du membre
teg54
Compagnon Jedi
Messages : 1560
Enregistré le : 30 mars 2012 09:00

Re: Besoin d'aide code PRT.

Message non lu par teg54 »

Si tu galères dis le moi j'te détaillerai la procédure ;)
Avatar du membre
Ice.
Apprenti Jedi
Messages : 503
Enregistré le : 12 juil. 2013 11:15

Re: Besoin d'aide code PRT.

Message non lu par Ice. »

Je reviens, je galère un peu :)

J'ai du mal à saisir comment peut-on figer le barindex lorsque l'indicateur passe le seuil voulu. Voici ce que j'ai fais :

Code : #

If HV>=3 THEN
x = barindex
ENDIF

If HV<=2 THEN
c = barindex
ENDIF

If Heikin Ashi>=3 THEN
r = barindex
ENDIF

If Heikin Ashi<=2 THEN
d = barindex
ENDIF



IF  (c-x)<20 THEN
SignalVente = 1
ELSE
SignalVente= 0
ENDIF

IF  (d-r)<20  THEN
SignalAchat = 1
ELSE
SignalAchat= 0
ENDIF
Mais le résultat est assez folklo..

Merci merci !
Avatar du membre
Ice.
Apprenti Jedi
Messages : 503
Enregistré le : 12 juil. 2013 11:15

Re: Besoin d'aide code PRT.

Message non lu par Ice. »

Je reviens, je galère un peu :)

J'ai du mal à saisir comment peut-on figer le barindex lorsque l'indicateur passe le seuil voulu. Voici ce que j'ai fais :

Code : #

If Indicateur1>=3 THEN
x = barindex
ENDIF

If Indicateur1<=2 THEN
c = barindex
ENDIF


IF  (c-x)<20 THEN
SignalVente = 1
ELSE
SignalVente= 0
ENDIF
Mais le résultat est assez folklo..

Merci merci !
Avatar du membre
teg54
Compagnon Jedi
Messages : 1560
Enregistré le : 30 mars 2012 09:00

Re: Besoin d'aide code PRT.

Message non lu par teg54 »

Salut Ice !!

Pour reprendre ta problématique, t'as plusieurs étapes à prendre en compte (je te fais ça en détaillant ... libre à toi de réorganiser le code comme tu veux après, quitte à l'écrémer ;))

étape 1 : Déclaration du signal et des variables.

Code : #

signal = 0
var1 = c crosses over 3 // "c" étant ta courbe
var2 = c crosses under 1
étape 2 : Déclaration des fonctions. Lors de ces croisements le Barindex est référencé (ce que tu as fait dans ton code précédent

Code : #

if var1 then
refH = barindex
endif

if var2 then
refB = barindex
endif
étape 3 : Vérifier si entre ces deux croisements ta limite Temps (fixée ici à 5m ... donc 5 bougies en UT 1mn) est respectée + compilation

Code : #

for i = var1 to close
if var2 and (refB-refH < 5) then
signal = 1
endif
break
next

return signal
Voilà Mr ... Essaye et dis moi ce qu'il en est ;)

Bonne soirée
Avatar du membre
Ice.
Apprenti Jedi
Messages : 503
Enregistré le : 12 juil. 2013 11:15

Re: Besoin d'aide code PRT.

Message non lu par Ice. »

Ah nickel, cela tourne parfaitement. Merci Teg !
Avatar du membre
teg54
Compagnon Jedi
Messages : 1560
Enregistré le : 30 mars 2012 09:00

Re: Besoin d'aide code PRT.

Message non lu par teg54 »

De nada ... ;)

Bonne continuation dans tes recherches :)
Avatar du membre
Ice.
Apprenti Jedi
Messages : 503
Enregistré le : 12 juil. 2013 11:15

Re: Besoin d'aide code PRT.

Message non lu par Ice. »

Je me suis finalement rendu compte d'une petite anomalie, je me suis laissé le temps de réfléchir pour la résoudre mais je ne vois pas donc je reviens.

L'indicateur franchit le premier seuil, ensuite il retombe sous le second --> signal, nickel.
Sauf que si par la suite, il remonte au dessus du second seuil et retombe une nouvelle fois en dessous, cela me remet un signal.

Voici ce que j'ai testé :

Code : #

for i = varA1 to Close
if varA2 and (refB-refH < 100) and lowest(refB-refH)[indicateur]>seuil then
signalAchat = 1
endif
break
next
Sauf que la fonction lowest n'accepte qu'un entier positif en paramètre, donc pas possible de procéder comme cela. J'ai ensuite codé une boucle for mais je ne vois pas bien comment la mettre sous forme de "condition"


merci ;) !