Gemeinsam lernen und schreiben in MQL5 - Seite 8

 

Ich schreibe einen Algorithmus der einfachen Preis Konstruktionen Übertragung auf mcl5 von mcl4, auf Beispiele von mcl4 Code Kopieren zu mcl5 stochastischen masd und rsi, gibt es grundlegende Methoden des Zugangs zu mcl4 Daten.

Bald werden wir haben, was wir brauchen.

jetzt bin ich mit iMaOnArRAu Funktion kämpfen, wie mt5 nicht bieten es die einfachsten Methoden der gleitenden Durchschnitte von Benutzer-Arrays zu erhalten.

ich werde die Bibliotheken um alle technischen Werkzeuge erweitern, ich kenne fast alle Algorithmen

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Методы скользящих
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Методы скользящих
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Методы скользящих - Документация по MQL5
 

Ich bin so dumm... Ich kann nicht herausfinden, wie man schreibt...

Es gibt diesen Code:

   MqlRates rates[];
   
   ArraySetAsSeries(rates,true);
   int copied=CopyRates(_Symbol,_Period,0,1000,rates);
   

Ich möchte den Index des Balkens mit dem niedrigsten Low unter den Balken vom i-ten bis zum j-ten erhalten.

Ich versuche, die Funktion ArrayMinimum zu verwenden.

int k=ArrayMinimum(rates.low,i,j-i+1); - falsch

int k=ArrayMinimum(rates[].low,i,j-i+1); - falsch

Was ist der richtige Weg?

Документация по MQL5: Операции с массивами / ArrayMinimum
Документация по MQL5: Операции с массивами / ArrayMinimum
  • www.mql5.com
Операции с массивами / ArrayMinimum - Документация по MQL5
 
owl:

Ich bin so dumm... Ich kann nicht herausfinden, wie man schreibt...

Es gibt diesen Code:

Ich möchte den Index des Balkens mit dem niedrigsten Low unter den Balken vom i-ten bis zum j-ten erhalten.

Ich versuche, die Funktion ArrayMinimum zu verwenden.

int k=ArrayMinimum(rates.low,i,j-i+1); - falsch

int k=ArrayMinimum(rates[].low,i,j-i+1); - falsch

Was ist der richtige Weg?

Verwenden Sie Funktionen des direkten Zugriffs, MqlRates ist ein Array von "Strukturen", und Sie brauchen ein Array Low, hier ist ein Beispiel, auch für High.

   rates_total=CopyHigh(NULL,_Period,_start,_end,iHigh);
   if(rates_total<=0)
      return;
   else
      HighDay=iHigh[ArrayMaximum(iHigh,0,rates_total)];
   rates_total=CopyLow(NULL,_Period,_start,_end,iLow);
   if(rates_total<=0)
      return;
   else
      LowDay=iLow[ArrayMinimum(iLow,0,rates_total)];

Schauen Sie sich Beispiele für Codes an. Dies ist von https://www.mql5.com/ru/code/102

PivotPointUniversal
PivotPointUniversal
  • Stimmen: 17
  • 2010.04.26
  • Dmitry
  • www.mql5.com
Опорные точки Pivot без использования объектов строятся по всей доступной истории. Пять вариантов расчета. Три варианта построения: дневной, недельный, месячный. Для дневных уровней есть возможность смещения по GMT.
 
vdv2001:

Verwenden Sie Direktzugriffsfunktionen, MqlRates ist ein Array von "Strukturen" und Sie brauchen ein Array von Low, hier ist ein Beispiel, sofort und für High.

Das ist verständlich. In meinem Fall habe ich gerade geschrieben:

         int k=i; double min=rates[k].low;
         for (int m=i+1;m<=j;m++)
            if (rates[m].low<min) {min=rates[m].low; k=m;}

Ich will keinen Haufen von Arrays. Das ist nicht ressourcenschonend und nicht sehr schön...

Ich wollte nur genau mitArrayMinimum zu verstehen - ist es möglich, diese Funktion mit einem Array von Strukturen zu verwenden....

 
owl:

Das ist verständlich. In meinem Fall habe ich einfach geschrieben:

Ich will keinen Haufen von Arrays... Das ist nicht ressourcenschonend und nicht sehr schön...

Ich wollte nur mit ArrayMinimum beschäftigen - ist es möglich, diese Funktion mit einem Array von Strukturen zu verwenden....

Wenn Sie glauben, dass die Speicherung einer Reihe von Informationen in einem Array von Strukturen wirtschaftlicher ist als ein Array von Doubles, dann halte ich nur meine Hände hoch.

struct MqlRates
  {
   datetime time;         // время начала периода
   double   open;         // цена открытия
   double   high;         // наивысшая цена за период
   double   low;          // наименьшая цена за период
   double   close;        // цена закрытия
   long     tick_volume;  // тиковый объем
   int      spread;       // спред
   long     real_volume;  // биржевой объем 
  };

oder glauben Sie, dass das Speichern von Ints, Lows und Datumsangaben speicherschonender ist?)

oder das, was man braucht, aus einem Haufen Müll herauszusuchen, ist wirtschaftlicher, ha ha ...

 
vdv2001:

Wenn Sie glauben, dass das Speichern einer Reihe von Informationen in einem Array von Strukturen wirtschaftlicher ist als ein Array von Doubles, dann gebe ich einfach auf

oder glauben Sie, dass die Speicherung von Ints, Lows und Datumsangaben speicherschonender ist? ;))

oder es ist wirtschaftlicher, sich aus einem Haufen Müll das herauszusuchen, was man braucht, ha ha ...

Na ja... Ich übertreibe natürlich ein wenig mit der Kosteneffizienz... Aber eigentlich brauche ich fast alle Informationen vonMqlRates(außer vielleicht die Mengen, und das ist keine Tatsache...)
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура исторических данных
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура исторических данных
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура исторических данных - Документация по MQL5
 

Bevor ich eine Frage stelle, gehe ich normalerweise verschiedene Quellen durch, um eine Antwort zu finden.

Aber jetzt, nach einer Woche des Suchens, habe ich festgestellt, dass ich keine Antwort habe, und ich glaube nicht, dass irgendjemand bisher darauf gestoßen ist. Deshalb schlage ich ein Rätsel vor.

Ursprüngliche Daten:

1) Ich habe einen einfachen Indikator wie Levels and Arrows iS7N_SacuL_v3.mq5 (beigefügt)

2) ein Expert Advisor, der versucht, Daten von diesem Indikator aS7N_TIC.mq5 zu empfangen (beigefügt)

So!

Von den fünf Indikatorpuffern werden nur zwei Daten korrekt zurückgegeben.

Eine ausführliche Erklärung wird folgen!!!

Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
  • 2010.10.25
  • Nikolay Kositsin
  • www.mql5.com
Статья о традиционных и не совсем традиционных алгоритмах усреднения, упакованных в максимально простые и достаточно однотипные классы. Они задумывались для универсального использования в практических разработках индикаторов. Надеюсь, что предложенные классы в определенных ситуациях могут оказаться достаточно актуальной альтернативой громоздким, в некотором смысле, вызовам пользовательских и технических индикаторов.
Dateien:
 

Nachdem ich mir die Situation genau angesehen habe, habe ich festgestellt, dass sowohl 3 als auch 4 Indikatorpuffer nicht immer die korrekten Daten liefern (obwohl es unmöglich ist, zu sagen, welche korrekt sind und welche nicht)

Sehen Sie sich die Tabelle an. Im Datenfenster auf der linken Seite befinden sich die Werte des Indikators im Chart und darunter die vom Expert Advisor ermittelten Werte. Die meisten Werte sind die gleichen, aber es gibt einige mehr...

In diesem Zusammenhang habe ich vorgeschlagen, dass im Diagramm und im Tester unterschiedliche Verlaufsdaten verwendet werden.

Was meinen Sie dazu?

 

Endlich, das Hauptproblem! Es ist nicht möglich, die Daten von 1, 2 und 5 Indikatorpuffern auf die übliche Weise zu erhalten.

Das Problem besteht darin, dass die zuvor berechneten Daten der vorherigen Balken bei der Berechnung der Daten für diese Felder berücksichtigt werden.

Natürlich können Sie beim Aufrufen des Indikators erzwingen, dass N kommende Balken neu berechnet werden, unabhängig vom Wert von prev_calculated .

Ich nehme an, dass der Aufruf und die Berechnung der Indikatorwerte mit dem Wert vonprev_calculated ungleich 0 durchgeführt wird

Für die meisten Indikatoren ist dies richtig, weil es Ressourcen spart, aber für das gegebene Beispiel wird es nicht funktionieren.

Was ist zu tun? Was denken Sie darüber?

Alternativ können Sie auch alle Berechnungen in den Expert Advisor verlagern! Diese Option funktioniert, ist aber nicht dasselbe... Ich möchte meine Hosen nicht über dem Kopf tragen.

Способы вызова индикаторов в MQL5
Способы вызова индикаторов в MQL5
  • 2010.03.09
  • KlimMalgin
  • www.mql5.com
C появлением новой версии языка MQL, не только изменился подход к работе с индикаторами, но и появились новые способы создания индикаторов. Кроме того, появилась дополнительная гибкость при работе с индикаторными буферами - теперь вы можете самостоятельно указать нужное направление индексации и получать ровно столько значений индикатора, сколько вам требуется. В этой статье рассмотрены базовые методы вызова индикаторов и получения данных из индикаторных буферов.
 

im Expert Advisor verwendet wird

int resIup = CopyBuffer(iCusHandlI_H4,2,0,1,dBufIup_H4);
Wert von Takt 0 genommen wird, werden die Werte der Indikatorpuffer dafür bei jedem Tick geändert, bis die Kerze geschlossen wird.
Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
  • 2010.10.25
  • Nikolay Kositsin
  • www.mql5.com
Статья о традиционных и не совсем традиционных алгоритмах усреднения, упакованных в максимально простые и достаточно однотипные классы. Они задумывались для универсального использования в практических разработках индикаторов. Надеюсь, что предложенные классы в определенных ситуациях могут оказаться достаточно актуальной альтернативой громоздким, в некотором смысле, вызовам пользовательских и технических индикаторов.