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

 
Sprut 185:

Wir danken Ihnen für Ihre Teilnahme.

Leider war die ObjectSet***-Funktion für meine Aufgabe nicht geeignet.

Ich habe das Problem selbst gelöst, indem ich die Funktion OnDeinit() verwendet habe.

Jetzt funktioniert alles wie es soll.

Aber in Ihrer Frage stehen solche Worte

Sprut 185:

Bitte helfen Sie mir bei einem Problem!

Ich lerne gerade, Code zu schreiben, und bitte Sie in diesem Zusammenhang um Nachsicht mit meinem Analphabetismus.

Ich möchte Ihnen helfen, die FunktionOnChartEvent zu verstehen, die bei einem Wechsel des Zeitrahmens oder einer Änderung der Einstellungen im Indikatormenü die grafischen Objekte im Diagramm aktualisiert.

Ich verstehe, dass Sie die grafischen Objekte zuerst löschen und dann neu erstellen müssen. Aberwenn die Objekte gelöscht wurden, gibt es keinen Zugriff auf ihre Eigenschaften und wie können diese Objekte dann neu erstellt werden? ....... Oder verstehe ich es vielleicht nicht? Oder gibt es vielleicht einen anderen Weg - die Aktualisierung von grafischen Objekten im Diagramm?

Bitte schreiben Sie ein Beispiel mit Kommentaren, wie man es macht.

Und um nicht zu löschen, ändern Sie einfach die gewünschte Objekteigenschaft mit einer der ObjectSet***-Funktionen.

Was das Löschen aller Objekte......... angeht, sollten Sie sehr vorsichtig sein, wenn Sie wahllos alle Objekte löschen... Unter den Objekten auf dem Chart können sich auch Objekte befinden, die manuell oder von einem anderen Expert Advisor/Indikator erstellt wurden. Wenn Sie gerne Objekte löschen, sollten Sie auf das Entfernen per Präfix achten. Richtig, Sie müssen mit dem Präfix erstellen. Das ist nicht schwer.

 
Was ist das Ergebnis von

iSpread ?


Ich sehe, dass er in etwa dem Spread-Wert entspricht, wenn Sie im Terminal unter Symbols/Bars nach Balken suchen.

Natürlich entsprechen diese Werte nicht den realen Werten, die durch SYMBOL_SPREAD gegeben sind.

Warum ein solcher Unterschied? Und was ist eine solche unwirkliche Streuung, die mitiSpread angezeigt wird?

 
Aleksei Skrypnev:
Welches Ergebnis zeigt die Funktion

iSpread ?


Ich sehe, dass er in etwa dem Spread-Wert entspricht, wenn Sie im Terminal unter Symbols/Bars nach Balken suchen.

Natürlich entsprechen diese Werte nicht den realen Werten, die durch SYMBOL_SPREAD gegeben sind.

Warum ein solcher Unterschied? Und was ist eine solche unwirkliche Streuung, die mitiSpread angezeigt wird?

Mindestspanne pro Stange.

Ich habe einen Puffer zur Überprüfung hinzugefügt - er nimmt Daten aus dem Indikator-Array spread[] und zeigt einen Kommentar für den aktuellen Balken an - das Ergebnis von iSpread


Hier erfahren Sie, wie es geht:Spread Control

Spread Control
Spread Control
  • www.mql5.com
Просмотр спреда
Dateien:
 

Grüße!

Können Sie mir sagen, warum sich die Variable "ATR14" nicht ändert und wie ich sehen kann, dass sie sich ändert?

void OnTick()
{

double ATR14=iATR(NULL,PERIOD_CURRENT,14);

Comment(
 
      "ATR14==: ",ATR14,"\n");
}
 
Alexey Belyakov:

Grüße!

Können Sie mir sagen, warum sich die Variable "ATR14" nicht ändert? Wie kann ich sehen, dass sie sich ändert?

Denn in MQL5 wird das Indikator-Handle (übrigens vom Typ int) nur EINMAL erstellt und zwar in OnInit.

Und für den Datenempfang vom Indikator wird der CopyBuffer verwendet.

 
Vladimir Karputov:

Denn in MQL5 wird der Indikator-Handle (der übrigens den Typ int hat) EINMAL erstellt und zwar in OnInit.

Und für den Datenempfang vom Indikator wird der CopyBuffer verwendet.

Okay, nehmen wir an.

double  ATR14m[];   

int ATR14;

int OnInit()
  {
ATR14=iATR(NULL,PERIOD_CURRENT,14);
  return(0);   
  }
  
  
void OnDeinit(const int reason)
  {
//---  
  }


void OnTick()
{
CopyBuffer(ATR14,0,0,3,ATR14m);



Comment(

      "ATR14==: ",ATR14,"\n");

}



Es hat sich nichts geändert.

 
Alexey Belyakov:

Grüße!

Können Sie mir sagen, warum sich die Variable "ATR14" nicht ändert, und wie kann ich sehen, dass sie sich ändert?

Hier ist ein Beispielһttp://www.mql5.com/ru/docs/indicators/iatr

Документация по MQL5: Технические индикаторы / iATR
Документация по MQL5: Технические индикаторы / iATR
  • www.mql5.com
iATR - Технические индикаторы - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alexey Belyakov:

Nun, sagen wir einfach

Nichts hat sich geändert.

Sie haben es fast geschafft. Ich empfehle, das Array 'array_atr' anstelle von 'ATR14m' zu nennen. Dann werden Sie Ihren Fehler beim Aufruf von'Comment' früher sehen.

 
Vladimir Karputov:

Sie haben es fast richtig gemacht. Ich empfehle, das Array "array_atr" anstelle von "ATR14m" zu nennen. Dann sehen Sie Ihren Fehler im"Kommentar"-Aufruf früher.

double  array_atr[];   

int ATR14;

int OnInit()
  {
ATR14=iATR(NULL,PERIOD_CURRENT,14);
  return(0);   
  }
   
void OnDeinit(const int reason)
  {
//---  
  }

void OnTick()
{


CopyBuffer(ATR14,0,0,3,array_atr);

Comment(

      "ATR14==: ",array_atr,"\n");

}

Geändert und Fehler erhalten: " 'array_atr' - ungültiger Array-Zugriff "


 
Vladimir Karputov:

Sie haben es fast richtig gemacht. Ich empfehle, das Array 'array_atr' anstelle von 'ATR14m' zu nennen. Dann werden Sie Ihren Fehler beim Aufruf von'Comment' früher sehen.

Glauben Sie, dass die Benennung des Töpfchens eines Kindes als Nachtvase etwas ändern wird?

Das ist ein solches Missverständnis, dass ich mich nicht einmal traue, etwas vorzuschlagen... Man muss die Dokumentation 50 Mal lesen, um sie zu verstehen...