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

ProBuilder PRT

par koub » 14 déc. 2014 19:47

Bonjour à tous, je viens de me manger les 3 manuels de prt concernant la programmation d'indicateurs et d'EA... Très sympa, language simple (entre le VB et le WinDev), ça me changera des syntaxes en C de MT4... Par contre, je n'ai pas vu dans la documentation s'il était possible de :

- Créer des tableaux statiques ou dynamiques du style Ar ()
- Récupérer le spread de l'indice ? (Bon dans le cas d'ig, d'après ce que j'ai compris, il est fixe à 1 pour le DAX & co, mais bon pour le reste (Forex), c'est pareil?)
- Passerelle avec des logiciels externes, lecture ou écriture fichiers CSV & co?
- Si j'ai bien compris, il s'agit là-aussi d'une interface de trading sur navigateur WEB, il est donc possible de faire fonctionner un robot PC éteint, donc plus besoin de VPS?

Pas mal de choses sont simplifiées par rapport à MT4, là où il était nécessaire d'écrire 15 lignes de code optimisé, il suffit d'en écrire une maintenant, propre...

Et l'interface du logiciel est moins has-been, franchement super... :mercichinois:

Huhu, l'info concernant le BT avec indicateur ZigZag (repaint)... :musique:

:merci: Andlil, koub. :)

Re: ProBuilder PRT

par falex » 14 déc. 2014 20:53

Dans l'ordre :
Non
Non sauf sur les screen et ou indice ou backtest mince je ne sais plus
Non
C'est une applet Java. Tu la lance par un jnlp sur tu récupères par le web (avec jeton et tout le toutim)

Effectivement le code est nettement moins lourd à écrire et les backtest 10 à 100 fois plus rapide que MT4. Test une gous l'optimisateur de backtest et là tu te demandera comment tu as daut pour rester sur MT4 toutes ces années.

Zigzag est repeind donc inutilisable en live... As usual

Re: ProBuilder PRT

par falex » 14 déc. 2014 22:12

A propos des Ar sous prt :

Il n'existe pas sous leur forme classique par contre toute variable est un Ar et tu peux appeler son état de la nième boygie avant en faisant [n]

Re: ProBuilder PRT

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

Salut Falex, merci pour ta lanterne ;)
Falex a écrit : Dans l'ordre :
Non
Non sauf sur les screen et ou indice ou backtest mince je ne sais plus
Non
C'est une applet Java. Tu la lance par un jnlp sur tu récupères par le web (avec jeton et tout le toutim)
Dans l'ordre:
- Sic!
- Oui j'ai vu pour les backtest, l’intérêt de connaitre le spread pour le robot et de connaitre sa position sur un trade en cours, je pourrai toujours faire une pirouette en utilisant un fonction profit que j'ai cru voir en lisant les manuels.
- Sic!!! c'était trop beau...
Falex a écrit : Zigzag est repeind donc inutilisable en live... As usual
Oui, huhu ^^
j'ai trouvé une parade à ce problème, coupler l'indicateur avec un indicateur de trend, lorsque le trend change tu utilises les infos passées, ça fonctionne bien (enfin sur MT4)... Un peu de code valant mieux que de longs discours et puisque c'est bientôt noël, ci-dessous un indic perso:

Code : #

//+------------------------------------------------------------------+
//|                                               ZigZag_HiLoSMA.mq4 |
//+------------------------------------------------------------------+

#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Blue
#property indicator_color2 Black
#property indicator_color3 Red
#property indicator_width3 2

//---- input parameters
extern int MT4period = 0;
extern datetime StartTime;
extern int HILOperiod = 10;
extern int SMAperiod = 1;

//---- buffers
double HiLo[];
double SMA[];
double ZigZag[];
double TrendWay[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- nb buffers
   IndicatorBuffers(4);
//---- indicator lines
   SetIndexStyle(0, DRAW_LINE, 0, 1);
   SetIndexStyle(1, DRAW_LINE, 0, 1);
   SetIndexStyle(2, DRAW_SECTION, 0);
   SetIndexStyle(3, DRAW_NONE);
   SetIndexBuffer(0, HiLo);
   SetIndexBuffer(1, SMA);
   SetIndexBuffer(2, ZigZag);
   SetIndexBuffer(3, TrendWay);
//---- names for DataWindow label
   SetIndexLabel(0, "HiLo");
   SetIndexLabel(1, "SMA");
   SetIndexLabel(2, "ZigZag");
   SetIndexLabel(3, "TrendWay");   
//---- nb digits   
   IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)); 
//---- indicator short name
   IndicatorShortName("ZigZag HiLoSMA");
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator start function                                  |
//+------------------------------------------------------------------+
int start()
  {
   //---- intern values declarations
   bool Pr = false, PrevPr = false;
   double iMAHi, iMALo, val;
   int i, j, k, limit; 
   int LastDetect, CurDetect, CurTrend, NextTrend;
   int counted_bars=IndicatorCounted();
   int BarsPeriod=iBars(NULL,MT4period);

   //---- check for possible errors
   if(counted_bars<0) return(-1);
   //---- last counted bar will be recounted
   if(counted_bars>0) counted_bars--;
   limit=BarsPeriod-counted_bars;

   //---- create HiLo and SMA lines
   for(i=limit; i>=0; i--) //---- past to present (no repaint needed) 
     {
     //---- extract HiLo and SMA lines
     iMAHi = iMA(NULL, MT4period, HILOperiod, 1, MODE_SMA, PRICE_HIGH, i);
     iMALo = iMA(NULL, MT4period, HILOperiod, 1, MODE_SMA, PRICE_LOW, i);
     SMA[i] = iMA(NULL, MT4period, SMAperiod, 1, MODE_SMA, PRICE_CLOSE, i);
     //---- check result with last value
     if(Close[i] < iMALo && PrevPr == true) Pr = false;   
     if(Close[i] > iMAHi && PrevPr == false) Pr = true;
     PrevPr = Pr;   
     //---- final cutting
     if(Pr == false) HiLo[i] = iMAHi;
     if(Pr == true) HiLo[i] = iMALo;
     if(HiLo[i] < SMA[i]) TrendWay[i] = 1;
     if(HiLo[i] > SMA[i]) TrendWay[i] = -1;
     }
        
   //---- create or repaint ZigZag with HiLo and SMA lines (repaint for current trend because end not yet)     
   NextTrend = 0;
   for(i=0; i<=BarsPeriod; i++) //---- present to past (repaint needed)
     {    
     //---- reset ZigZag value
     ZigZag[i-1] = EMPTY_VALUE;
     //---- save trend detection (1 bullish, -1 bearish)
     if(HiLo[i] < SMA[i]) CurDetect = 1;
     else if(HiLo[i] > SMA[i]) CurDetect = -1;
     //---- if different trend, extract High or Low
     if(CurDetect != LastDetect)
         {
         CurTrend = i-1;
         //---- bullish trend
         if(LastDetect == 1)
            {
            for(j=CurTrend; j>=NextTrend; j--)
               {
               if((val == EMPTY_VALUE) || (iHigh(NULL, MT4period, j) > val)) 
                  {
                  val = iHigh(NULL, MT4period, j);
                  k = j;
                  }
               }
            ZigZag[k] = val;            
            }
         //---- bearish trend
         else if(LastDetect == -1)
            {
            for(j=CurTrend; j>=NextTrend; j--)
               {
               if((val == EMPTY_VALUE) || (iLow(NULL, MT4period, j) < val)) 
                  {
                  val = iLow(NULL, MT4period, j);
                  k = j;
                  }
               }
            ZigZag[k] = val;            
            }
            //---- reset values for next trend
            NextTrend = CurTrend+1;
            CurTrend = EMPTY_VALUE;
            val = EMPTY_VALUE;
            k = EMPTY_VALUE;
         }
     LastDetect = CurDetect;
     }
     
  return(0);
  }
//+------------------------------------------------------------------+
j'utilisais ce code en filtrage sur UT supérieure, notamment avec une strat basée sur la théorie de Dow... Ce n'est pas ma priorité mais si quelqu'un bascule ce code sous PRT, je suis preneur... :oops:
Falex a écrit : Il n'existe pas sous leur forme classique par contre toute variable est un Ar et tu peux appeler son état de la nième boygie avant en faisant [n]
Non, je recherche la possibilité de faire des tableaux multi-dimensionnels de façon à optimiser le code pour ne pas tout recalculer à chaque tick... L'argument temporel passé en variable "X bougies" ne correspond pas à ma recherche... Dans le doute, je vais quand même poser la question sur le support de PRT car les tableaux sont pour moi indispensables, je n'aime pas créer des usines à gaz... :(

++, koub. :)

Re: ProBuilder PRT

par Benoist Rousseau » 16 déc. 2014 23:54

Réponse de Quantin de PRT :
Nous travaillons de façon continue à l'amélioration des moteurs ProBuilder et ProBacktest. Voici nos commentaires sur les fonctionnalités mentionnées :

- Créer des tableaux statiques ou dynamiques du style Ar ()
Nous avons prévu de permettre la création de tableaux statiques multi-dimensionnels dans le même style que Ar () dans la prochaine version majeure des moteurs.

- Récupérer le spread de l'indice ?
Une étude de faisabilité est en cours, mais cela n'est pas encore prévu à ce jour.

- Passerelle avec des logiciels externes, lecture ou écriture fichiers CSV & co?
Nous ne sommes pas sur de ce que la personne souhaite importer et exporter en format CSV ? Résultats backtest / optimisation ? Autres ?

- Si j'ai bien compris, il s'agit là-aussi d'une interface de trading sur navigateur WEB, il est donc possible de faire fonctionner un robot PC éteint, donc plus besoin de VPS?
La plateforme propose depuis peu le module ProOrder AutoTrading, qui permet en effet de faire tourner des systèmes de trading (backtests) coté serveur, même quand la plateforme est éteinte. Plus d'informations https://trading.prorealtime.com/fr/plateforme-de-trading/trading-automatique-proorder

N'hésites pas si vous avez besoin de plus d'informations.

Cordialement
Quantin

Re: ProBuilder PRT

par koub » 17 déc. 2014 20:42

je te remercie Benoist, tu es apparemment un utilisateur privilégié de prt, tu as eu les réponses que j'attendais en une journée, si j'avais voulu les obtenir, ça aurait sûrement pris une semaine, voir un mois...

Ça cale le thread et du coup, je vais prendre mon mal en patience...

Pour la passerelle, c'est surtout en import (plutôt "border line" donc je ne développerai pas) mais aussi pour l'optimisation... les Ar () pourraient toutefois répondre à 80% de mes besoins... Pour le système ProOrder AutoTrading, tout simplement énorme juste au niveau de l'économie réalisée (plus de VPS, rhoooooo, on limite le coût et les intervenants et de ce fait, la stabilité du système complet)...

Pour conclure, d'après ce que je lis sur les forums, cela fait plusieurs mois (voir quelques années) que prt essaye de s'imposer sur le créneau automatique, cela donne bon espoir, surtout si le support est réactif...

Dans tous les cas, ça me motive à explorer cette voie... :merci:

Bien cordialement, koub. :)

Re: ProBuilder PRT

par falex » 17 déc. 2014 20:49

Quantin :
Lorsque un cours passe à 5 chiffres la valeur sur la droite est automatiquement arrondi à l'entier ! :(.
C'est un peu dommage pour le DAX Quand il franchit les 10000 ou sur le DJIA et que le brocker propose un sous-jacent qui quote avec une précision à 0,1.

Idem dans les calcul sur Forex le module de backtest ne tiens pas compte de la 5ème décimales (je suppose que les deux sont corrélés)

Est-ce que l'on pourrait avoir une fonction qui calcul l'arrondi avec en paramètres : le nombre de décimales et la methode (mathématiques ou géométrique)

Re: ProBuilder PRT

par koub » 19 déc. 2014 19:59

Plop,
Benoist a écrit : Nous avons prévu de permettre la création de tableaux statiques multi-dimensionnels dans le même style que Ar () dans la prochaine version majeure des moteurs.
Tant qu'à faire une modification, des tableaux dynamiques euent été mieux, au moins sur une dimension... :P

Cdt, koub. :)

Re: ProBuilder PRT

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

Nouveau feedback suite essais ce matin:

La structure du code est importante, deux choses que ProBuilder ne digère pas:

Execution d'une ligne de code sur condition, exemple:
If toto = 0 then break
Ça ne fonctionne pas, il faut impérativement écrire:
If toto = 0 then
break
endif
Bon, l'éditeur détecte une erreur, donc visuel et l'erreur peut être vite résolue

Assignement d'une valeur sur plusieurs variables, exemple:
toto1 = toto2 = 0
Ca ne fonctionne pas, il faut écrire:
toto1 = 0
toto2 = 0
Et là, c'est plus vicelard car l'éditeur ne détecte pas l'erreur et compile code sans problème, sauf que le résultat final bug...
Idem, si l'on écrit:
toto1 = toto2 = toto3 = 0
Pas de détection de l'erreur, mais à la compilation, plantage farfelu sur le dernier égal??? C'est ce qui m'a mit la puce à l'oreille, mais j'ai tout de même perdu 2h bêtement pour le débogage,

zuper... :mur:

+, koub. :roll:

Sujets similaires
Probuilder Tracer droite PRT
par Ernesto » 03 févr. 2016 10:16 (7 Réponses)
PRT - Retourner les infos du sous-jacent dans Probuilder
Fichier(s) joint(s) par Robinhood » 06 oct. 2018 17:24 (1 Réponses)
probuilder en français
par falex » 25 mars 2014 13:19 (2 Réponses)
[Probuilder] Différentes unités de temps
par plataxis » 13 févr. 2016 23:13 (2 Réponses)
Point pivot dans les fonctions ProBuilder ?
par Toto le Héros » 07 nov. 2016 15:31 (4 Réponses)
Comment tracer une ligne en pointillée dans ProBuilder?
par Jim » 04 juin 2017 23:04 (3 Réponses)
Entre ProScreener, ProAlarmes, ProBuilder...Vive les Galères
Fichier(s) joint(s) par HellionReign » 25 janv. 2018 20:23 (12 Réponses)
Points pivots et ProBackTests / Probuilder
par Benoist Rousseau » 12 mai 2021 10:40 (3 Réponses)
Aide pour apprentissage ProBuilder et divers
par Benoist Rousseau » 29 mai 2021 09:20 (3 Réponses)