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

 
Alexey Viktorov:

Ja, und ich habe es nachgeschlagen, um Ihnen zu antworten.

Ich konnte nicht - ich habe von meinem Handy aus geschrieben und es ist schneller, die Frage einfach zu schreiben :)

 
Alexey Viktorov:

Sie wird nicht von den Entwicklern auferlegt, sondern von einem Moderator. Was die BB-Werte angeht, so hat dir Artem gesagt, dass es einfacher ist, alles direkt zu bekommen... die Reihenfolge ist wie folgt...

  1. Deklarierte Handle-Variablen und Arrays, um Indikatorwerte zu erhalten. Falls erforderlich, höchstens 3. Wenn wir keinen Durchschnitt brauchen, reichen zwei Arrays aus.
  2. In OnInit() haben wir den Indikator-Handle erhalten...
  3. In OnTick() oder in einer anderen Funktion CopyBuffer() für jede Zeile einzeln, so viele wie nötig.
  4. Aus diesen Arrays erhalten Sie die Werte der Indikatorlinien auf denjenigen Balken, die interessant sind...

DAS WAR'S. Warum sollte man sich mit OOP¿¿¿¿¿ beschäftigen? Leider kann ich Ihre Frage nicht direkt beantworten, da ich es nicht verwende. Für mich ist es einfacher, wie ich es beschrieben habe. Es gibt nur 4 Aktionen.

Bitte sagen Sie mir, warum es in Inite nicht funktioniert? Und wie kann ich das schaffen?


#property strict

//--- индикаторные буферы
double         UpperBuffer[];
double         LowerBuffer[];
double         MiddleBuffer[];
//--- переменная для хранения хэндла индикатора iBands
int    bb_handle;

int OnInit(){//////////////***OnInit()****///*************OnInit()*******/////////***/////////////////////////OnInit()

bb_handle=iBands(NULL, 0, 20, 0, 2.0, PRICE_CLOSE);

Print("bb_handle ", bb_handle);

Print("OnInit()  ", BB_up(0), "  ", BB_mi(0), "  ", BB_lo(0));

return(INIT_SUCCEEDED);
}
void OnTick(){




Print("OnTick()  ", BB_up(0), "  ", BB_mi(0), "  ", BB_lo(0));

}
//-------------------------------------------------------1
double BB_up(int in_shift){
   CopyBuffer(bb_handle, 1, in_shift, 1, UpperBuffer);
   return UpperBuffer[0];
}
double BB_mi(int in_shift){
   CopyBuffer(bb_handle, 0, in_shift, 1, MiddleBuffer);
   return MiddleBuffer[0];
}
double BB_lo(int in_shift){
   CopyBuffer(bb_handle, 2, in_shift, 1, LowerBuffer);
   return LowerBuffer[0];
}
 
Andrey Sokolov:

Können Sie mir sagen, warum es auf der Inite nicht funktioniert? Und wie kann ich das schaffen?


iBands - Technische Indikatoren - MQL5 Referenz - Algorithmic/Automatic Trading Language Referenz für MetaTrader 5
Документация по MQL5: Технические индикаторы / iBands
Документация по MQL5: Технические индикаторы / iBands
  • www.mql5.com
iBands - Технические индикаторы - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Andrey Sokolov:

Warum funktioniert es dann nicht?

Willst du reden? - Oder wollen Sie an sich arbeiten?

 
SanAlex:

Willst du reden? - Oder möchten Sie an sich selbst arbeiten?

Ich verstehe. Danke. Kann sonst noch jemand etwas vorschlagen?

 
Andrey Sokolov:

Können Sie mir sagen, warum es auf der Inite nicht funktioniert? Und wie kann ich das schaffen?


Weil der Indikator noch nicht berechnet worden ist.

https://www.mql5.com/ru/docs/series/barscalculated


der OnInit()-Abschnitt ist nicht der beste Ort, um die Terminalumgebung zu erhalten, ich denke, es funktioniert logisch und korrekt
 
Igor Makanu:

weil der Indikator noch nicht berechnet ist

https://www.mql5.com/ru/docs/series/barscalculated

👍

 
Igor Makanu:


der OnInit()-Abschnitt ist nicht der beste Ort, um die Terminalumgebung zu erhalten, ich denke, es funktioniert logisch und korrekt

Inite, weil Sie brauchen, um Berechnungen auf Geschichte beim Start zu tun, fügte eine Wartezeit wie im Beispiel, alles ist gut, danke

 
Andrey Sokolov:

eine Wartezeit hinzugefügt, wie im Beispiel, ist alles in Ordnung.

Seien Sie nur nicht überrascht, wenn es nicht mehroder nur noch sporadisch funktioniert.

Grund der Beschwerde: