ordersend()-Codierung helfen... - Seite 3

 
mugged:

Raptor, wenn es Ihnen nichts ausmacht... wie haben Sie geplant, die Konnektivität über php zu überprüfen?

Was ich im Sinn hatte, war dies:

Der EA sendet eine kleine Datei über FTP alle 2 Minuten (könnte 5 Minuten, 30 Minuten, was auch immer Ihre Toleranz ist ... * ) zu meinem gehosteten Webserver, läuft auf diesem Webserver wird ein Cron-Job, der für die Datei über FTP empfangen sucht und prüft, ob es in den letzten 2 Minuten aktualisiert wurde * wenn es nicht hat, sendet es mir eine Warn-E-Mail.

 
SDC:
Ich habe es immer so gemacht, weil es in den Beispielen im MQL4-Buch so gemacht wird, aber jetzt denke ich, dass das nicht korrekt aussieht, denn wenn Sie auf dem Ask-Kurs eröffnen, möchten Sie sicherlich den Gewinn zu diesem Kurs + Ihren TP-Betrag mitnehmen, und Sie möchten zu diesem Kurs - Ihrem SL-Betrag aussteigen?

Wenn Sie beim Preis-x aufhören wollen. Was bedeutet das? Wollen Sie stoppen, wenn der Geldkurs Kurs-x erreicht (oder wenn der Briefkurs ihn erreicht).

Wenn Sie einen SL von 3 Pips bei einem Kauf wollen und Ask verwenden - 3*pips2dbl. In dem Moment, in dem Sie eröffnen, sind Sie 1 Pip entfernt (unter der Annahme eines Spreads von 2 Pips.) Das hängt wiederum von Ihrer Definition ab.

Wenn Sie meinen, dass der Geldkurs Kurs-x erreicht, wäre Ihr SL bei einem Kauf Kurs-x. Bei einem Verkauf wollen Sie immer noch bei Preis-x stoppen, aber der Auslösepreis muss relativ zum Ask sein: Preis-x+Spread.

Was tun Sie, wenn sich der Spread ändert? Bei einem Sell bedeutet das, dass Sie TP/SL ändern müssen, um auf derselben Position (einem Bid) zu schließen. Hängt von Ihrer Definition ab.

Ich führe ALLE Berechnungen relativ zum Bid durch und passe sie am Ende an.

//want to open at P
if (OP == OP_BUY)  double bid.to.open = Ask-Bid, bid.to.stop = 0,       DIR=+1.;
else                      bid.to.open = 0;       bid.to.stop = Ask-Bid; DIR=-1.;
:
if ((Bid - P) *DIR >= 0.){ // Time to open
  double openPrice = Bid + bid.to.open,
  OrderSend(NULL, OP, v, Bid+bid.to.open...)
 
WHRoeder:

Mein Ansatz ist es, einfach den Fehler zu melden und zurückzukehren.

Meine Sorge ist, dass ich einen offenen Auftrag mit SL & TP = 0 habe und mein EA keine Verbindung zum Internet hat ... . Ich würde lieber vor dieser Möglichkeit gewarnt werden, auch wenn mein EA auf einem VPS oder meinem eigenen kolokierten Server läuft.
 

Dem stimme ich nicht zu, aber ich habe gesagt: "Melden Sie den Fehler."

Mit isConnected()==false kann der EA nichts anderes tun, als zu warten.

Mit ERR_TRADE_TIMEOUT kann der EA nichts anderes tun als warten und dann sehen.

Am einfachsten ist es, vom Start zurückzukehren, auf den nächsten Tick zu warten und sich dann zu erholen.

 
WHRoeder:
Es gibt einfach nichts, was der EA mit isConnected()==false oder ERR_TRADE_TIMEOUT tun kann, außer auf den nächsten Tick zu warten und dann zu sehen.
Sicher, ich wollte nur sicherstellen, dass Sie verstanden haben, worauf ich hinaus wollte. Irgendwann möchte ich einen Watchdog haben, der mir sagt, dass etwas nicht stimmt ... daher die Idee mit dem Cronjob und PHP.
 
mugged:

Raptor, wenn es Ihnen nichts ausmacht... wie haben Sie geplant, die Konnektivität über php zu überprüfen?

Vielleicht so etwas wie das hier...

<?php
$to = "recipient@example.com";
$subject = "EA is silent";
$body = "EA has stopped responding . . . ";

$file = 'somefile.txt';
$filetime = filemtime($file);
$timetwomins = time()-120; // two mins ago

if ($filetime < $timetwomins) {
   mail($to, $subject, $body)
}
?>
 

Ich denke, ich werde eine E-Mail-Benachrichtigung erhalten, kurz bevor der Auftrag ausgelöst wird, und dann eine weitere, die bestätigt, dass der Stopp geändert wurde.

Wenn ich also die erste E-Mail erhalte und die entsprechende Änderungs-E-Mail nicht ankommt, dann weiß ich, dass es Probleme gibt.

 
mugged:

Ich denke, ich werde eine E-Mail-Benachrichtigung erhalten, kurz bevor der Auftrag ausgelöst wird, und dann eine weitere, die bestätigt, dass der Stopp geändert wurde.

Wenn ich also die erste E-Mail erhalte und die entsprechende Änderungs-E-Mail nicht ankommt, dann weiß ich, dass es Probleme gibt.

Ich denke, ich werde eine E-Mail senden , nachdem der Auftrag ausgelöst wurde, und eine weitere, die bestätigt, dass der Stopp geändert wurde.
 
qjol:
Ich denke, Sie sollten eine E-Mail senden , nachdem der Auftrag ausgelöst wurde, und eine weitere, die bestätigt, dass der Stopp geändert wurde.

Meine einzige Sorge mit dem Senden der E-Mail nach ist, was, wenn die Bestellung auslöst und dann Ihre Verbindung stirbt, bevor die E-Mail gesendet werden kann...

Die andere Möglichkeit ist, dass Sie in der ersten Mail darüber informiert werden, dass etwas ausgelöst wird, und in der zweiten Mail die Änderung des Stopps bestätigen.

 
RaptorUK:

Vielleicht so etwas wie das hier...


Raptor, diese Idee gefällt mir. Ich habe in der Vergangenheit darüber nachgedacht, hatte aber keine Ahnung, wie ich es anstellen sollte.

Was ich im Moment habe, ist nur der EA, der jede Stunde eine E-Mail sendet, um zu bestätigen, dass er läuft und funktioniert. Ich bräuchte nur einen Weg, um zu überprüfen, ob diese E-Mail ankommt, und wenn sie nicht ankommt, eine Warnung zu senden. Gleiche Idee anderer Ansatz ich denke.