Das ist vom Gehalt her wie eine sehr interessante Vorlesung. Ich werde auf jeden Fall die ganze Serie mitmachen.
Leider kommt es vielleicht sogar mit Absicht zu kleinen Fehlern - der Inhalt ist sehr komplex und vielleicht soll man am Ball bleiben.
Und zwar wird in der "
CMarketCollection::Refresh
" das Feld total_market nicht gefunden - sowas passierte schon vorher bei ORDER_STATUS_MARKET. Die Umstellungen von leicht-zu-komplex ist nunmal sehr beeindruckend.
An der Refresh-Stelle ging es bei mir nicht mehr weiter, da auch das nächste Objekt nicht auf Anhieb laufen wollte. Da habe ich dann gerne den Download genommen.
Seltsam, ich kann die einfachste Logik mit Ihren Methoden nicht erkennen...
Hier muss ich die Schlusszeit des letzten Handels abfragen. Es scheint, dass die Bibliothek einen Mechanismus für die Arbeit mit abstrakten Aufträgen a la MT4 hat, aber ich sehe keine Methoden für die Arbeit mit ihnen.
Ich fordere Deals an, aber ORDER_PROP_TIME_CLOSE wird nicht unterstützt:
bool last_trade_time_filter=true;
CArrayObj *all_trades=engine.GetListDeals();
if(all_trades!=NULL && all_trades.Total()>0)
{
CArrayObj *sym_all_trades=CSelect::ByOrderProperty(all_trades,ORDER_PROP_SYMBOL,Symbol(),EQUAL);
if(sym_all_trades!=NULL && sym_all_trades.Total()>0)
{
CArrayObj *sym_all_trades_recent=CSelect::ByOrderProperty(sym_all_trades,ORDER_PROP_TIME_CLOSE,iTime(NULL,PERIOD_CURRENT,1),EQUAL_OR_MORE);
if(sym_all_trades_recent.Total()>0)
{
// es kommt nicht hierher
last_trade_time_filter=false;
}
}
}
leonerd die Schlusszeit des letzten Handels abfragen. Es scheint, dass die Bibliothek einen Mechanismus für die Arbeit mit abstrakten Aufträgen a la MT4 hat, aber ich sehe keine Methoden für die Arbeit mit ihnen.
Ich fordere Deals an, aber ORDER_PROP_TIME_CLOSE wird nicht unterstützt:
Ok, es ist irgendwie nicht korrekt, die Schlusszeit für einen Trade abzufragen. Aber es funktioniert auch nicht mit GetListHistoryOrders()...
leonerd die Schlusszeit des letzten Handels abfragen. Es scheint, dass die Bibliothek einen Mechanismus für die Arbeit mit abstrakten Aufträgen a la MT4 hat, aber ich sehe keine Methoden für die Arbeit mit ihnen.
Ich fordere Deals an, aber ORDER_PROP_TIME_CLOSE wird nicht unterstützt:
//+------------------------------------------------------------------+//| Behandlung von Tastendrucken|//+------------------------------------------------------------------+void PressButtonEvents(conststring button_name)
(und dies ist nur ein Beispiel dafür, wie man Ereignisse behandelt und Daten abruft).
Dort gibt es Codeblöcke, die für das Schließen von Positionen zuständig sind. Sie können sehen, wie es dort implementiert ist. Zum Beispiel ein Codeblock zum Schließen eines Kaufs durch das aktuelle Symbol mit maximalem Gewinn:
//--- Wenn die Taste BUTT_CLOSE_BUY gedrückt wird: Kauf mit maximalem Gewinn schließenelseif(button==EnumToString(BUTT_CLOSE_BUY))
{
//--- Abrufen der Liste aller offenen Stellen
CArrayObj* list=engine.GetListMarketPosition();
//--- Wählen Sie aus der Liste nur Kaufpositionen und nur nach dem aktuellen Symbol
list=CSelect::ByOrderProperty(list,ORDER_PROP_SYMBOL,Symbol(),EQUAL);
list=CSelect::ByOrderProperty(list,ORDER_PROP_TYPE,POSITION_TYPE_BUY,EQUAL);
//--- Sortieren der Liste nach Gewinn unter Berücksichtigung von Provision und Swap
list.Sort(SORT_BY_ORDER_PROFIT_FULL);
//--- Ermittelt den Index der Kaufposition mit dem höchsten Gewinnint index=CSelect::FindOrderMax(list,ORDER_PROP_PROFIT_FULL);
if(index>WRONG_VALUE)
{
//--- Abrufen des Objekts "Kaufposition" und Schließen der Ticketposition
COrder* position=list.At(index);
if(position!=NULL)
{
//--- Wenn die Schaltflächen für die Erstellung eines schwebenden Antrags nicht gedrückt werden - schließen Sie die Positionif(!pressed_pending_close_buy)
engine.ClosePosition((ulong)position.Ticket());
//--- Andernfalls - Erstellen einer ausstehenden Anfrage zur Schließung einer Position für ein Ticket//--- und Bedingungen in Abhängigkeit von aktiven Schaltflächen festlegenelse
{
int id=engine.ClosePositionPending(position.Ticket());
if(id>0)
{
//--- den Preis und die Aktivierungszeit der anstehenden Anfrage festlegen und die Aktivierungsparameter einstellendouble bid=SymbolInfoDouble(NULL,SYMBOL_BID);
double price_activation=NormalizeDouble(bid+distance_pending_request*g_point,g_digits);
ulong time_activation=TimeCurrent()+bars_delay_pending_request*PeriodSeconds();
SetPReqCriterion((uchar)id,price_activation,time_activation,BUTT_CLOSE_BUY,EQUAL_OR_MORE,bid,TimeCurrent());
}
}
}
}
}
Über geschlossene Positionen - ich habe es vor langer Zeit gemacht, jetzt kann ich Ihnen nicht sagen, wie Sie auf einen Blick bekommen, was Sie brauchen. Ich werde es mir später ansehen und schreiben - ich bin im Moment sehr beschäftigt.
(und dies ist nur ein Beispiel für die Verarbeitung von Ereignissen und den Erhalt von Daten).
Dort gibt es Codeblöcke, die für das Schließen von Positionen zuständig sind. Sie können dort sehen, wie es implementiert ist. Zum Beispiel ein Codeblock zum Schließen eines Kaufs auf dem aktuellen Symbol mit maximalem Gewinn:
Über geschlossene Positionen - ich habe es vor langer Zeit gemacht, jetzt kann ich Ihnen nicht sagen, wie Sie auf einen Blick bekommen, was Sie brauchen. Ich werde es mir später ansehen und schreiben - ich bin im Moment sehr beschäftigt.
Danke, aber es ist nicht nötig, die Veranstaltung zu verfolgen.
ORDER_STATUS_MARKET_ORDER gibt Fehler: undeclared Bezeichner. sieht aus wie Dinge in den letzten Versionen für MQL 5 geändert, es zeigt sich sowohl in COrder::OrderMagicNumber und CMarketOrder Constructor!
theonementor # : ORDER_STATUS_MARKET_ORDER gibt Fehler: undeclared Bezeichner. sieht aus wie Dinge in den letzten Versionen für MQL 5 geändert, es zeigt sich sowohl in COrder::OrderMagicNumber und CMarketOrder Constructor!
Ich habe die MQL5.zip-Archivdatei heruntergeladen, die dem Artikel beigefügt ist - jede Datei einzeln und alle zusammen (beim Kompilieren von Engine.mqh oder TestDoEasyPart04.mq5) werden ohne Fehler kompiliert.
Was genau tun Sie, dass Sie einen Kompilierungsfehler erhalten?
Ich habe die MQL5.zip-Archivdatei heruntergeladen, die dem Artikel beigefügt ist - jede Datei einzeln und alle zusammen (beim Kompilieren von Engine.mqh oder TestDoEasyPart04.mq5) werden ohne Fehler kompiliert.
Was genau tun Sie, dass Sie einen Kompilierungsfehler erhalten?
Ich habe es herausgefunden, es fehlte ein Eintrag im define enum. irgendwie fehlte er (obwohl ich den Code aus dem Tutorial in den Editor kopiert habe)
theonementor # : Habe es herausgefunden, es fehlte ein Eintrag in der define enum. irgendwie fehlte er (obwohl ich den Code aus dem Tutorial in den Editor kopiert habe)
Die Codes im Artikel stimmen nicht immer mit den Codes in den angehängten Dateien überein. Manchmal übersehe ich etwas während der Beschreibung, und manchmal wird etwas nach dem Schreiben des Artikels hinzugefügt. Der Artikel ist keine Schritt-für-Schritt-Anleitung im "read-copy-use"-Stil, sondern nur eine detaillierte Erklärung in Form von Schulungsmaterial. Und kleine Fehler und Auslassungen regen zum Nachdenken an, und das ist gut so)
Das ist vom Gehalt her wie eine sehr interessante Vorlesung. Ich werde auf jeden Fall die ganze Serie mitmachen.
Leider kommt es vielleicht sogar mit Absicht zu kleinen Fehlern - der Inhalt ist sehr komplex und vielleicht soll man am Ball bleiben.
Und zwar wird in der "
" das Feld total_market nicht gefunden - sowas passierte schon vorher bei ORDER_STATUS_MARKET. Die Umstellungen von leicht-zu-komplex ist nunmal sehr beeindruckend.
An der Refresh-Stelle ging es bei mir nicht mehr weiter, da auch das nächste Objekt nicht auf Anhieb laufen wollte. Da habe ich dann gerne den Download genommen.
mfG
Marc Tolkmitt
Seltsam, ich kann die einfachste Logik mit Ihren Methoden nicht erkennen...
Hier muss ich die Schlusszeit des letzten Handels abfragen. Es scheint, dass die Bibliothek einen Mechanismus für die Arbeit mit abstrakten Aufträgen a la MT4 hat, aber ich sehe keine Methoden für die Arbeit mit ihnen.
Ich fordere Deals an, aber ORDER_PROP_TIME_CLOSE wird nicht unterstützt:
Ich fordere Deals an, aber ORDER_PROP_TIME_CLOSE wird nicht unterstützt:
Ok, es ist irgendwie nicht korrekt, die Schlusszeit für einen Trade abzufragen. Aber es funktioniert auch nicht mit GetListHistoryOrders()...
Ich fordere Deals an, aber ORDER_PROP_TIME_CLOSE wird nicht unterstützt:
Im Testexpert Advisor, im Button Press Handler.
(und dies ist nur ein Beispiel dafür, wie man Ereignisse behandelt und Daten abruft).
Dort gibt es Codeblöcke, die für das Schließen von Positionen zuständig sind. Sie können sehen, wie es dort implementiert ist. Zum Beispiel ein Codeblock zum Schließen eines Kaufs durch das aktuelle Symbol mit maximalem Gewinn:
Über geschlossene Positionen - ich habe es vor langer Zeit gemacht, jetzt kann ich Ihnen nicht sagen, wie Sie auf einen Blick bekommen, was Sie brauchen. Ich werde es mir später ansehen und schreiben - ich bin im Moment sehr beschäftigt.
Im Test-Expert Advisor, im Button Press Handler
(und dies ist nur ein Beispiel für die Verarbeitung von Ereignissen und den Erhalt von Daten).
Dort gibt es Codeblöcke, die für das Schließen von Positionen zuständig sind. Sie können dort sehen, wie es implementiert ist. Zum Beispiel ein Codeblock zum Schließen eines Kaufs auf dem aktuellen Symbol mit maximalem Gewinn:
Über geschlossene Positionen - ich habe es vor langer Zeit gemacht, jetzt kann ich Ihnen nicht sagen, wie Sie auf einen Blick bekommen, was Sie brauchen. Ich werde es mir später ansehen und schreiben - ich bin im Moment sehr beschäftigt.
Danke, aber es ist nicht nötig, die Veranstaltung zu verfolgen.
ORDER_STATUS_MARKET_ORDER gibt Fehler: undeclared Bezeichner. sieht aus wie Dinge in den letzten Versionen für MQL 5 geändert, es zeigt sich sowohl in COrder::OrderMagicNumber und CMarketOrder Constructor!
Ich habe die MQL5.zip-Archivdatei heruntergeladen, die dem Artikel beigefügt ist - jede Datei einzeln und alle zusammen (beim Kompilieren von Engine.mqh oder TestDoEasyPart04.mq5) werden ohne Fehler kompiliert.
Was genau tun Sie, dass Sie einen Kompilierungsfehler erhalten?
Ich habe die MQL5.zip-Archivdatei heruntergeladen, die dem Artikel beigefügt ist - jede Datei einzeln und alle zusammen (beim Kompilieren von Engine.mqh oder TestDoEasyPart04.mq5) werden ohne Fehler kompiliert.
Was genau tun Sie, dass Sie einen Kompilierungsfehler erhalten?
Habe es herausgefunden, es fehlte ein Eintrag in der define enum. irgendwie fehlte er (obwohl ich den Code aus dem Tutorial in den Editor kopiert habe)
Die Codes im Artikel stimmen nicht immer mit den Codes in den angehängten Dateien überein. Manchmal übersehe ich etwas während der Beschreibung, und manchmal wird etwas nach dem Schreiben des Artikels hinzugefügt. Der Artikel ist keine Schritt-für-Schritt-Anleitung im "read-copy-use"-Stil, sondern nur eine detaillierte Erklärung in Form von Schulungsmaterial. Und kleine Fehler und Auslassungen regen zum Nachdenken an, und das ist gut so)