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

 

Karputov Vladimir:
Высылайте.

Envoyé

 
Karputov Vladimir:
Envoyez-le-moi.
J'ajouterais également que si les paramètres d'entrée sont modifiés, l'indicateur fonctionne également correctement et sans erreur.
 

Avec l'aide deKarputov Vladimir. J'ai résolu le problème en récupérant le handle de l'indicateur dans la fonction OnInit() puis en le supprimant dans OnDeinit().

Pourriez-vous faire en sorte que l'indicateur trace des lignes à partir d'une certaine barre, et non sur l'ensemble de l'historique ?

 

Bon après-midi. J'ai un tel problème. J'ai commencé à étudier le MQL et j'écris un EA. Lorsque je compile puis exécute mon EA, il ouvre le graphique EURUSD d'une heure, mais je n'ai pas spécifié le graphique à ouvrir. J'ai prescrit l'ouverture de l'Euro dollar pendant 5 minutes. Il ouvre d'abord l'eurodollar d'une heure, puis de 5 minutes. Comment puis-je supprimer le graphique horaire ? Voici le code de l'Expert Advisor. Merci d'avance pour les conseils.


//+------------------------------------------------------------------+
//|а.mq4 |
//|Valery Wilkes |
//|https ://www.mql5.com ||
//+------------------------------------------------------------------+
#property copyright "Valery Wilkes"
#lien de propriété "https://www.mql5.com"
#propriété version "1.00"
#propriété stricte
double iAlligator() ;
bool ObjectSetInteger() ;
long a=ChartOpen("EURUSD",PERIOD_M5) ;
//+------------------------------------------------------------------+
//| Fonction d'initialisation de l'expert|
//+------------------------------------------------------------------+
int OnInit()
{
//--- créer une minuterie
EventSetTimer(5) ;

//---
return(INIT_SUCCEEDED) ;
}
//+------------------------------------------------------------------+
//| Fonction de désinitialisation des experts|
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- détruire le timer
EventKillTimer() ;

}
//+------------------------------------------------------------------+
//| fonction tick expert|
//+------------------------------------------------------------------+
void OnTick()
{


for(int f=3; ; f++)
{
double val=iFractals("EURUSD",15,1,f) ;
si(val!=0)
{
Alert("Achat Fractal",val, "Barre Gauche",f) ;
pause ;
}
}
for(int f1=3; ; f1++)
{
double val1=iFractals("EURUSD",15,2,f1) ;
si(val1!=0)
{
Alert("Fractal à vendre ",val1, "Barre à gauche",f1) ;
pause ;
}
Alerte(Bid) ;
}


}
//+------------------------------------------------------------------+
//| Fonction de temporisation|
//+------------------------------------------------------------------+

void OnTimer()
{


}
//+------------------------------------------------------------------+
//| Fonction de testeur|
//+------------------------------------------------------------------+
double OnTester()
{
//---
double ret=0.0 ;
//---

//---
retour(ret) ;
}
//+------------------------------------------------------------------+

Автоматический трейдинг и тестирование торговых стратегий
Автоматический трейдинг и тестирование торговых стратегий
  • www.mql5.com
MQL5: язык торговых стратегий для MetaTrader 5, позволяет писать собственные торговые роботы, технические индикаторы, скрипты и библиотеки функций
 
valeravilks:

Bon après-midi. J'ai un tel problème. J'ai commencé à étudier MQL, et je suis en train d'écrire un conseiller expert. Lorsque je compile et exécute le conseiller expert, il ouvre le graphique horaire EURUSD, mais je n'ai pas encore spécifié le graphique à ouvrir. J'ai prescrit l'ouverture de l'Euro dollar pendant 5 minutes. Il ouvre d'abord l'eurodollar d'une heure, puis de 5 minutes. Comment puis-je supprimer le graphique horaire ? Voici le code de l'Expert Advisor. Merci d'avance pour le conseil.



Vous devez activer le débogage et ensuite votre EA démarre sur le symbole par défaut. Spécifiez le symbole et le TF requis dans les paramètres du métaéditeur. (Voir la photo ci-jointe).

Dossiers :
kagfqct9ki.png  28 kb
 
Bon après-midi.
int maxValueIdx= ArraySort(INDEX,WHOLE_ARRAY,ArrayMaximum(INDEX,WHOLE_ARRAY,0),MODE_ASCEND);
int minValueIdx=ArraySort(INDEX,WHOLE_ARRAY,ArrayMinimum(INDEX,WHOLE_ARRAY,0),MODE_DESCEND);  
Que pensez-vous que cela signifie ?
 
azfaraon:
Bon après-midi.
Que pensez-vous que cela signifie ?
C'est le code MQL4. Tout d'abord, il recherche le maximum dans le tableau, vérifie l'ensemble du tableau, en commençant par l'élément zéro. Ensuite, le tableau est trié à partir de l'indice maximal trouvé (dans le premier exemple, par ordre croissant, dans le second, par ordre décroissant).
 

Donc, dans cette pièce, nous recherchons les valeurs maximales et minimales, du maximum au minimum ?

et dans ce

  int maxValueIdx=ArrayMaximum(INDEX,WHOLE_ARRAY,0);
      int minValueIdx=ArrayMinimum(INDEX,WHOLE_ARRAY,0);

de min à max ?

 
azfaraon:


Ce code :

int maxValueIdx=ArrayMaximum(INDEX,WHOLE_ARRAY,0);

recherche l'index de l'élément ayant la valeur maximale. La recherche est effectuée à partir de l'élément zéro et dans tout le tableau.

 
azfaraon:

Voici le code

//+------------------------------------------------------------------+
//|                                                  test_script.mq4 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- Инициализация массива
   int INDEX[]={2,45,21,8,96,14,32,6,81,46,1,3,31,22,5,78,24,25,66};

//--- Выведем на печать наш массив
   int size;
   string text;

   size=ArraySize(INDEX);        // размер нашего массива
   text=NULL;
   for(int i=0;i<size;i++)
     {
      if(i<size-1)
         text=text+IntegerToString(INDEX[i])+",";
      else
         text=text+IntegerToString(INDEX[i]);
     }
   Print("Старт");
   Print(text);
//---
   Print("---");
   Print("Элемент с индексом ",ArrayMaximum(INDEX,WHOLE_ARRAY,0),
         " имеет максимальное значение равное ",INDEX[ArrayMaximum(INDEX,WHOLE_ARRAY,0)]);
   int maxValueIdx=ArraySort(INDEX,WHOLE_ARRAY,ArrayMaximum(INDEX,WHOLE_ARRAY,0),MODE_ASCEND);

//--- Выведем на печать наш массив
   size=ArraySize(INDEX);       // размер нашего массива   
   text=NULL;
   for(int i=0;i<size;i++)
     {
      if(i<size-1)
         text=text+IntegerToString(INDEX[i])+",";
      else
         text=text+IntegerToString(INDEX[i]);
     }
   Print(text);

//---
   Print("---");
   Print("Элемент с индексом ",ArrayMinimum(INDEX,WHOLE_ARRAY,0),
         " имеет минимальное значение равное ",INDEX[ArrayMinimum(INDEX,WHOLE_ARRAY,0)]);
   int minValueIdx=ArraySort(INDEX,WHOLE_ARRAY,ArrayMinimum(INDEX,WHOLE_ARRAY,0),MODE_DESCEND);

//--- Выведем на печать наш массив
   size=ArraySize(INDEX);       // размер нашего массива   
   text=NULL;
   for(int i=0;i<size;i++)
     {
      if(i<size-1)
         text=text+IntegerToString(INDEX[i])+",";
      else
         text=text+IntegerToString(INDEX[i]);
     }
   Print(text);
   Print("Конец");
  }
//+------------------------------------------------------------------+

et voici le résultat :

2015.05.03 19:20:03.917 test_script #CHL,Daily:  Старт
2015.05.03 19:20:03.917 test_script #CHL,Daily: 2,45,21,8,96,14,32,6,81,46,1,3,31,22,5,78,24,25,66
2015.05.03 19:20:03.917 test_script #CHL,Daily: ---
2015.05.03 19:20:03.917 test_script #CHL,Daily:  Элемент с индексом 4 имеет максимальное значение равное 96
2015.05.03 19:20:03.917 test_script #CHL,Daily: 2,45,21,8,1,3,5,6,14,22,24,25,31,32,46,66,78,81,96
2015.05.03 19:20:03.917 test_script #CHL,Daily: ---
2015.05.03 19:20:03.917 test_script #CHL,Daily:  Элемент с индексом 4 имеет минимальное значение равное 1
2015.05.03 19:20:03.917 test_script #CHL,Daily: 2,45,21,8,96,81,78,66,46,32,31,25,24,22,14,6,5,3,1
2015.05.03 19:20:03.917 test_script #CHL,Daily:  Конец

Explorez, s'il vous plaît.