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
Noch einmal. OrderSelect muss bei der Arbeit mit einem Auftrag an erster Stelle stehen. Dann alles andere.
Danke für die Antwort ... Meinen Sie, dass die Zeile if(OrderSelect(i=0;i<accTotal;i++)==true) nicht korrekt geschrieben ist oder an der falschen Stelle im Code? ...
Renat Akhtyamov:
по ссылке пройдите, она у Вас в посте выделена.
Ich habe es mir bereits angeschaut. Es hat nicht die notwendigen Informationen. 10-stelliger Wert im leeren Puffer und Preiswert, wenn es ein Signal gibt... Wie zeigt der mql4-Code an, ob ein Wert im Puffer vorhanden ist oder nicht? (Ich habe es mehr als einmal benutzt, aber vergessen ...)
if( iCustom(NULL,t, "T...c",1,b) != .......).....
atik441:уже смотрел. нет там нужной информации .в пустом буфере 10и значное значение а при наличии сигнала - значение цены... и как в коде mql4 обозначается отсутствие или наличие значения в буфере ? (пользовался не раз ,да забыл ...)
if( iCustom(NULL,t, "T...c",1,b) != EMPTY_VALUE).....Was wir brauchen... Danke für die Erinnerung!
Hilfe zum Verständnis. Ist es möglich, Aufträge sequentiell auszuführen, wenn zwei unterschiedlich gerichtete
offene Trades löst zunächst den TP eines der Trades aus, und dann nur SL, obwohl im Laufe des Handels das SL-Niveau
Wurde einer der Berufe zuerst verabschiedet?
Hilfe zum Verständnis. Ist es möglich, Aufträge sequentiell auszuführen, wenn zwei unterschiedlich gerichtete
offene Trades löst zunächst TP eines der Trades aus, und dann nur SL, obwohl im Laufe des Handels das SL-Niveau
Wurde einer der Berufe zuerst verabschiedet?
Noch einmal. OrderSelect muss bei der Arbeit mit einem Auftrag an erster Stelle stehen. Und dann alles andere.
Wenn wir in einer Schleife der Auftragsbewertung arbeiten, dann ist die Reihenfolge der Aktionen
1. Prüfen if(OrderSelect())
2. Um zu prüfen, ob es sich um den richtigen Auftrag handelt, werden in der Regel das Symbol und die magische Zahl und dann der Typ geprüft if(OrderSymbol()==_Symbol && OrderMagicNumber()==Magic && OrderType()<2) - in diesem Fall werden nur Marktaufträge verarbeitet, die für das aktuelle Symbol und mit der angegebenen magischen Zahl erteilt wurden
Verarbeitung anderer Daten wie OrderComment(), OrderProfit(), etc.
Sie würde etwa so aussehen:
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) //если ордер выбран то работаем дальше, иначе смысла нет
{
if(OrderSymbol()==_Symbol && OrderMagicNumber()==Magic && OrderType()<2) //Если ордер тот, что нам нужен (эту проверку можно и опустить, если нужно обработать все ордера в истории)
{
if(StringFind(OrderComment(),"[tp]",0)>-1) //если найден признак закрытия профитом
Print("Order #",OrderTicket()," profit: ", OrderTakeProfit());
if(StringFind(OrderComment(),"[sl]",0)>-1) //если найден признак закрытия стоплосс
Print("Order #",OrderTicket()," loss: ", OrderTakeProfit());
}
}
}
Vielen Dank für Ihre Antwort ... Um also nach Aufträgen in der Handelshistorie zu suchen, verwenden wir die FunktionOrdersHistoryTotal, die, nachdem wir alles Unnötige verworfen haben, wie folgt aussieht
for(int i=OrdersHistoryTotal()-1; i>=0; i--) // - hier ist die Frage, was bedeutet "accTotal" in der Funktionsvorlage, die wir verworfen haben? und warum haben Sie "i--" und nicht "i++" wie in der Vorlagegenommen?
- Die zweite FunktionOrderComment gibt den Kommentar der ausgewählten Bestellung zurück, wenn diese durch die vorhergehende FunktionOrdersHistoryTotal ausgewählt wurde, und hat die Form
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) //- wobei "i", das ist "i>=0" aus der vorherigen Funktion, und "SELECT_BY_TICKET" wurde durch "SELECT_BY_POS" ersetztund "MODE_HISTORY" wurde hinzugefügt- warum?
- Die dritte Zeile ist die Definition, wir brauchen die notwendige Order nicht zu prüfen, da wir in dieser Historie nur durch TP und SL geschlossene Market Orders haben (wir könnten eine geschlossene Pending Order haben, aber das wird selten sein), alle anderen Orderparameter sind für uns nicht wichtig. Der einzige wichtige Punkt ist, dass die Anzahl der abgeschlossenen Aufträge in der Historie ständig zunimmt. Ist es möglich, dass unsere Neuberechnung eine bestimmte Anzahl der letzten Aufträge nimmt, zum Beispiel 5-10, und nicht alle?
- Die letzten vier Zeilen sind ziemlich klar, die einzige Frage ist die nach der PlaySound-Funktion, deren Code nach jeder"Print("..."- Zeile in derfolgenden Form eingefügt werden sollte:
bool PlaySound(
string // Dateiname
);
... Oder wird es auch irgendwie umgewandelt?
Lesen Sie über Schleifen, wie sie begrenzt sind und wie sie funktionieren, und ganz allgemein wäre es schön, ein Lehrbuch über C++ für Anfänger zu lesen, C++ ist MQL sehr ähnlich, der einzige Unterschied liegt in den Handelsfunktionen.
Und Sie sollten auch das MQL-Tutorial und die Hilfe im Compiler lesen. Die Artikel im Forum befinden sich am oberen Rand des Fensters mit blauem Hintergrund. Man kann nicht einfach den ganzen Kurs im Forum nacherzählen und erklären.
Lesen Sie über Schleifen, wie sie begrenzt sind und wie sie funktionieren, und ganz allgemein wäre es schön, ein Lehrbuch über C++ für Anfänger zu lesen, C++ ist MQL sehr ähnlich, der einzige Unterschied liegt in den Handelsfunktionen.
Und Sie sollten auch das MQL-Tutorial und die Hilfe im Compiler lesen. Die Artikel im Forum befinden sich am oberen Rand des Fensters mit blauem Hintergrund. Man kann nicht einfach den ganzen Kurs im Forum nacherzählen und erklären.