Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 770

 
Igor Zakharov:

Verwenden Sie den ATR-Indikator

Danke, aber ich verstehe immer noch nicht, wie es in meinem Fall verwendet werden kann.

Jemand warf einen Link zu CopyRates (Danke, leider wurde der Kommentar gelöscht), so versuche ich zu verstehen, iVolume() ist der Unterschied zwischen High und Low Preis oder etwas anderes ?

D.h. in meinem Fall (so wie ich es verstehe) kann ich ein Array mit monatlichen und wöchentlichen Daten erstellen und dann den Durchschnitt der Werte bilden, usw.

 
Alexander Layzerevich:

versuchen zu verstehen, iVolume() ist es der Unterschied zwischen High und Low Preis oder etwas anderes?

Dies sind die Tick-Volumina. Klicken Sie mit der rechten Maustaste auf das Diagramm in MT und wählen Sie "Volumina anzeigen" - die Histogramme erscheinen am unteren Rand des Diagramms.

https://docs.mql4.com/ru/series/ivolume

iVolume - Доступ к таймсериям и индикаторам - Справочник MQL4
iVolume - Доступ к таймсериям и индикаторам - Справочник MQL4
  • docs.mql4.com
Значение тикового объема бара (указанного параметром shift) соответствующего графика или 0 в случае ошибки. Для получения дополнительной информации об ошибке необходимо вызвать функцию GetLastError().
 
Igor Makanu:

Dies sind die Tick-Volumina. Klicken Sie mit der rechten Maustaste auf das Diagramm in MT und wählen Sie "Volumina anzeigen" - die Histogramme erscheinen am unteren Rand des Diagramms.

https://docs.mql4.com/ru/series/ivolume

Vielen Dank für die Klarstellung.

Es bleiben also folgende Möglichkeiten: Erstellen Sie 2 ArraysHoch und Tief, um die Daten für den Monat zu berechnen, und 2 ArraysHoch und Tief, um die Daten für die Woche zu berechnen.

Dann wird alles gemittelt, usw.

Ich werde versuchen, das alles in den Code zu implementieren...

Ich habe noch eine andere Frage: Was ist besser für die Berechnung des letzten Monats und der letzten Woche?

Nach dem Beispiel zu urteilen:

Referenz nach Ausgangsposition und Anzahl der erforderlichen Elemente

intCopyHigh(
stringsymbol_name,// Name des Symbols
ENUM_TIMEFRAMEStimeframe,// Zeitraum
intstart_pos,//Anfangspunkt
intcount,// wie viele wir kopieren
doublehigh_array[]// Array zum Kopieren der Höchstpreise
);

Zeitrahmen = PERIOD_D1;

start_pos = 1; // vorheriger Takt

count = 30; // 30 Tage (Monat)

 
Alexander Layzerevich:

Eine andere Frage: Wie kann man den letzten Monat und die letzte Woche am besten zählen?

Es ist besser, sie zu datieren, denn es gibt Ausfälle von Bars und Wochenenden, an denen es keine Bars gibt, und das wird helfen:

Обращение по начальной и конечной датам требуемого интервала времени

int  CopyHigh(
   string           symbol_name,      // имя символа
   ENUM_TIMEFRAMES  timeframe,        // период
   datetime         start_time,       // с какой даты
   datetime         stop_time,        // по какую дату
   double           high_array[]      // массив для копирования максимальных цен
   );

https://docs.mql4.com/ru/series/copyhigh

CopyHigh - Доступ к таймсериям и индикаторам - Справочник MQL4
CopyHigh - Доступ к таймсериям и индикаторам - Справочник MQL4
  • docs.mql4.com
Функция получает в массив high_array исторические данные максимальных цен баров для указанной пары символ-период в указанном количестве. Необходимо отметить, что отсчет элементов от стартовой позиции ведется от настоящего к прошлому, то есть стартовая позиция, равная 0, означает текущий бар. При копировании заранее неизвестного количества...
 
Igor Makanu:

Es wäre besser zu datieren, da es Auslassungen (Zitate) von Bars und Wochenenden, an denen es keine Bars gibt, das würde helfen:

https://docs.mql4.com/ru/series/copyhigh

Danke, nur wie kann man den EA (Roboter) wissen lassen, mit welchem Datum er beginnen und wo er aufhören soll.

Ich finde es einfacher, 30 Kerzen (30 Tage) von 1 an zu zählen. Oder 7 Kerzenständer (Tage).

Ich habe diesen Code erhalten:

//************************************************************************************************/
double iPointOrderStep()
{
double Awerage30 = 0, SummAwerage30 = 0;
double Awerage7 = 0, SummAwerage7 = 0;

double High30[], Low30[], High7[], Low7[];
//----------------Для месяца---------------------------
int iHigh30 = CopyHigh(Symbol(),PERIOD_D1,1,30,High30);
int iLow30 = CopyLow(Symbol(),PERIOD_D1,1,30,Low30);
//----------------Для недели---------------------------
int iHigh7 = CopyHigh(Symbol(),PERIOD_D1,1,7,High7);
int iLow7 = CopyLow(Symbol(),PERIOD_D1,1,7,Low7);

for(int i=0;i<30;i++) 
   {
      SummAwerage30 += (High30[i]-Low30[i]);
   }
for(int i=0;i<7;i++) 
   {
      SummAwerage7 += (High7[i]-Low7[i]);
   }

   Awerage30 = SummAwerage30/30;
   Awerage7 = SummAwerage7/7;
   
   double iPointOrderStep = NormalizeDouble(((Awerage30+Awerage7)/2),0);
   return (iPointOrderStep/6);
}
//************************************************************************************************/

Aber leider gibt er einen Wert = 0 aus.

Können Sie mir sagen, wo der Fehler liegt...

Und außerdem...

Wie kann man die Berechnung einmal pro Woche zu Beginn der Sitzung oder beim Neustart des Terminals durchführen?

 
Alexander Layzerevich:

Danke, aber ich habe noch nicht verstanden, wie es in meinem Fall verwendet werden kann.

Das Wesen der ATR ist die durchschnittliche Höhe der Balken über einen bestimmten Zeitraum. Man könnte auch MA(hoch)-MA(tief) verwenden. Das ist einfacher als die Entfaltung des Überschwungs

 
Igor Zakharov:

Das Wesen der ATR ist die durchschnittliche Höhe der Balken über einen bestimmten Zeitraum. Sie können genauso gut MA(hoch)-MA(niedrig) verwenden. Es ist einfacher, als die Überschreitung rückgängig zu machen.

d.h. gemäß dem Beispiel

intiATR(
stringsymbol,// Name des Symbols
ENUM_TIMEFRAMESZeitraum,// Zeitraum
intma_period// Mittelungszeitraum
);

double Awerage30= iATR(Symbol(),PERIOD_D1, 30); dies ist der durchschnittliche numerische Wert für 30 Tage ?

 
Alexander Layzerevich:

d.h. gemäß dem Beispiel

intiATR(
stringsymbol,// Name des Symbols
ENUM_TIMEFRAMESZeitraum,// Zeitraum
intma_period// Mittelungszeitraum
);

double Awerage30= iATR(Symbol(),PERIOD_D1, 30); das ist der Durchschnittswert für 30 Tage ?

Nicht Kalendertage. 30 Tage rückwärts (Sonntage, Samstage)

Nach der Funktion ohne Parameterverschiebung zu urteilen, machen Sie das in 5, und Sie haben eine Frage in 4 gestellt :)

 
Igor Zakharov:

Nur nicht die aus dem Kalender. 30-Tage-Balken rückwärts (Sonntage, Samstage)

Nach der Funktion ohne den Verschiebungsparameter zu urteilen, machen Sie das in 5 und Sie haben die Frage in 4 gestellt :)

Dieser Abzweig gilt für beide Terminals. Vor allem mit den gleichen Funktionen.

 
Artyom Trishkin:
Dieser Zweig befindet sich an beiden Terminals. Vor allem mit den gleichen Funktionen.

Sollte der Titel dann korrigiert werden?

Grund der Beschwerde: