Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 113
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
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.
"möglicher Datenverlust durch Typkonvertierung"
Wie kann ich diese Warnung umgehen?
Compilerwarnung:
"möglicher Datenverlust durch Typkonvertierung"
Wie kann ich diese Warnung umgehen?
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
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, der Compiler gab einen Fehler aus: ExtMapBuffer' - nicht deklarierter Bezeichner
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 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.
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
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!
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