Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 356

 

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

Gesendet

 
Karputov Vladimir:
Schicken Sie es mir zu.
Ich würde auch hinzufügen, dass, wenn die Eingabeparameter geändert werden, der Indikator auch korrekt und ohne Fehler arbeitet
 

Mit der Hilfe vonKarputov Vladimir. Ich habe das Problem gelöst, indem ich das Indikator-Handle in der Funktion OnInit() abgerufen und dann in OnDeinit() gelöscht habe.

Könnten Sie bitte dafür sorgen, dass der Indikator Linien ab einem bestimmten Balken und nicht auf der gesamten Historie zeichnet?

 

Guten Tag. Ich habe ein solches Problem. Ich habe begonnen, MQL zu lernen und schreibe gerade einen EA. Wenn ich den Expert Advisor kompiliere und dann ausführe, öffnet er einen EUR-Stunden-Chart, aber ich habe nicht angegeben, welcher Chart geöffnet werden soll. Ich habe die Öffnung des Euro-Dollar für 5 Minuten vorgeschrieben. Zuerst öffnet er den Euro-Dollar um eine Stunde, dann um 5 Minuten. Wie kann ich das Stundendiagramm löschen? Hier ist der Code des Expert Advisors. Vielen Dank für die Ratschläge im Voraus.


//+------------------------------------------------------------------+
//|а.mq4 |
//|Valery Wilkes |
//|https://www.mql5.com ||
//+------------------------------------------------------------------+
#eigentum copyright "Valery Wilkes"
#property link "https://www.mql5.com"
#Eigenschaft Version "1.00"
#Eigenschaft streng
double iAlligator();
bool ObjectSetInteger();
long a=ChartOpen("EURUSD",PERIOD_M5);
//+------------------------------------------------------------------+
//| Experten-Initialisierungsfunktion|
//+------------------------------------------------------------------+
int OnInit()
{
//--- Zeitschaltuhr erstellen
EventSetTimer(5);

//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Experten-Deinitialisierungsfunktion|
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- Zeitgeber zerstören
EventKillTimer();

}
//+------------------------------------------------------------------+
//| Experten-Tick-Funktion|
//+------------------------------------------------------------------+
void OnTick()
{


for(int f=3;; f++)
{
double val=iFractals("EURUSD",15,1,f);
if(val!=0)
{
Alert("Buy Fractal",val, "Bar Left",f);
Pause;
}
}
for(int f1=3;; f1++)
{
double val1=iFractals("EURUSD",15,2,f1);
if(val1!=0)
{
Alert("Fractal zu verkaufen ",val1, "Bar links",f1);
Pause;
}
Alert(Bid);
}


}
//+------------------------------------------------------------------+
//| Timer-Funktion|
//+------------------------------------------------------------------+

void OnTimer()
{


}
//+------------------------------------------------------------------+
//| Testerfunktion|
//+------------------------------------------------------------------+
double OnTester()
{
//---
double ret=0.0;
//---

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

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

Guten Tag. Ich habe ein solches Problem. Ich habe begonnen, MQL zu studieren, und ich schreibe einen Expert Advisor. Wenn ich den Expert Advisor kompiliere und ausführe, öffnet er den EURUSD-Stundenchart, aber ich habe noch nicht angegeben, welcher Chart geöffnet werden soll. Ich habe die Öffnung des Euro-Dollar für 5 Minuten vorgeschrieben. Zuerst öffnet er den Euro-Dollar um eine Stunde, dann um 5 Minuten. Wie kann ich das Stundendiagramm löschen? Hier ist der Code des Expert Advisors. Vielen Dank für den Tipp im Voraus.



Sie müssen das Debugging aktivieren und dann startet Ihr EA mit dem Standardsymbol. Geben Sie das gewünschte Symbol und TF in den Einstellungen des Meta-Editors an. (Siehe beigefügtes Bild).

Dateien:
kagfqct9ki.png  28 kb
 
Guten Tag.
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);  
Was bedeutet das Ihrer Meinung nach?
 
azfaraon:
Guten Tag.
Was bedeutet das Ihrer Meinung nach?
Dies ist MQL4-Code. Zunächst wird nach dem Maximum in der Matrix gesucht und die gesamte Matrix, beginnend mit dem Nullelement, überprüft. Und dann wird das Array ab dem gefundenen maximalen Index sortiert (im ersten Beispiel in aufsteigender, im zweiten in absteigender Reihenfolge).
 

In diesem Stück suchen wir also nach Maximal- und Minimalwerten von Maximum bis Minimum?

und in diesem

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

vom Minimum zum Maximum?

 
azfaraon:


Dieser Code:

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

sucht nach dem Index des Elements mit dem höchsten Wert. Die Suche beginnt bei Element Null und erstreckt sich über das gesamte Array.

 
azfaraon:

Hier ist der 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("Конец");
  }
//+------------------------------------------------------------------+

und das ist das Ergebnis:

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:  Конец

Erkunden Sie bitte.