ProRealTime
Pour partager sur le trading automatique, nos algorithmes, nos backtests

code prt: questions de noob

par Doudidoudou » 13 Avr 2018 15:14

Bonjour à tous

Donc en attendant des historiques pour travailler sur excel, et désirant créer un robot pro order, j'ai décidé de m'initier aux joies du codage...

Je n'ai pas encore de compte PRT/IG et j'aimerais arriver sur la plateforme avec un peu de compétence dans la rédaction des codes.

Je me suis farcis les manuels hier soir et j'ai écrit mes codes aujourd'hui (sur word) pour découvrir et mémoriser les fonctions. J'en suis à 200/300 lignes. Pas encore de stratégie entière mais petits bout de code pour voir les questions qui en émèrgent. J'ai trouvé pas mal de réponses sur deux forums en particulier, mais je n'ai pas pu avoir de confirmation pour certaine.

J'utiliserai ce file pour poser des questions au jour le jour et je vous remercies d'avance pour vos réponses.

Question 1:
Les fonctions de type SET STOP ... TRAILING... sont t'elles fonctionnelles en réel pour les comptes cfd à risque limité ? J'ai cru comprendre que cela n'était pas cas avant mais que ca devrait être le cas maintenant. Pouvez vous confirmer?

Question 2:
Est-ce que les fonctions SET STOP ... TRAILING... travaille avec un "pas" mini? Exemple: moins de 2 points de variation du sous-jacent = pas d'ajustement du stop suiveur.

Question 3:
je cherche à économiser des caractères, donc est-ce que ce code:

IF cond1 = 1 AND Close > ouvlong1 THEN
BUY 1 CONTRACTS AT MARKET
SET STOP %TRAILING 1
Cond1 = 0
ENDIF


IF cond1 = 1 AND Close < ouvshort1 THEN
SELLSHORT 1 CONTRACTS AT MARKET
SET STOP %TRAILING 1
Cond1 = 0
ENDIF

est bien équivalent à:

IF cond1 = 1 AND Close > ouvlong1 THEN
BUY 1 CONTRACTS AT MARKET
Cond1 = 0
ENDIF

IF cond1 = 1 AND Close < ouvshort1 THEN
SELLSHORT 1 CONTRACTS AT MARKET
Cond1 = 0
ENDIF

SET STOP %TRAILING 1



Question 3:
Est-ce que dans les codes précédents ma cond1 sera bien égale à 0 immédiatement après l'ouverture de position?

Merci

Re: code prt: questions de noob

par Jim » 13 Avr 2018 17:30

Question 1:
non a priori
mais ça se code facilement

Question 2:
non, pas de mini


Question 3:
Le mieux est de tester. Il existe une version gratuite de PRT avec les données fin de journée ;)




je cherche à économiser des caractères

Ca me paraît une mauvaise idée.
Parfois, rajouter des lignes de code permet d'accélérer le code :geek:


Dans ton code, tu peux par contre supprimer des tests :
IF cond1 = 1 AND Close < ouvshort1 THEN ...
et le remplacer par :
IF cond1 AND Close < ouvshort1 THEN ...

Re: code prt: questions de noob

par Doudidoudou » 13 Avr 2018 17:57

Merci beaucoup!

Il me semblait que l'on avait pas accès à pro order avec le compte demo, mais je confonds peut-être avec MT4 pour IG.

Merci pour l'info, je part en week_end mais je vais essayer ca dès lundi. :merci:


Pour cond1 il peut y avoir 3 valeurs:
si cond1 = 0 possible de remplacer cond1 = false mais sans intérêt
si cond1 = 1 possible de remplacer cond1 sous entendu cond1=true
si cond1 = 2 impossible de remplacer

C'est ca?

Re: code prt: questions de noob

par Jim » 13 Avr 2018 18:30

si cond1 = 2 ça renvoie zéro donc autant tester IF cond1

Re: code prt: questions de noob

par Doudidoudou » 14 Avr 2018 11:01

Ok

Là, ca remet en cause pas mal de mes codes! je ne peux qu’espérer un mal entendu pour ne pas tout refaire.

Grosso modo, la stratégie que je développe (swing) fait appel à plusieurs unités de temps. Je développe en UT minute et je dois stocker des infos en UT minute, UT jour et UT heure. Pour ne pas me mélanger les pinceaux j'ai appelé toutes les variables day "non de la variable"D (ex: condD) pour heure condH, pour 1 minute cond1.

Cond1 n'est pas la vérification d'une condition mais un compteur qui s’incrémente à chaque nouvelle étape d'une des stratégie.

0 si pas de si pas de valeurs stockées
1 si valeur stockée mais pas de position
2 si valeur stockée et position ouverte
3 si valeur stockée et position fermée en attente de réinitialisation à l'ouverture du jour suivant.

exemple ficitif:

condD=0
variableD=0

IF condD=0 THEN
variableD = DClose
condD=1
ENDIF

IF condD=1 AND close> Dclose Then
BUY 1 CONTRACTS AT MARKET
condD=2
ENDIF

IF condD=2 AND ...

est ainsi de suite, le compteur augmente de 1 à chaque étape de la stratégie.


Je sais l'exemple est débile et sans intérêt mais on est d'accord que en temps que compteur ma variable condD = 2 utilisé dans la dernière condition
ne renverra pas zéro si une position a été prise.

Dis oui, dis oui, dis oui .... :prier:

Re: code prt: questions de noob

par Jim » 14 Avr 2018 11:37

Ton dernier test renverra 0. Sorry

Si tu veux que tes valeurs non nulles renvoient 1, réécris ton code en commençant par IF NOT

Re: code prt: questions de noob

par Doudidoudou » 14 Avr 2018 15:57

NONNNNNNNNNNN! :evil:

Bon, J'ai trouvé une parade qui ne devrait pas trop alourdir le code mais ce qui m'attriste vraiment c'est de me dire que je n'ai rien compris à la logique du codage. En effet, même si je comprends ce que tu dis, je ne comprends pas pourquoi c'est ainsi!

Prochaine étape : demo PRT!

Re: code prt: questions de noob

par Jim » 14 Avr 2018 16:13

Ce n'est pas une question de logique. C'est un choix des créateurs du langage, ensuite toute logique en découle.


Il ont choisi que
IF TestX THEN ...
serait exécuté si et seulement si TestX vaut 1.

Re: code prt: questions de noob

par Doudidoudou » 17 Avr 2018 06:55

Ca y est!
J'ai le mode démo PRT et l'on peut backtester sur 200000 unités pendant deux semaines.

Concernant ton dernier poste, il est logique que le teste doit être vrai pour activer la conditionnelle,mon problème et ailleur. Maintenant que j'ai testé pro-order je vais pouvoir expliquer mon problème.
Globalement la majorité de mes algos tourne. j'ai pas mal progressé et je crois comprendre comment PRT interprète le code.Cependant je reste bloqué sur une étape essentielle: la sauvegarde de certaine valeur d'une bougie à l'autre.
Je pensais que les valeurs s'incrémentés d'une bougie à l'autre.

Exemple
Lecture bougie 1:
cond=0
IF cond=0 THEN
cond=1
result=baba
ELSE
result=doudou
ENDIF

(a la fin de la lecture on a cond=1 et result= baba)
Mais à la bougie suivante, le prog recommence à zero et sort pour chaque bougie cond=1 et result= baba

Je pensais lors de la rédaction du code que les valeurs s’incrémenteraient de la façon suivante:
lecture bougies 2:
Cond=0 devient cond = 1 (dernière valeur de cond obtenue à la bougie précédente)
et donc le résultat serait doudou.

Quelqu'un a t'il une solution pour garder la nouvelle valeur d'une variable d'une bougie à l'autre? :prier:

Re: code prt: questions de noob

par Flanders » 02 Mai 2018 16:19

Salut Doudidoudou,
Moi aussi je lutte beaucoup avec la logique des scripts PRT.
Mais pour ton dernier exemple, je ferais:
ONCE cond = 0
IF cond=0 THEN
cond=1
result=baba
ELSE
result=doudou
ENDIF
cond = cond + 1

Ca s'appelle un algorithme récursif.

Articles en relation
ProRealTime code
par julian72 » 25 Jan 2016 22:26 (16 Réponses)
Précisions code PRT
Fichier(s) joint(s) par Benoist Rousseau » 23 Mai 2017 01:08 (30 Réponses)
Code Ninjatrader 8 c#
Fichier(s) joint(s) par pjs » 09 Mai 2018 04:50 (3 Réponses)
Que pensez-vous de mon code ?
par falex » 23 Jan 2016 22:23 (6 Réponses)
Aide code fonctions temporelles
par Gui » 16 Juin 2016 17:04 (1 Réponses)
CODE POUR 1 ET 1 SEULE POSITION
par Toto le Héros » 29 Nov 2016 22:55 (2 Réponses)
Code pour prendre un ordre à l'open de la bougie suivante?
par GOLDENBOY » 23 Nov 2016 23:43 (8 Réponses)
Questions naïves sur la bourse...
par clasch » 06 Déc 2018 15:48 (4 Réponses)

ProRealTime

Alors partagez-le 5 fois c'est bon pour la santé