ProRealTime
Pour discuter sur l’interface de ProRealTime Software, nos configurations graphiques...

1er indicateur PRT

par koub » 20 Déc 2014 13: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: Tout sélectionner
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 14:14

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

Re: mon 1er indicateur PRT

par koub » 20 Déc 2014 14: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 15:10

Donc pour toi MT4 est bien mieux pour programmer ?

Re: 1er indicateur PRT

par koub » 20 Déc 2014 15: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 15: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 16: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 16: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 09: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 10: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/

Articles en relation
comment convertir un indicateur 1h en indicateur 1min
par Raiko » 09 Aoû 2014 10:35 (11 Réponses)
Indicateur[32]
par koub » 26 Fév 2015 21:00 (13 Réponses)
Indicateur prt
par flashover26 » 26 Nov 2015 14:04 (6 Réponses)
Cours et indicateur
par falex » 28 Aoû 2014 18:22 (14 Réponses)
Code indicateur
par benylio » 18 Nov 2014 19:50 (5 Réponses)
Indicateur prt au format ex4
par flashover26 » 02 Déc 2015 18:21 (29 Réponses)
ALERTE SMS SUR INDICATEUR PRT
par Apo-71 » 13 Aoû 2017 20:32 (5 Réponses)
creation indicateur MM
par Falpa » 11 Aoû 2019 14:36 (1 Réponses)
Indicateur divergence RSI/MACD
par Alexstart » 02 Mai 2014 13:23 (2 Réponses)
Importer un indicateur sur ProRealTime
Fichier(s) joint(s) par kelly » 21 Aoû 2014 14:18 (11 Réponses)

ProRealTime