ProRealTime
Pour discuter sur l’interface de ProRealTime Software, nos configurations graphiques...
Répondre • Page 1 sur 1

1er indicateur PRT

par koub » 20 déc. 2014 12:45

Plop,

Ce matin, motivé par la découverte de la plateforme PRT, j'ai créé un petit indicateur pour mettre à l'épreuve ProBuilder...

Premier ressenti:
- autant vous dire que l'inexistence des tableaux multidimensionnels me pose vraiment problème...
- en dehors des fonctions natives au builder, il faut faire pas mal de pirouettes pour obtenir le résultat escompté même pour des choses simples, l'optimisation est donc vraiment limitée.
- impossible de créer des sous-fonctions, c'est aussi un gros problème car si l'on complexifie le code, cela peut rapidement devenir illisible, à voir...

Si ça vous intéresse et que vous voulez effectuer un petit test, il s'agit d'un indicateur simple pouvant généré une moyenne ou médiane mobile en fonction de différents types de prix:

Il vous faudra créer les variables ci-dessous:
  • "TypeMA1" (type de la moyenne mobile):
    0 = SIMPLE
    1 = EXPONENTIELLE
    2 = LISSEE
    3 = PONDEREE
    4 = MEDIANE

    "TypePRIX1" (type de prix):
    0 = FERMETURE (Close)
    1 = OUVERTURE (Open)
    2 = PLUS HAUT (High)
    3 = PLUS BAS (Low)
    4 = MEDIAN (High+Low/2)
    5 = TYPIQUE ((High+Low+Close)/3)
    6 = PONDERE ((High+Low+Close*2)/4)

    "Periode1" (entier représentant le nombre de bougies pour la période de calcul)
Le code de l'indicateur:

Code : #

REM ---- Calcul du prix en fonction de la configuration choisie
IF TypePRIX1 = 0 THEN
       PRIX1 = Close
ELSIF TypePRIX1 = 1 THEN
       PRIX1 = Open
ELSIF TypePRIX1 = 2 THEN
       PRIX1 = High
ELSIF TypePRIX1 = 3 THEN
       PRIX1 = Low
ELSIF TypePRIX1 = 4 THEN
       PRIX1 = MedianPrice
ELSIF TypePRIX1 = 5 THEN
       PRIX1 = TypicalPrice
ELSIF TypePRIX1 = 6 THEN
       PRIX1 = WeightedClose
ENDIF

REM ---- Calcul de la MA1 en fonction de la configuration choisie
IF BARINDEX < Periode1 THEN
       MA1 = UNDEFINED
ELSIF TypeMA1 = 0    THEN
       MA1 = Average[Periode1](PRIX1)
ELSIF TypeMA1 = 1 THEN
       MA1 = ExponentialAverage[Periode1](PRIX1)
ELSIF TypeMA1 = 2 THEN
       MA1 = WilderAverage[Periode1](PRIX1)
ELSIF TypeMA1 = 3 THEN
       MA1 = WeightedAverage[Periode1](PRIX1)
ELSIF TypeMA1 = 4 THEN
       Periode1 = (Periode1 MOD 2 = 0) + Periode1
       FOR i = 0 TO Periode1 - 1
              Inf = 0
              Egal = 0
              FOR j = 0 to Periode1 - 1
                     IF PRIX1[j] < PRIX1[i] THEN
                            Inf = Inf + 1
                     ELSIF PRIX1[j] = PRIX1[i] THEN
                            Egal = Egal + 1
                     ENDIF
              NEXT
              Sup = Periode1 - Inf - Egal
              IF MIN(Inf,Sup) + Egal > MAX(Inf,Sup) THEN
                     MA1 = PRIX1[i]
                     BREAK
              ENDIF
       NEXT
ENDIF

RETURN MA1
Malgré le fait que le code soit simple, calculer une médiane sur une période de 50 bougies prend déjà 2 secondes, je voulais lancer un robot toutes les secondes (limitation du déclenchement des ordres à la bougie PRT), c'est mal parti...

A votre écoute, koub. :roll:


Ci-dessous deux exemples:
- moyenne mobile exponentielle sur un prix médian (période 20)
- médiane mobile calculée sur un prix médian (période 20)
Fichiers joints

Re: mon 1er indicateur PRT

par George Henry » 20 déc. 2014 13:14

Tu utilisais autre chose pour créer des robots avant ?

Re: mon 1er indicateur PRT

par koub » 20 déc. 2014 13:20

Salut George Henry, oui MT4 (voir présentation).

Pour info, au même titre que prt, la médiane n'est pas native sur MT4... Par contre, là où j'écris 17 lignes de codes pour la médiane sur prt, il m'en faut 6 sur MT4, donc je reviens sur mon post "ProBuilder prt", si tu cherches à faire du home made, tu complexifie ton code sous prt... MT4 est plus souple et dispose d'instructions permettant l'optimisation...

A voir sur la suite, mais à mon avis, je risque d'être rapidement bloqué... Calcul de 2 secondes en imbriquant 2 boucles pour une période de 50 bougies, ça sent l'usine à gaz et ça ne promet pas...

Maintenant, si on utilise les fonctions natives (dont certaines sont franchement sympa) via le module de création simplifiée, ça doit le faire mais le périmètre sera limité...

Cdt, koub. :)

Re: 1er indicateur PRT

par George Henry » 20 déc. 2014 14:10

Donc pour toi MT4 est bien mieux pour programmer ?

Re: 1er indicateur PRT

par koub » 20 déc. 2014 14:26

Replop, je n'en suis pas encore prêt à rendre un verdict... je ne suis pas parole d’évangile et n'est pas la science infuse non plus...

mes premières impressions sont mitigées... Là, deux secondes pour calculer ce code, c'est juste énorme, même en VB j'ai de meilleurs résultats... Après tout dépend de ce que tu veux faire mais pour un système complexe en UT basse, j’émets des réserves, je vais toutefois tenter d'aller jusqu'au bout...

Le langage PRT ressemble à du VB et pour le langage MQL4 de MT4, la syntaxe est en C orienté objet... Par nature, plus tu t'éloignes du langage machine, plus tu augmentes les temps de calcul et donc tu as plus de chance de créer une usine à gaz... Demandes à NVIDIA s'ils codent leurs drivers de cartes graphiques en VB, ils vont te rigoler au nez... ;)

Maintenant, le C peut être + complexe à prendre en main, c'est un langage assez subtil dont la syntaxe ne permet pas la moindre erreur...
George Henry a écrit :Donc pour toi MT4 est bien mieux pour programmer ?
Pour ma part, j'attends de voir, l'avenir me le dira rapidement... Et pour répondre à ta question, si tu maîtrises bien le C, je pense que MT4 sera plus à même de te laisser libre cours à ton imagination...

koub. :|

Re: 1er indicateur PRT

par George Henry » 20 déc. 2014 14:51

Ok, moi je suis en train d'apprendre le C, C+, la programmation quoi :D et donc tu me dit que MQL4 ressemble plus à du C que prt, donc sa serais mieux que je m'entraine à créer des robots sur MT4 avant prt non ?

Re: 1er indicateur PRT

par koub » 20 déc. 2014 15:00

Pour ne pas démonter complètement PRT, je vais t'expliquer ce qu'il me fait continuer et surtout ce qu'il m’intéresse de tester... je parle de fonctions natives franchement sympa, notamment au niveau de la gestion des trades... En effet, à ce niveau, PRT propose des solutions simples sur lesquelles MT4 sera vraiment limité... Voilà ce qui me pousse à continuer...

je ne sais pas ce que tu veux faire et ce que tu attends mais, si tu veux faire un robot semi-auto avec des entrées manuelles, PRT semble être vraiment pas mal, à confirmer...

les premiers tests de ce matin sont toutefois concluants sur le fait que le moteur de ProBuilder semble poussif (notamment lié au fait que ce soit du "easy language"), donc l'utilisation sur UT en tick par tick par exemple est d'ores et déjà abandonnée... je te rassure, MT4 est dans la même problématique, mais il toutefois nettement plus rapide...
George Henry a écrit : Ok, moi je suis en train d'apprendre le C, C+, la programmation quoi :D et donc tu me dit que MQL4 ressemble plus à du C que PRT, donc sa serais mieux que je m'entraine à créer des robots sur MT4 avant PRT non ?
Tu es jeune donc tu assimileras vite (très jeune quand je regardes ton avatar, surdoué?), tu as 35 instructions à connaitre en C, ce n'est pas la mer à boire, le C++ est vraiment trop orienté objet et ne t'apportera pas grand chose en MQL4 (ça, c'est mon avis hein)... Fais tes débuts sur PRT, c'est simple à prendre en main, si ça coince, passes sur MQL4, hormis la syntaxe, la programmation reste de la programmation, c'est une question d'imagination, de volonté, de temps et de compréhension...

Voili voilou, en espérant avoir éclairé ta lanterne...

+, koub. :)

Re: 1er indicateur PRT

par George Henry » 20 déc. 2014 15:32

Ok merci beaucoup koub, oui le C++ ne m'apporte rien pour les prog en MT4 prt, amis j'apprends aussi ces langages pour tous simplement les connaitre et faire d'autre chose avec.

Encore merci

Re: 1er indicateur PRT

par koub » 21 déc. 2014 08:34

Re,

Bon, ce qui devait arriver arrive, j'abandonne la prog sous PRT, c'est complètement instable, j'ai un problème de boucle infinie si j'effectue une nouvelle imbrication de deux boucles FOR en prenant l'intégralité de l'historique en + du code ci-dessus. Si je limite l'historique à 50 bougies, ça passe sans problème, mais j'ai 10 secondes de calcul donc ça ne me convient pas, surtout que la solution PRT est payante.

Conclusion:
- Faire des pirouettes pour les tableaux multi-dimensionnels
- Faire des pirouettes car exploiter l'intégralité de l'historique du graphique dans le code rend le PRT instable (pb boucle infinie alors qu'elle est loin d'être infinie)
- je ne suis pas gymnaste
- Moteur poussif, 10 secondes de calcul pour le peu que je demande, ce n'est pas exploitable donc anormal
- je pense que PRT est bien pour du manuel car l'interface est claire
- je rejoins toutefois l'avis de Benoist concernant l'interface IG qui est aussi claire et gratuite pour du manuel

Vraiment dommage, je me faisais une joie de bosser sur un logiciel français, je reviendrai sûrement sur ma copie lorsque ces différents problèmes seront réglés car, dans l'état, ça ne convient définitivement pas à mes besoins.

koub. :cry:

Ci-dessous l'indicateur perso que j'ai tenté de reproduire sur PRT, réponse instantanée sur MT4 contre 10 secondes pour 1/4 des calculs sur PRT, no comment...
Fichiers joints

Re: 1er indicateur PRT

par falex » 21 déc. 2014 09:07

J'ai pas tout lu sauf le premier post mais si tu veux calcule une mm sur un prix médian ca tient en 1 ligne
mm = average(médianprice,typemm) ou un truc comme ça ...


Et si tu met typemm en variable et que tu choisis le bon paramètre tu n'as pas besoin de tes if then else du début.

Je reconnais cette partie là est tres mal décrite dans la div.

Je te retrouverai l'orthographe exact lundi.

En résumé sur average tu peux passer 3 paramètres :
Période
Variable a moyennée
Methode de calcul

LE blog de hk-lisse (en français en pus) regorge de code prt où il a tenté plein plein d'optimisation.

CErtaines sont un peu daté le blog a du être mise à jour jusqu'à la V8 et la v9 et 10 on introduit des nouvelles fonctionnalités
http://hk-lisse.over-blog.com/

Re: 1er indicateur PRT

par koub » 21 déc. 2014 09:40

Salut Falex, oui le prix médian ok, il est natif, je n'ai d'ailleurs pas eu de mal à l'intégrer si tu lis le code.
Falex a écrit :Je te retrouverai l'orthographe exact lundi.
voir le code plus haut pour le calcul d'une MM simple: "Average[Periode1](PRIX1)"
Corrélé avec les variables Periode1 et TypePRIX1 = 4 pour sélectionner le prix médian.

Créer une médiane mobile et non une moyenne n'est par contre pas natif (au même titre que d'autres plateformes d'ailleurs, comme je l'ai indiqué plus haut)...

En fait, il ne s'agit que d'un bout de code, les if/then/else permettent d’être appelés par un autre code (j'ai d'ailleurs tenté de passé par sous fonction avec CALL et c'est encore plus lent), le but étant de gérer ces sélections dynamiquement et non en manuel au lancement de l'indic, je ne sais pas si je suis bien clair mais si tu regardes le screen de mon dernier post ci-dessus, tu te doutes bien que ces infos sont intégrées dans un calcul plus complexe que je ne détaillerai pas...

Fais un test avec le code posté, tu remarqueras que les conditions ne posent pas de problème, la lenteur est générée par les deux boucles FOR si tu choisis de générer une médiane (TypeMA1=4) . Ce matin, j'ai été plus loin en ajoutant deux nouvelles boucles FOR par décrémentation (DOWNTO) sur l'historique du graph (barindex), il me sort un message d'erreur boucles infinies, ce n'est pas le cas, les boucles sont correctement bornées, je pense que le moteur de PRT a des difficultés avec l'imbrication, c'est pourtant la base... Fonctionne très bien sur MT4, tu peux imbriquer 5 boucles (au maximummum) sans problème et utiliser l'historique complet, réponse (quasi) instantanée selon l'optimisation et la complexité des calculs effectués...

Par transparence, j'ai choisi de poster le code de test pour que vous puissiez le tester à votre tour (quelques conditions, deux boucles qui se battent en duel, rien de bien extraordinaire, il est vraiment très simple).

je pense que chacun doit se faire une idée mais pour ma part, cela ne répond pas à mes besoins... :roll:


EDIT:
oui je suis tombé sur le blog que tu m'indiques, notamment sur ce post plus que limpide qui reprend les différents problèmes que je rencontre:
http://hk-lisse.over-blog.com/article-22391322.html
j'ai repris ce code en supprimant le besoin d'une sub-routine pour optimiser l'optimisation qu'il avait déjà réalisé par rapport au code original allemand, je suis passé de 12 secondes à 2 secondes, mais ça reste énorme pour calculer une simple médiane.

Re: 1er indicateur PRT

par koub » 21 déc. 2014 10:02

Erratum:
Le code original est Israelien, voir forum allemand: http://www.aktienboard.com/forum/f29/prorealtime-cmc-script-programmierung-t94783/200

La magie d'internet: codé par un israélien, optimisé par des allemands pour ensuite être optimisé par des français (à moins que hk-lisse soit canadien... ^^), énorme...

C'est beau même si l'on aura jamais l'occasion d'en discuter devant une bière, je verse ma petite larme...

+, koub. :)

Sujets similaires
comment convertir un indicateur 1h en indicateur 1min
par Raiko » 09 août 2014 10:35 (11 Réponses)
Indicateur dynamique stop loss et target point sous PRT
Fichier(s) joint(s) par Djobydjoba » 30 mars 2013 12:24 (12 Réponses)
alerte sur indicateur prt
Fichier(s) joint(s) par freddy01 » 21 mars 2014 15:03 (6 Réponses)
Indicateur PRT besoin d'aide SVP
par GOLDS » 31 août 2014 00:26 (3 Réponses)
Indicateur : PRT ne sais pas lire l'heure : finallement si
par falex » 03 déc. 2014 13:40 (4 Réponses)
Indicateur Personnel sur PRT version mobile ?
par ladefense92800 » 10 déc. 2014 17:49 (17 Réponses)
Indicateur PRT pour Supports/Resistance/Pivots
Fichier(s) joint(s) par PierreAntoine » 05 nov. 2015 16:44 (7 Réponses)
Indicateur prt
par flashover26 » 26 nov. 2015 13:04 (6 Réponses)
Indicateur prt au format ex4
par flashover26 » 02 déc. 2015 17:21 (29 Réponses)
Indicateur PRT qui affiche vos ordres récents sur le graph
Fichier(s) joint(s) par David » 11 mars 2016 19:21 (17 Réponses)