Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1269
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
Alexej, danke! Jetzt ist klar, dass das nicht möglich ist.
Es stimmt, ich habe nicht genau mql4. Ich versuche, Daten über die Klasse CiOpen zu ändern. Ich bin verwirrt durch die Update-Methode, die das Element an einer bestimmten Position des Arrays ändern sollte.
Kopieren Sie in Ihre Variablen/Arrays und arbeiten Sie bereits mit ihnen.
Das habe ich getan.
Ich bin Ihnen sehr dankbar für Ihre Hilfe! Ich bin ziemlich neu im Programmieren.
Während des Studiums hatte ich Schwierigkeiten bei der Implementierung des Codes. Es gibt einen Artikel https://www.mql5.com/ru/articles/3336 Ich kann nicht verstehen, wie der Vergleich durchgeführt wird
if(!CompareTiks(n_tiks[i], m_ticks[k]))
Ich vermute, dass "Template Data Collections" verwendet wird und es eine solche globale Methode"Compare" gibt.Aber die Artikelauflistung gibt nirgends an, wie ich dem Compiler verständlich machen kann, dass ich "Compare" aus "Data Template Collections" verwenden soll. Ich habe keine Beispiele für globale Methoden aus"Data Template Collections" gefunden.
Der folgende Eintrag in der globalen Methodenbeschreibung wird das Ergebnis nicht verändern
template<typename T>
int Compare(
T x, // erster Wert
T y // zweiter Wert
);
Das Ergebnis ist der folgende Code (oder besser gesagt, der Code hat mich)
#ifndef MyInclude
#define MyInclude
//template<typename T>
//interface ICollection
//#include <Generic\Interfaces\ICollection.mqh>
template<typename T>
int Compare(
T x, // erster Wert
T y // zweiter Wert
);
class CMarketBook
{
private:
string m_symbol;
MqlTick m_ticks[];
MqlTick LastTicks[];
geschützt:
public:
void CMarketBook::CompareTicks(void);
};
//+------------------------------------------------------------------+
//|Vergleiche zwei Tick-Sammlungen und finde neue Ticks |
//+------------------------------------------------------------------+
void CMarketBook::CompareTicks(void)
{
MqlTick n_ticks[];
ulong T_begin = (TimeCurrent()-(1*20))*1000;//20sec ago
m_symbol = Symbol();
int Total = CopyTicks(m_symbol, n_ticks, COPY_TICKS_ALL, T_begin, 1000);
if (Total < 1) {printf("Failed to get ticks"); return;}
if (ArraySize(m_ticks) == 0) {ArrayCopy(m_ticks, n_ticks, 0, 0, WHOLE_ARRAY); return;}
int k = ArraySize(m_ticks)-1;
int n_t = 0;
int Limit_comp = 20;
int Comp_success = 0;
// Neue empfangene Ticks ausprobieren
for (int i = ArraySize(n_ticks)-1; i>=0 && k>=0; i--)
{
if (!Compare(n_ticks[i], m_ticks[k]))
{
n_t = ArraySize(n_ticks) - i;
k = ArraySize(m_ticks) - 1;
Comp_success = 0;
}
else
{
Comp_success += 1;
if (Comp_success >= Limit_comp) break;
k--;
};
};
//Empfangte Ticks speichern
ArrayResize(m_ticks, Total);
ArrayCopy(m_ticks, n_ticks, 0, 0, WHOLE_ARRAY);
//Startindex der neuen Ticks berechnen und in den Puffer für den Zugriff kopieren
ArrayResize(LastTicks, n_t);
if (n_t > 0)
{
int index = ArraySize(n_ticks) - n_t;
ArrayCopy(LastTicks, m_ticks, 0, index, n_t);
};
};
#endif
Beim Kompilieren wird ein Fehler generiert - "object is passed by reference only" in der Zeile if (!Compare(n_ticks[i], m_ticks[k])), die aufn_ticks[i] zeigt
Guten Tag zusammen.
Ich teste einen Alpari MT4 Expert Advisor. Bevor ich den Test durchführe, schlägt mir MT vor, die Spanne festzulegen (entweder den aktuellen Wert oder einen bestimmten Wert).
Bei Alpari ist der Spread fließend. Aus diesem Grund sind die oben genannten Einstellungen für die Streuungsgröße für mich nicht geeignet.
F. Welche Funktion zeigt in der Historie die Spread-Werte für jeden historischen Tick an?
Oder, wie sollte ich meine EA öffnen und schließen Aufträge unter Berücksichtigung der Spread-Werte gültig im Moment der Bestellung geöffnet oder geschlossen wird?
Ich danke Ihnen allen für Ihre Hilfe.
Guten Tag zusammen.
Ich teste einen Alpari MT4 Expert Advisor. Vor dem Testen schlägt mir MT vor, den Spread-Wert einzustellen (den aktuellen oder einen bestimmten Wert aus dem Angebot).
Bei Alpari ist der Spread fließend. Deshalb funktionieren die oben genannten Streuungswerte für mich nicht.
F. Welche Funktion zeigt in der Historie die Spread-Werte für jeden historischen Tick an?
Oder, wie sollten wir unsere EA öffnen und schließen Aufträge unter Berücksichtigung der Spread-Werte gültig zum Zeitpunkt der Eröffnung oder Schließung der Bestellung?
Ich danke Ihnen allen für Ihre Hilfe.
In MT4 ist das nicht möglich, aber in MT5 schon.
Nicht in MT 4, in MT 5 können Sie
Vielen Dank für die wertvollen Informationen.
Ich werde mit dem Studium von mql5 beginnen. Sie sagen, dass es dem mql4 sehr ähnlich ist. Ich wäre Ihnen sehr dankbar, wenn Sie mir sagen könnten, wie ich meine Idee in mql5 umsetzen kann.
Vielen Dank für die wertvollen Informationen.
Ich werde mit dem Studium von mql5 beginnen. Sie sagen, dass es dem mql4 sehr ähnlich ist. Ich wäre Ihnen sehr dankbar, wenn Sie mir sagen könnten, wie mql5 meine Idee umsetzt.
Bei mt5 brauchen Sie nichts zu erfinden.
Das ist cool. Vielen Dank für die wertvollen Informationen.
Wenn Sie schnell von mql4 zu mql5 wechseln wollen , sollten Sie die Handbücher für mql4 und mql5 gleichzeitig lesen und auf die Unterschiede achten. Alles wird durch Vergleich gelernt.....Guten Tag an alle!
Ich habe mit dem Studium von mql5 begonnen. Zunächst habe ich untersucht, wie Aufträge eröffnet werden. Ich habe es so verstanden, dass der Code zum Öffnen einer Bestellung in einer separaten Include-Datei geschrieben wird. Ich habe jetzt diesen Code und seine endgültige Variante für den Handel gemeistert. Ich war erstaunt, dass die Auftragseröffnung in mql4 viel einfacher und übersichtlicher ist als in mql5.
Ich möchte fragen, ob ich sicher bin, dass ich die Datei mit dem Code zum Öffnen der Bestellung bereits habe und diesen Code nicht schreiben muss. Wenn eine solche Datei irgendwo verfügbar ist, dann muss ich sie nur mit meinem EA verbinden und die Werte der benötigten Auftragsparameter festlegen? Wenn es eine solche Datei gibt, wo und wie sie zu finden ist und wie ihr Name lautet.
Ich kann Ihnen gerne den Namen der Datei nennen.