Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 1132
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
Irgendwo in der Hilfe sagen die Entwickler, dass keine Sortierung garantiert ist.
Es gibt immer eine Bestellung auf dem Ticket. Das Ticket einer späteren Bestellung wird niemals kleiner sein als das einer früheren Bestellung (zum Zeitpunkt der Eröffnung).
Und wenn wir unter den ausstehenden Aufträgen suchen, dann einfach der Reihe nach - der Auftrag mit der Nummer 0 - ist der älteste Auftrag, und der Auftrag mit der Nummer OrdersTotal()-1 ist der jüngste Auftrag (wieder nach der Öffnungszeit), ohne Berücksichtigung des Typs.
Bei der Historie der abgeschlossenen Aufträge kommt es immer noch auf die Sortierung in der Registerkarte Historie des Terminalfensters an.
Ich musste es nachschlagen. Ich habe es nicht in der MQL5-Referenz gefunden, aber ich habe es in der OrderSelect-Referenz für MQL4 gefunden:
"Wenn Sie den Parameter SELECT_BY_POS verwenden, werden die Informationen in der Reihenfolge zurückgegeben, in der sie vom Handelsserver empfangen wurden. Die Sortierung der eingegangenen Auftragsliste ist nicht gewährleistet."
Ich überprüfe systematisch, ob die von mir verwendeten Listen nach Ticketnummern sortiert sind. Es wurden keine Fälle bekannt, in denen sie fehlte. Aber man kann auch nicht mit der Referenz argumentieren, es gibt kein Argument. Das ist auch gut so, das ist auch gut so...
Ich musste es nachschlagen. Ich habe es nicht in der MQL5-Referenz gefunden, aber ich habe es in der OrderSelect-Referenz für MQL4 gefunden:
"Wenn Sie den Parameter SELECT_BY_POS verwenden, werden die Informationen in der Reihenfolge zurückgegeben, in der sie vom Handelsserver empfangen wurden. Die Sortierung der eingegangenen Auftragsliste ist nicht gewährleistet."
Ich überprüfe systematisch, ob die von mir verwendeten Listen nach Ticketnummern sortiert sind. Es wurden keine Fälle bekannt, in denen sie fehlte. Aber man kann auch nicht mit der Referenz argumentieren, es gibt kein Argument. Das ist auch gut so, das ist auch gut so...
Was meinen Sie mit "nicht sortieren"? Sortieren nach Ticket - es wird immer eine Reihenfolge geben und es gibt keinen Widerspruch zur Dokumentation, sie sagt über die Sortierung nach Ticketnummer, nicht nach Ticket, das sind unterschiedliche Dinge.
Führen Sie diesen Code aus, und lesen Sie das Protokoll
void OnTick()
{
//--
if(flag)
{
for(int i=0; i<OrdersTotal(); i++)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
Print(i," = ",OrderOpenTime());
}
}
flag=false;
}
//-
}
Ein weiteres Problem, auf das ich gestoßen bin! Urteilen Sie nicht, ich lerne die Sprache seit 2-3 Wochen, vielleicht bin ich einfach nur dumm!
Die Aufgabe des Expert Advisors ist es, den Händler alle 4 Stunden per E-Mail zu benachrichtigen, wenn die freie Marge auf dem Konto einen bestimmten Wert erreicht hat.
In der Betreffzeile der Nachricht müssen Sie den Namen des Brokers und das gehandelte Paar angeben, und im Text der Nachricht "Danger! Die Inanspruchnahme liegt über dem Grenzwert. Ergreifen Sie die erforderlichen Maßnahmen".
Der Compiler funktioniert nicht, ich bin nicht gut in Englisch und ich kann nicht herausfinden, was der Fehler ist!
double Sag;
void OnTick()
{
Sag = NormalizeDouble(100-100*(AccountInfoDouble(ACCOUNT_FREEMARGIN)/AccountInfoDouble(ACCOUNT_BALANCE)), 1); //находим процент просадки и округляем до 1 знака
if(Sag > MessageMail && iVolume(NULL,PERIOD_H4,0)<3) //если просадка больше заданного и начата новая свеча на 4ч таймфрейме
{
Alert(Symbol(), ": Просадка = ", Sag, " % ", " > ", MessageMail, " % "); //вывести предупреждение в терминале
//Сюда нужно вставить команду SendMail для отправки сообщения, а что и как не понятно
// пробовал bool SendMail( AccountInfoString(ACCOUNT_COMPANY)|Symbol, "Опасность! Просадка привысила допустимое значение. Примите необходимые меры")
//что то не выходит
}
}
PS: Vielleicht gibt es generell eine einfachere Lösung für diese Art von Problem, aber bisher sehe ich es nur auf diese Weise)
Ein weiteres Problem, auf das ich gestoßen bin! Verurteilen Sie mich nicht, ich lerne die Sprache seit 2-3 Wochen, vielleicht bin ich einfach nur dumm!
Die Aufgabe des Expert Advisors ist es, den Händler alle 4 Stunden per E-Mail zu benachrichtigen, wenn die freie Marge auf dem Konto einen bestimmten Wert erreicht hat.
In der Betreffzeile der Nachricht müssen Sie den Namen des Brokers und das gehandelte Paar angeben, und im Text der Nachricht "Danger! Die Inanspruchnahme liegt über dem Grenzwert. Ergreifen Sie die erforderlichen Maßnahmen".
Der Compiler funktioniert nicht richtig, ich bin nicht gut in Englisch und kann nicht verstehen, was der Fehler ist!
double Sag;
void OnTick()
{
Sag = NormalizeDouble(100-100*(AccountInfoDouble(ACCOUNT_FREEMARGIN)/AccountInfoDouble(ACCOUNT_BALANCE)), 1); //находим процент просадки и округляем до 1 знака
if(Sag > MessageMail && iVolume(NULL,PERIOD_H4,0)<3) //если просадка больше заданного и начата новая свеча на 4ч таймфрейме
{
Alert(Symbol(), ": Просадка = ", Sag, " % ", " > ", MessageMail, " % "); //вывести предупреждение в терминале
//Сюда нужно вставить команду SendMail для отправки сообщения, а что и как не понятно
// пробовал bool SendMail( AccountInfoString(ACCOUNT_COMPANY)|Symbol, "Опасность! Просадка привысила допустимое значение. Примите необходимые меры")
//что то не выходит
}
}
PS: Vielleicht gibt es generell eine einfachere Lösung für ein solches Problem, aber bisher sehe ich es nur auf diese Weise)
Ich weiß nicht, worum es sich handelt.
Was sind die Compilerfehler?
prıvet.podjalujte pojalusta pozwala why on demo schete ne mogu otkrıt zdelkı