Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   E-Mail bei geschlossenem Trade (http://www.expert-advisor.com/forum/showthread.php?t=3420)

pako 20.01.14 17:08

Zitat:

Zitat von traderdoc (Beitrag 24753)
@pako
if(OrderClose(param)) SendMail("","");

Das würde nur funktionieren, wenn die Order per EA geschlossen wird.
Und was wird mit den Orders, die per ordergebundenen TP und/oder SL geschlossen wurden?

traderdoc

stimmt, keine email

Hoschie 23.01.14 18:44

Zitat:

Zitat von traderdoc (Beitrag 24753)
Na ja, weil Deine Methode eben nicht zum Ziel führt. Immer, wenn keine Order offen ist (wobei ich das !count für eine bool-Variable mal einfach so stehen lasse), wird eine Mail gesendet. Meinst Du etwa im Ernst, dass das sein Anliegen wäre? Ich glaube nicht.
Und deshalb muß nach der Orderöffnung die Ticketnummer gespeichert werden und dann in der Abfrage der Orderhistory!!! nach dieser Ticketnummer gesucht werden. Und nur wenn die Order geschlossen wurde, kann sie auch über die Orderhistory wieder identifiziert werden und zwar als geschlossene Order!
Dann wird die e-Mail gesendet und TN = 0 gesetzt, damit beim nächsten Tick die e-Mail nicht wieder gesendet wird.

So, das sollte nun aber ganz klar sein.

@pako
if(OrderClose(param)) SendMail("","");

Das würde nur funktionieren, wenn die Order per EA geschlossen wird.
Und was wird mit den Orders, die per ordergebundenen TP und/oder SL geschlossen wurden?

traderdoc

Lieber Trader Doktor,

Bei mir ist das doch nicht anders.
Beim Eröffnen der Order merke ich mir entweder die TicketNr. oder setze eine BooleanVariable bOpenOrder = true ( von false auf true).

Dann sieht das ganze vollständig so aus:

PHP-Code:


if(bOpenOrders // oder TN > 0 
  
checkOpenOrders();

void checkOpenOrders()
      {
      
int count=0;
          for(
int pos OrdersTotal()-1pos >= pos--) if (
              
OrderSelect(posSELECT_BY_POS)                 
          &&  
OrderMagicNumber()  == MAGICNUMBER          
          
&&  OrderSymbol()       == Symbol() )
          {
              
count++;     
          }
      if ( !
count)
         { 
        
// SendMail();
         
bOpenOrders false// oder TN = 0
        
         
}        
      } 

//innerhalb der checkOpenOrders(), wenn die Order geschlossen wurde wenn !count .. wird die bOpenOrders wieder auf false gesetzt oder die TN auf 0, und das Spiel geht von vorne los.




Ich meine das ernst, wenn ich mir die Frage des Users lese.
"ich verwende einen EA, der nur sehr selten handelt. Gibt es eine Möglichkeit, mir eine E-Mail senden zu lassen bei einem geschlossenen Trade? Bin dankbar über jede Hilfe "



Diese Methode läuft in meinem EA und auch in meinem NinjaTrader Script und es wird wahrlich nur 1 Email versendet, wenn die Order geschlossen wurde.
Du kannst es gerne mal testen, und du wirst überrascht sein, dass geht wirklich :D

Entweder geht man die OrderHistorie durch, oder man prüft, ob die Order noch offen ist. Ich sehe wirklich keinen grossen Unterschied warum deine Lösung besser sein soll.

Merke: Viele Wege führen nach Rom

@Resümee
Es soll in diesem Forum nicht darum gehen, zu meinen, dass nur die eigene Lösung die universal Lösung ist, und alles andere nur Quatsch ist. Das wäre nur Absolutismus und sowas wäre nicht in dem Sinne des Erfinders dieses Forums.



Carpe Diem,
Hoschie

traderdoc 23.01.14 19:05

Tja, dann hättest Du mal lieber schon in Post# 10 den Code so schreiben sollen, wie jetzt. Denn damals fehlten die entscheidenden Zeilen!

Und komm mir jetzt nicht mit "den Rest hätte er sich denken müssen!"
Du bezeichnest doch auch kein Fahrzeug ohne Räder und Lenkrad als funktionierendes Auto! Nach der Devise "fährt doch, na ja Räder müssen selber angebaut werden und ein Lenkrad - ja gut, das braucht man auch noch!"

Laß mal gut sein und poste demnächst Lösungen, die auch jeder versteht und auch einbinden kann (also ich denke v.a. an die User, die eben nicht so firm sind im Programmieren.

traderdoc

Hoschie 24.01.14 19:11

Zitat:

Zitat von traderdoc (Beitrag 24768)
Tja, dann hättest Du mal lieber schon in Post# 10 den Code so schreiben sollen, wie jetzt. Denn damals fehlten die entscheidenden Zeilen!

Und komm mir jetzt nicht mit "den Rest hätte er sich denken müssen!"
Du bezeichnest doch auch kein Fahrzeug ohne Räder und Lenkrad als funktionierendes Auto! Nach der Devise "fährt doch, na ja Räder müssen selber angebaut werden und ein Lenkrad - ja gut, das braucht man auch noch!"

Laß mal gut sein und poste demnächst Lösungen, die auch jeder versteht und auch einbinden kann (also ich denke v.a. an die User, die eben nicht so firm sind im Programmieren.

traderdoc

Lieber Trader Doktor,

wenn jemand nicht firm ist im Programmieren, was bringt dein Code dann?
Das ist das dann wie böhmische Dörfer für einen Laien.
Ich muss hier auch keine fertige Lösung liefern, sondern lieber gebe ich Ratschläge und Hinweise. So lernt man Softwareentwicklung, und nicht in dem man fertige Lösungen liefert, die ein Laie nicht versteht. Oder siehst du das anders?

Carpe Diem,
Hoschie

traderdoc 24.01.14 19:46

Na dann, nochmals. Das war Dein Text, incl. Code in Post#10:

Zitat:

Zitat von Hoschie (Beitrag 24736)
Moin,
bei meinem eigenen EA verwende ich folgenden Code-Snippet und prüfe ob mein Trade( in diesem Fall immer nur einer) offen oder schon geschlossen ist:
Code:

void checkOpenOrders()
      {
      int count=0;
          for(int pos = OrdersTotal()-1; pos >= 0 ; pos--) if (
              OrderSelect(pos, SELECT_BY_POS)                // Nur meine Auftraege w/
          &&  OrderMagicNumber()  == MAGICNUMBER            // Meine Magic Nummer
          &&  OrderSymbol()      == Symbol())
          {// und mein Paar
              count++;
                 
          }
   
   
      if ( !count)
        { // Keine offene Order
      SendMail("","");
        }       
      }


@Hoschi: "wenn jemand nicht firm ist im Programmieren, was bringt dein Code dann?
Das ist das dann wie böhmische Dörfer für einen Laien.
Ich muss hier auch keine fertige Lösung liefern, sondern lieber gebe ich Ratschläge und Hinweise. So lernt man Softwareentwicklung, und nicht in dem man fertige Lösungen liefert, die ein Laie nicht versteht. Oder siehst du das anders?"

Natürlich sehe ich das anders! Denn auch meine Lösung war keine Fertige im Sinne des sofortigen Kopierens des Codes in den Code des Users. Aber ich habe ihm wenigstens detailliert die unbedingten!! Schritte dazugeliefert, die es ihm ermöglichen würden, den Code so zu implementieren, dass er auch zum Ziel führt. Dabei habe ich nicht geschrieben, dass der User gar keine Programmierkenntnisse braucht. "Nicht so firm" bedeutet, dass er eben auf die Lösung nicht selbst gekommen wäre, weil ihm z.B. die Erfahrung im Programmieren noch fehlt.
Aber mit Deiner Lösung, so wie sie in Post#10 vorlag, wäre er nicht in der Lage gewesen, sein Ziel zu realisieren, wie auch. Denn die entscheidenden Zeilen fehlten. Und hätte er den Code wie oben so in sein Programm übernommen, wäre nur Murks rausgekommen, nämlich ein permanentes Senden einer Mail, sobald kein Trade offen ist. Und ich wiederhole gern noch einmal Deine Meinung dazu!:

"bei meinem eigenen EA verwende ich folgenden Code-Snippet und prüfe ob mein Trade( in diesem Fall immer nur einer) offen oder schon geschlossen ist:"

Und das Snippet soll nun bei dem User (ohne der bedeutenden Zusatzinfo!!) funktionieren? Never!
Ok, Du hattest es später selbst eingesehen und dann nach meinem Einwand auch die entscheidenden Zeilen eingefügt, so dass wir es doch nun dabei belassen können.
Er hat die Lösung und wir ein schönes Wochenende.

traderdoc

jacky 25.01.14 23:34

Hab inzwischen gefunden, was ich gesucht habe bzw. mir noch etwas selbst beholfen, dank eurer Beiträge. Falls nochmal jemand danach sucht, kann ich gern behilflich sein ;)


Alle Zeitangaben in WEZ +2. Es ist jetzt 06:51 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum