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

 
Alexey Kozitsyn:

Es gibt mehrere Möglichkeiten, aktuelle Preise zu erhalten:

1. Für jedes Symbol: Wenn Sie garantierte aktuelle Preise erhalten möchten, rufen Sie SymbolInfoDouble() mit den korrekten Bezeichnern auf, bevor Sie sie verwenden.

2. Für das aktuelle Symbol können Sie auch die aktuellen Preise über die vordefinierten Variablen Bid und Ask abrufen. Sie können veraltet sein. Wenn OnTick() läuft, sollten Sie sie mit RefreshRates() aktualisieren.

Ich danke Ihnen!
 
Compiler-Warnung:

"möglicher Datenverlust durch Typkonvertierung"

Wie kann ich diese Warnung umgehen?
string singleElement+=CharToString(StringGetCharacter(stringOfSymbols,i));
 
Maksym Mudrakov:
Compilerwarnung:

"möglicher Datenverlust durch Typkonvertierung"

Wie kann ich diese Warnung umgehen?
string singleElement+=CharToString(StringGetCharacter(stringOfSymbols,i));

Sie müssen die genauen Typen der von den Funktionen zurückgegebenen Werte kennen und eine explizite Konvertierung verwenden. https://www.mql5.com/ru/docs/basis/types/casting

Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Основы языка / Типы данных / Приведение типов - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Artyom Trishkin:
Sie haben keine vollständige Vorlage - wahrscheinlich haben Sie die Indikatorpuffer im Assistenten nicht gesetzt, in die die berechneten Daten geschrieben werden.

Das Grundprinzip für die meisten Indikatoren ist jedoch das folgende:

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   if(rates_total<1) return(0);              // проверка достаточности данных для расчёта индикатора, если не достаточно - выходим
                                             // если для расчёта требуются некое количество баров слева от индекса цикла, ...
                                             // ... то проверять нужно это количество, а не 1
  
   //--- Действия для полного перерасчёта индикатора
   int limit=rates_total-prev_calculated;    // количество посчитанных уже баров
   if(limit>1) {                             // если количество больше 1, значит имеем новые данные, и нужно полностью пересчитать индикатор
      limit=rates_total-1;                   // задаём количество требуемых для расчёта баров равным количеству баров в истории,
                                             // если для расчёта требуются некое количество баров слева от индекса цикла, ...
                                             // ... то это количество тоже нужно вычесть из rates_total чтобы не выйти за пределы массива
                                             // так же тут нужно при необходимости произвести инициализацию буферов индикатора
      }
  
   //--- Основной цикл индикатора
   for(int i=limit; i>=0; i--) {
      // тут выполняем нужные расчёты и записываем их результат в нужные буферы, например:
      ExtMapBuffer[i]=(open[i]+high[i]+low[i]+close[i])/4.0;   // Выведем на график среднюю цену каждой свечи (OHLC/4.0)
      }
  
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
Artem, es gibt einen Fehler im Compiler: ExtMapBuffer' - nicht deklarierter Bezeichner

 
Andrey Koldorkin:
Artem, der Compiler gab einen Fehler aus: ExtMapBuffer' - nicht deklarierter Bezeichner

Natürlich wird es das. Ich habe ihn aus heiterem Himmel geschrieben. Und bevor ich das Beispiel geschrieben habe, habe ich Ihnen gesagt, dass in der Vorlage keine externe Variable angegeben ist (das ist nicht notwendig) und kein Puffer für die Anzeige von Indikatorberechnungen angegeben ist. Natürlich gibt es einige Indikatoren, die den Pufferausgang nicht verwenden, aber nicht in Ihrem Fall.

Deshalb habe ich diesen Puffer eingebaut. Sie sollten die Vorlage neu erstellen, aber Sie sollten sorgfältig über diese einfache Aktion nachdenken und sich fragen: "Was fragt mich der Assistent und was braucht er?
 
Hallo! Vor etwa vier Monaten habe ich angefangen, MQL4 mit Hilfe des Tutorials von Kovalev zu studieren. Ich habe auch Videos. Ich schaue mir das Video an, studiere das Tutorial und kopiere die Codes, die dort verwendet werden. ich verstehe, dass dies eine sehr ernste Angelegenheit ist und es Zeit braucht, sie zu meistern. aber ich weiß genau, dass ich Übung brauche. ich brauche einfache Aufgaben und sie zu schreiben und jemand prüft sie, dann werde ich in der Lage sein, weiter zu gehen! ein weiteres Problem ist, dass das Buch und die Videos aktualisiert wurden, ich wiederhole sogar den Code aus dem Buch, kompiliere ihn, ich bekomme Fehler, ich sehe aus wie ein Schaf an einem neuen Tor...... das ist die Traurigkeit!
 
FOTOGRAF14:
Hallo! Vor etwa vier Monaten habe ich angefangen, MQL4 mit Hilfe des Tutorials von Kovalev zu studieren. Ich habe auch Videos. Ich schaue mir das Video an und studiere das Tutorial, ich wiederhole die Codes, die dort verwendet werden. ich verstehe, dass dies eine sehr ernste sache ist und es braucht zeit, sie zu beherrschen. aber ich weiß genau, dass ich praxis brauche. ich brauche einfache aufgaben und sie zu schreiben und jemand prüft sie, dann werde ich in der lage sein, weiter zu gehen! ein weiteres problem ist, dass das buch und die videos aktualisiert wurden, ich wiederhole sogar den code aus dem buch, kompiliere ihn, ich bekomme fehler, ich schaue wie ein schaf auf das neue gate...... das ist die traurigkeit!

Lesen Sie doch einmal die Dokumentation. Das Lehrbuch ist an einigen Stellen veraltet. Die Dokumentation wird Ihnen dabei helfen. Was die Aufgaben betrifft - lösen Sie die gleichen Aufgaben wie im Lehrbuch beschrieben. Lesen Sie das Problem, sehen Sie sich die Lösung an und wiederholen Sie sie. Und so weiter, bis Sie den Dreh raus haben. Es ist besser, die Aufgaben so nah wie möglich an den Aufgaben zu wählen, die Sie selbst ausführen möchten.

Alles natürlich nur IMHO.

 
Sergey Gritsay:
Bei mir funktioniert das Kompilieren einwandfrei.

Ok, wollen Sie erklären, warum solche Objekte nicht differenziert werden?

Wenn Sie den Objekttyp ändern, werden die Eigenschaften mit 2 Beschriftungen oder Trendlinien ausgeblendet

 
Alexey Kozitsyn:

Lesen Sie doch einmal die Dokumentation. Das Lehrbuch ist an einigen Stellen veraltet. Die Dokumentation wird Ihnen dabei helfen. Was die Aufgaben betrifft - lösen Sie die gleichen Aufgaben wie im Lehrbuch beschrieben. Lesen Sie das Problem, sehen Sie sich die Lösung an und wiederholen Sie sie. Und so weiter, bis Sie den Dreh raus haben. Es ist besser, die Aufgaben so nah wie möglich an den Aufgaben zu wählen, die Sie selbst ausführen möchten.

Alles natürlich nur IMHO.

Ich danke Ihnen!

 
trader781:

Ok, wollen Sie erklären, warum solche Objekte nicht differenziert werden?

Wenn Sie den Objekttyp ändern, werden die Eigenschaften mit 2 Beschriftungen oder Trendlinien ausgeblendet

R Welche Objekte werden nicht unterschieden? und was meinen Sie damit, dass die Eigenschaften zusammenbrechen, wenn Sie den Objekttyp ändern?