[Archiv!] Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Könnte nirgendwo ohne dich hingehen - 2. - Seite 176

 
eddy:
Wie definieren Sie die letzte Bestellung? Durch die Zeit. Schauen Sie in den Code, um zu sehen, welche Bestellung die letzte nach Zeit ist


Ich habe es bereits selbst herausgefunden. Aber Ihren letzten Tipp verstehe ich immer noch nicht. Ist es möglich, alle Aufträge abzurufen und zu sehen, welcher Auftrag der letzte war? Sie möchten also alle Aufträge abrufen und die Abschlusszeiten aller Aufträge vergleichen? Zeigen Sie mir den Code, wie man das macht.

Ich habe das Problem auf diese Weise gelöst:

int z;
int _bar;

int start()

{

z=OrdersHistoryTotal()-1;
OrderSelect(z,SELECT_BY_POS,MODE_HISTORY);
if(TimeCurrent() - OrderCloseTime() > 1& TimeCurrent() - OrderCloseTime() < 7)
{
if(OrderProfit()> 0)
PlaySound("profit.wav");
if(OrderProfit()== 0)
PlaySound("zero.wav");
if(OrderProfit()< 0)
PlaySound("loss.wav");
}

Es stellt sich heraus, dass, wenn 1 für z ersetzt wird, die früheste Bestellung ausgewählt wird, die logischerweise die neueste ist, also nahm ich OrdersHistoryTotal() (es gibt die Anzahl der Bestellungen in der Geschichte zurück) und ersetzte es anstelle des Index. Es stellt sich jedoch heraus, dass OrdersHistoryTotal() 1 mehr zurückgibt, als es tatsächlich ist. Mein Verlauf hatte 6 Bestellungen, aber OrdersHistoryTotal() gibt 7 Bestellungen zurück. Daher schrieb ich z=OrdersHistoryTotal()-1;. Aber ich wusste vorher nicht, was ich im Index verwenden sollte, um den letzten Eintrag auszuwählen. Ich musste es selbst herausfinden, weil mir niemand etwas gesagt hat.

 
Reaktiv:

if(TimeCurrent() - OrderCloseTime() > 1& TimeCurrent() - OrderCloseTime() < 7)

Dies ist grundlegend falsch und wird auch im Testprogramm nicht immer funktionieren.
 
sergeev:
ist grundlegend falsch und wird auch in einem Testgerät nicht immer funktionieren.

Zeigen Sie mir also bitte, wie man es richtig macht. Wissen Sie, im Lehrbuch gibt es viele Beispiele, die es nicht gibt.
 
Reaktiv:

Zeigen Sie mir also bitte, wie man es richtig macht, denn Sie wissen, dass das Lehrbuch nicht viele Beispiele enthält.

Jede Lösung hängt von den gesetzten Zielen ab.

Wenn Sie den letzten Auftrag in der Historie finden wollen, ist das eine Sache, aber wenn Sie feststellen wollen, wie der letzte Auftrag Ihres EA geschlossen wurde, ist das eine andere Sache.

 
sergeev:

Jede Lösung hängt von den Zielen ab, die Sie sich setzen.

Wenn Sie den letzten Auftrag in der Historie finden wollen, ist das eine Sache, aber wenn Sie nur angeben wollen, wie der letzte Auftrag Ihres EA geschlossen wurde, ist das etwas anderes.


Ich möchte, dass die Musik spielt, nachdem der Auftrag abgeschlossen ist, und je nachdem, wie hoch der Gewinn ist, wird die Musik abgespielt. In meinem Beispiel wollte ich, dass es abgespielt wird, wenn seit dem Abschluss der Bestellung 1 bis 7 Sekunden vergangen sind.
 

dann sollte das Schema wie folgt aussehen

1. Zum Zeitpunkt eines erfolgreichen OrderSend müssen Sie sich das Orderticket(GlobalVariableSet) merken

2. Prüfen Sie bei jedem Tick das Ticket dieses erinnerten Auftrags(GlobalVariableGet) auf Schließung(OrderCloseTime)

Wenn der Auftrag geschlossen ist, dann geben Sie einen entsprechenden Ton für den Gewinn und löschen das gespeicherte Ticket(GlobalVariableDel)

4. Wenn Sie dennoch 1-7 Sekunden lang prüfen wollen, können Sie diese Prüfung in die Analyse einbeziehen, aber Sie müssen bedenken, dass die Ticks mit einer Verzögerung von 10 Sekunden oder mehr kommen können und Sie das Signal verpassen werden.

 
sergeev:

dann sollte das Schema folgendermaßen aussehen

1. Zum Zeitpunkt eines erfolgreichen OrderSend müssen Sie sich das Orderticket(GlobalVariableSet) merken

2. Überprüfen Sie bei jedem Tick das Ticket dieser erinnerten Order(GlobalVariableGet) auf Schließung(OrderCloseTime)

Wenn der Auftrag geschlossen ist, dann geben Sie einen entsprechenden Ton für den Gewinn und löschen das gespeicherte Ticket(GlobalVariableDel)

4. Wenn Sie dennoch 1-7 Sekunden lang prüfen wollen, können Sie diese Prüfung in die Analyse einbeziehen, aber vergessen Sie nicht, dass die Ticks mit einer Verzögerung von 10 Sekunden oder mehr kommen können und Sie das Signal verpassen.



Sollte der OrderSend also vom EA gesendet werden oder macht es keinen Unterschied? Das System basiert auf der Tatsache, dass ich selbst manuell Geschäfte eröffne. Der Expert Advisor ändert die Order, nachdem sie eröffnet wurde (setzt Stops) und spielt Musik, wenn er eine Position schließt. Was die Tatsache betrifft, dass die Ticks 10 Sekunden verzögert sein können, so verstehe ich das. Ich werde EA zu diesem Zeitpunkt nicht verwenden. Ich verwende meinen EA auf EUROBAX von 9 Uhr morgens bis 18 Uhr abends, wo eine solche Verzögerung unwahrscheinlich ist.
 
Reaktiv:

Und der Advisor selbst ändert die Order (setzt Stopps), wenn der Handel eröffnet wird

In Ihrem Fall wird dieser Punkt der Punkt sein, an dem der Bestellschein genommen wird.
 
sergeev:
dann ist dies in Ihrem Fall der Punkt, an dem der Bestellschein gezogen wird.

danke
 
Reaktiv:
Ich wollte, dass die Musik gespielt wird, wenn 1 bis 7 Sekunden seit dem Abschluss der Bestellung vergangen sind.
Warum? Sie können einfach Musik abspielen, wenn der Auftrag abgeschlossen ist.
Grund der Beschwerde: