Questions des débutants MQL5 MT5 MetaTrader 5 - page 162

 

J'ai écrit l'indicateur le plus simple en mql4, je voulais le traduire en mql5, et je me démène depuis une semaine, mais ça ne marche pas ! Je commence à m'énerver, je déteste mql5 car j'ai déjà écrit 88 lignes d'un simple indicateur de 34 lignes en mql5 !

Voici le code sur mql4 :

#property indicator_separate_window
#property  indicator_level1 0
#property indicator_buffers 3

extern int kol_vo_bar = 15;
extern string Symbol_1 = "GBPJPY";
extern string Symbol_2 = "EURJPY";

double SpreadA[];
double SpreadB[];
double Spread[];

int init()
{
   SetIndexBuffer(0,SpreadA);
   SetIndexBuffer(1,SpreadB);
   SetIndexBuffer(2,Spread);
   SetIndexStyle(0,DRAW_SECTION,EMPTY,2,Red);
   SetIndexStyle(1,DRAW_SECTION,EMPTY,2,Blue);
   SetIndexStyle(2,DRAW_HISTOGRAM,EMPTY,1,Gray);
   return(0);
}

int start()
{
   int k;
   for(k = 0; k < iBars(Symbol_1,0); k++)
   {
            SpreadA[k] = iClose(Symbol_1,0,k)*100/iOpen(Symbol_1,0,k+kol_vo_bar)-100;
            SpreadB[k] = iClose(Symbol_2,0,k)*100/iOpen(Symbol_2,0,k+kol_vo_bar)-100;                  
            Spread[k] = SpreadA[k]-SpreadB[k];
   }
   return(0);
}

Et voici le code sur mql5 :

#property indicator_separate_window
#property indicator_buffers 3
#property indicator_plots   3
//--- plot Label1
#property  indicator_label1  "Label1"
#property  indicator_type1   DRAW_SECTION
#property  indicator_color1  clrRed
#property  indicator_style1  STYLE_SOLID
#property  indicator_width1  2
//--- plot Label2
#property  indicator_label2  "Label2"
#property  indicator_type2   DRAW_SECTION
#property  indicator_color2  clrBlue
#property  indicator_style2  STYLE_SOLID
#property  indicator_width2  2

#property  indicator_label3  "Label3"
#property  indicator_type3   DRAW_HISTOGRAM
#property  indicator_color3  clrGray
#property  indicator_style3  STYLE_SOLID
#property  indicator_width3  1

//--- input parameters
input int kol_vo_bar=96;
input string   Symbol_1="GBPJPY";
input string   Symbol_2="EURJPY";
//--- indicator buffers
double         Label1Buffer[];
double         Label2Buffer[];
double         Label3Buffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,Label1Buffer,INDICATOR_DATA);
   SetIndexBuffer(1,Label2Buffer,INDICATOR_DATA);
   SetIndexBuffer(2,Label3Buffer,INDICATOR_DATA);
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   for(int k=0; k<Bars(_Symbol,_Period); k++)
   {
            Label1Buffer[k] = iClose(Symbol_1,PERIOD_CURRENT,k)*100/iOpen(Symbol_1,PERIOD_CURRENT,k)-100;
            Label2Buffer[k] = iClose(Symbol_2,PERIOD_CURRENT,k)*100/iOpen(Symbol_2,PERIOD_CURRENT,k)-100;                  
            Label3Buffer[k] = Label1Buffer[k]-Label2Buffer[k];
   }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
double iClose(string symbol,ENUM_TIMEFRAMES tf,int index)
{
   if(index < 0) return(-1);
   double Arr[];
   if(CopyClose(symbol,tf,index,1,Arr)>0)
        return(Arr[0]);
   else return(-1);
}
double iOpen(string symbol,ENUM_TIMEFRAMES tf,int index)
{
   if(index < 0) return(-1);
   double Arr[];
   if(CopyOpen(symbol,tf,index+kol_vo_bar,1,Arr)>0)
        return(Arr[0]);
   else return(-1);
}

Leslignes des indicateurs ne s'affichent pas correctement dans MT5.

Qu'est-ce que j'ai fait de mal ?

Bonnes gens, aidez-moi, ayez pitié du pauvre gars, je suis au bord de la dépression, honnêtement. C'est dommage qu'on ne puisse pas jurer ici !

Modérateur, ne me bannissez pas, donnez-moi d'abord un avertissement si quelque chose ne va pas.

 

Vous recalculez toutes les barres disponibles à chaque tick, ce qui n'est pas du tout optimal et est terriblement lent.

 
zlodei:


Leslignes de l'indicateur ne s'affichent pas correctement dans MT5.

Qu'est-ce que j'ai mal écrit ?

Où en est le travail avec PlotIndexXXX ?

ne vous a pas permis de lire la documentation et les exemples ?



Modérateur, ne me bannissez pas, donnez moi d'abord un avertissement si quelque chose ne va pas.

Allez sur la base de code et lisez-la. Il y a des centaines d'exemples.
 
sergeev:

Où travailler avec PlotIndexXXX ?

Trop paresseux pour lire la documentation et les exemples ?


Allez sur codebase et lisez-le. Il y a des centaines d'exemples.

Je me demande pourquoi cela est nécessaire au début du code :

#property  indicator_label1  "Label1"
#property  indicator_type1   DRAW_SECTION
#property  indicator_color1  clrRed
#property  indicator_style1  STYLE_SOLID
#property  indicator_width1  2

#property  indicator_label2  "Label2"
#property  indicator_type2   DRAW_SECTION
#property  indicator_color2  clrBlue
#property  indicator_style2  STYLE_SOLID
#property  indicator_width2  2

#property  indicator_label3  "Label3"
#property  indicator_type3   DRAW_HISTOGRAM
#property  indicator_color3  clrGray
#property  indicator_style3  STYLE_SOLID
#property  indicator_width3  1

Toutes les propriétés de chaque ligne sont spécifiées ici ? Ou est-ce que ce n'est pas suffisant pour mql5, maintenant je dois écrire les propriétés des lignes à travers PlotIndex ?

J'ai lu beaucoup d'exemples et de documentation, je n'en comprends pas 80 %, par exemple, pourquoi devrais-je compliquer des choses simples ?

Par exemple dans mql4 :

   SetIndexStyle(0,DRAW_SECTION,EMPTY,2,Red);
   SetIndexStyle(1,DRAW_SECTION,EMPTY,2,Blue);
   SetIndexStyle(2,DRAW_HISTOGRAM,EMPTY,1,Gray);

Dans mql5 maintenant, je ne peux même pas imaginer combien de spécification de styles de lignes peut prendre, 50 lignes probablement, et le résultat est 1 et le même.

MQL5 est pour les PROGRAMMEURS, MQL4 est pour les TRADERS. Si vous voulez vérifier le système, programmez-le avec mql4, et si vous voulez la même chose avec mt5, demandez à un programmeur de le faire, ou arrêtez le trading et passez du temps à étudier mql5.

Avec la sortie de MT5, en tant que trader, je n'ai remarqué qu'une seule amélioration, c'est un testeur 64 bits avec la possibilité d'utiliser tous les cœurs du processeur.

La complication du langage mql n'affectera en aucune façon les résultats du trading manuel ou automatisé. La complication du langage est importante pour les programmeurs, oui - nous pouvons faire de jolis boutons et panneaux, intégrer toutes sortes d'étranges WinAPI, etc., mais cela n'a pas affecté les résultats des échanges. Alors pourquoi toutes ces complications alors que vous pouvez programmer en mql4, et le vérifier, mais il n'y a qu'un seul GROS inconvénient - il n'y a pas de terminal x64 et de testeur avec la possibilité d'utiliser tous les cœurs. S'ils faisaient ces deux choses, il n'y aurait pas de prix pour MT4. Mais ils ne les feront pas exprès, afin que cela ne crée pas de concurrence pour MT5 et que les gens comme moi souffrent ou paient de l'argent.

En tout cas, merci pour votre attention, pour votre "aide". Je ne commente pas, je n'irai pas à la filiale de toute façon, c'est juste mon avis, pas plus, je dois y aller.

 
Je suis nouveau ici. Pouvez-vous me dire si je peux trader les rts index futures dans mt5 ? Comment puis-je afficher un seul graphique de cotation de 2009 à aujourd'hui ?
 
sbr080:
Je suis nouveau ici. Pouvez-vous me dire si je peux trader les rts index futures dans mt5 ? Comment imprimer un tableau de cotation de 2009 à aujourd'hui ?
Vous devez demander à votre courtier de vous fournir le graphique autocollant.
 
barabashkakvn:
Demandez à votre courtier de vous fournir un tableau collé.
Puis-je le coller moi-même ?
 
sbr080:
Je peux le coller moi-même ?
Non. Seulement un courtier. Si vous le faites vous-même, vous devrez écrire votre propre indicateur.
 
barabashkakvn:
Non. Seulement un courtier. Si vous le faites vous-même, vous devrez écrire votre propre indicateur.
Merci.
 
Pouvez-vous nous dire s'il est possible pour un Expert Advisor d'afficher des indicateurs techniques sur un graphique avec les paramètres qu'il utilise ? C'est-à-dire de la même manière que lors de l'utilisation de la visualisation dans le testeur de stratégie. Je ne trouve cette information nulle part.
Документация по MQL5: Технические индикаторы
Документация по MQL5: Технические индикаторы
  • www.mql5.com
Технические индикаторы - Документация по MQL5