Discussion de l'article "Création d’un Expert Advisor, qui trade sur un certain nombre d’instruments" - page 2

 
gisip:
Tout fonctionne bien sur MQL4 sans timer.
Votre affirmation n'est pas tout à fait acceptable, nous parlons de tests multidevises. Il n'y a pas de minuteur dans MT4, mais il n'y a pas non plus de testeur multidevises. Lorsqu'il travaille sur MT4, l'Expert Advisor dépend de toute façon de l'intensité du flux de cotations de l'instrument sur lequel il travaille. Imaginez une telle situation : disons que vous avez un conseiller expert multidevises sur EURUSD, et si dans un certain laps de temps il n'y a pas de ticks sur cette paire, comment allez-vous suivre l'arrivée de nouveaux ticks sur d'autres instruments ?
 
Interesting:

Eh bien, cela n'existe pas dans MQL4, de même que les structures et les classes n'y existent pas, proposez-vous de les abandonner ici ?


IMHO

Utiliser ou non la bibliothèque standard est une question de goût pour chacun (au pire, on ne peut utiliser que son propre code), mais renoncer à tous les avantages simplement parce qu'ils ne sont pas disponibles dans MT4 n'est pas très raisonnable......

Je n'ai pas écrit cela du tout.

J'ai écrit que MQL5 a des problèmes et produit des données erronées dans certaines combinaisons d'instruments.

Par exemple : si l'EURJPY ou l'EURGBP est superposé au graphique de l'EURUSD, tout va bien.

Mais si vous superposez EURCAD, les données sur le graphique sont erronées, alors que dans MQL4, il n'y avait pas d'erreur de ce type.

[Supprimé]  
gisip:

Je n'ai pas du tout écrit à ce sujet.

J'ai écrit que MQL5 a des problèmes et produit des données erronées avec certaines combinaisons d'instruments.

Par exemple : si l'EURJPY ou l'EURGBP est superposé au graphique de l'EURUSD, tout est normal.

Mais si on superpose EURCAD, les données sur le graphique avec une erreur, alors que dans MQL4 ce n'était pas le cas, il n'y a pas d'erreur.

J'ai bien compris cela, mais Kos a raison (notamment le joli post du 2010.07.02 14:57). Je ne comprends pas pourquoi tous les développeurs (y compris MQ ) persistent à ignorer le timer. Si nous prenons en compte le fait qu'il n'y a pas d'exemples officiels de traders multidevises, alors tout est clair avec MQ à ce sujet, mais pourquoi d'autres persistent à ignorer OnTimer() pour moi personnellement reste un GRAND mystère.....
 
gisip:

Je n'ai pas du tout écrit à ce sujet.

J'ai écrit que MQL5 a des problèmes et produit des données erronées avec certaines combinaisons d'instruments.

Par exemple : si l'EURJPY ou l'EURGBP est superposé au graphique de l'EURUSD, tout est normal.

Mais si vous superposez EURCAD, les données sur le graphique avec une erreur, alors que dans MQL4 ce n'était pas le cas, il n'y a pas d'erreur.

Veuillez fournir un exemple avec une erreur.
 
Renat:
Veuillez me donner un exemple avec une erreur.
Bon, je ne vais pas tout écrire ici, cela semble suffisamment clair.
//--------- Option avec MQL4 ---------
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Aqua

extern string InstrumentName = "EURCAD" ;
double Buffer[] ;
SetIndexBuffer(0,Buffer) ; // Assigne le tableau au tampon
SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,2);// Style de ligne

while(i >= 0){//-- Moving from right to left (i.e. from the highest to the 0 bar which is still being formed) --
Buffer[i] = (iHigh(InstrumentName,0,i) + iClose(InstrumentName,0,i) + iLow(InstrumentName,0,i)) / 3 ;
i--;//-- next Bar
}/next (while)



//----------- Maintenant presque la même variante dans MQL5 --------
#property indicator_separate_window // L'indicateur. est dessiné dans une fenêtre séparée
#property indicator_buffers 1

#property indicator_plots 1
#property indicator_type1 DRAW_LINE
#property indicator_color1 Aqua

input string InstrumentName = "EURCAD" ;
double Buffer[] ;
int handle1 ;

copied=CopyClose(InstrumentName,0,0,CountBars,Buffer) ;

//--Nous lançons maintenant sur EURUSD.

//--Il importe peu sur quel instrument nous plaçons l'indicateur, le graphique ne doit pas changer.
 
Veuillez coller le code correctement, cela facilite la compréhension.
MQL5.community - Памятка пользователя
MQL5.community - Памятка пользователя
  • 2010.02.23
  • MetaQuotes Software Corp.
  • www.mql5.com
Вы недавно зарегистрировались и у вас возникли вопросы: Как вставить картинку в сообщение на форуме, как красиво оформить исходный код MQL5, где находятся ваши Личные сообщения? В этой статье мы подготовили для вас несколько практических советов, которые помогут быстрее освоиться на сайте MQL5.community и позволят в полной мере воспользоваться доступными функциональными возможностями.
 
Rosh:
Veuillez insérer le code correctement, cela facilite la compréhension.

//--------- Option avec MQL4 ---------
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Aqua

extern string InstrumentName = "EURCAD" ;
double Buffer[] ;
int init()
{
SetIndexBuffer(0,Buffer) ; // Assigne le tableau au tampon
SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,2);// Style de ligne
}
int start()
{
while(i >= 0){
Buffer[i] = (iHigh(InstrumentName,0,i) + iClose(InstrumentName,0,i) + iLow(InstrumentName,0,i)) / 3 ;
i-- ;//-- Barre suivante
}//next (while)
}


//----------- Maintenant presque la même variante dans MQL5 --------
#property indicator_separate_window // L'indicateur. est dessiné dans une fenêtre séparée
#property indicator_buffers 1

#property indicator_plots 1
#property indicator_type1 DRAW_LINE
#property indicator_color1 Aqua

input string InstrumentName = "EURCAD" ;
double Buffer[] ;
int OnInit()
{
{ IndicatorSetString(INDICATOR_SHORTNAME,InstrumentName) ;
SetIndexBuffer(0,Buffer,INDICATOR_DATA) ;
}

int OnCalculate(....)
{
copied=CopyClose(InstrumentName,0,0,0,CountBars,Buffer) ;
}
//--Nous le lançons maintenant sur EURUSD.

//--Il importe peu sur quel instrument nous plaçons l'indicateur, le graphique ne doit pas changer.
[Supprimé]  
Gisip, vous devriez utiliser l'insertion de code en utilisant le bouton "SRC"...
 

Veuillez créer un exemple reproductible. En d'autres termes, vous avez besoin d'un code prêt à l'emploi que vous pouvez compiler, placer sur un graphique et obtenir des résultats.

Sans cela, peu de gens comprendront de quoi nous parlons.
 

Je vais aider ceux qui sont privés de conscience.

//----------- Maintenant presque la même variante dans MQL5 --------
#property  indicator_separate_window    // L'indicateur est dessiné dans une fenêtre séparée
#property indicator_buffers 1

#property indicator_plots   1
#property indicator_type1   DRAW_LINE
#property indicator_color1  Aqua

input string InstrumentName = "EURCAD";
double Buffer[]; 
int OnInit() 
{
   IndicatorSetString(INDICATOR_SHORTNAME,InstrumentName);
   SetIndexBuffer(0,Buffer,INDICATOR_DATA);
return(0);
}

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[])
{
int copied;
int CountBars=rates_total;
  copied=CopyClose(InstrumentName,0,0,CountBars,Buffer);
  return(copied);
}
//--Maintenant, lancez-le sur l'EURUSD.

//--Peu importe l'instrument sur lequel nous plaçons l'indicateur, le graphique ne doit pas changer.

Idéalement, il ne devrait pas, mais je l'ai fait grincer avec des algorithmes il n'est apparu que sur 1 TF sur les autres a montré catégoriquement le vide .....

même après une heure de test.....

et des tentatives de téléchargement de l'historique