|
Startseite | Registrieren | Hilfe | Benutzerliste | Kalender | Suchen | Heutige Beiträge | Alle Foren als gelesen markieren |
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
Error nach Anlauf des TP oder Sl
Hallo liebe Gemeinde,
ich habe vor etwa 4 Wochen mit dem Programmieren angefangen und bin nun auf ein Problem gestoßen bei dem ich einfach nicht weiter komme. Mein EA arbeitet soweit wie erwartet nur nach Anlauf des TP oder SL bekomme ich die im Code programmierte Fehlermeldung. Habe sie als Kommentar ersichtlich gemacht. ------------------------------------------------------------------ offeneorders = 0; anzahlorders = OrdersTotal(); for(zaehler=0;zaehler<anzahlorders;zaehler++) { OrderSelect(zaehler,SELECT_BY_POS,MODE_TRADES); if(OrderSymbol() == Symbol()) { if(OrderMagicNumber()==MagicNumber) { offeneorders++; } } } if (Signal_R == "Long" && anzahlorders <= Buy_Orders_Max -1) TicketOpen1 = OrderSend(Symbol(),OP_BUY,Lots,Ask,30,StopLossLeve l, TakeProfitLevel,"MagicNumber " + string(MagicNumber),Green); if (TicketOpen1<0) { // !!!!!!!!!!!!!!!!!!!! EA lief auf TP oder SL und gibt bei jedem neuem Tick folgenden Error !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Alert ("Error!" + Symbol()); } if (TicketOpen1 >= anzahlorders && anzahlorders <= Buy_Orders_Max -1) { Alert ("Order set # " + (string)MagicNumber + " " + Symbol()); } ------------------------------------------------------------------ Muss der zaehler nach ausgeführtem TP/SL --1 gesetzt werden? Eine weitere Frage am Rande: Wie man sehen kann habe ich Buy_Orders_Max definiert um zukünftig mehrere Strategien (z.B. Durchbruch, Bewegung und Trend) verfolgen zu können. Da mein EA nun so langsam gestalt annimmt und sich meine Gedanken weiter auf folgende Schritte vertiefen vermute ich dass die Bearbeitung mehrerer Orders kompliziert im Quadrat ist. Daher die Frage ob ein Aufbau mehrer EA´s für den Anfang sinvoller ist? Vielen Dank für Eure Hilfe! Beste Grüße aus Hamburg p.s. Ich sehe gerade das der Fehler auch nach manuellem schließen der Order aufkommt. Wenn ich das eben richtig beobachtet habe (ist ja schon recht spät) dann kam die Meldung eben mehrere Ticks auf und anschließend wurde eine neue Order eingegangen. Ist das möglich aufgrund des Codes? Das Signal ist sicher zu 100% dauerhaft Long. Geändert von Striker (30.10.14 um 02:08 Uhr) |
|
|||
Hier ein kleiner Beweis
Anbei ein Screenshot auf welchem das Problem ersichtlich ist.
Unüblich ist das tatsächlich nach jedem Error, abgesehen von dem Block unten, jedes Mal eine neue Order eingegangen wurde. Das ist mittlerweile wieder anders hehe |
|
|||
Zitat:
Code:
offeneorders = 0; anzahlorders = OrdersTotal(); for(zaehler=0;zaehler<anzahlorders;zaehler++) { OrderSelect(zaehler,SELECT_BY_POS,MODE_TRADES); if(OrderSymbol() == Symbol()) { if(OrderMagicNumber()==MagicNumber) { offeneorders++; } } } if (Signal_R == "Long" && anzahlorders <= Buy_Orders_Max -1) TicketOpen1 = OrderSend(Symbol(),OP_BUY,Lots,Ask,30,StopLossLeve l, TakeProfitLevel,"MagicNumber " + string(MagicNumber),Green); if (TicketOpen1<0) { // !!!!!!!!!!!!!!!!!!!! EA lief auf TP oder SL und gibt bei jedem neuem Tick folgenden Error !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Alert ("Error!" + Symbol(),"TicketOpen1 =",TicketOpen1); } if (TicketOpen1 >= anzahlorders && anzahlorders <= Buy_Orders_Max -1) { Alert ("Order set # " + (string)MagicNumber + " " + Symbol(),"TicketOpen1 =",TicketOpen1); } falsche Logik |
|
|||
Oh und Danke
stelle auch gerade fest dass der EA wohl nur in dem Währungspaar von gestern funktioniert hat. heute klappt fast nichts. bekomme z.B. die Meldung das eine Order geöffnet wurde aber ätsch abgesehen von der Meldung nichts..
bin auch gerade am tüfteln und werde deine Info gleich mal einbauen. |
|
|||
Mal ein Tip für die Zukunft: Wenn Du willst, dass Dir schnell geholfen wird,
dann sollte die Fehlerbeschreibung kurz und eineindeutig beschrieben werden. Richtig, wenn es geht mit Code oder dem wichtigsten Auszug daraus und v.a. Fehlermeldungen jede Art. traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Ticket im Alert vergleichen?
Danke für deinen Tipp aber welchen nutzen habe ich wenn ich das Ticket in den Alerts vergleiche?
|
|
|||
Da wird nichts von der Logik her verglichen, sondern die Ticketnummer, die sich hinter der Variablen TicketOpen1 verbirgt in der Alertmeldung ausgegeben.
Ein Verleich müßte mit dem Operator == geschrieben werden. D.h. @pako hat Dir das Codepuzzle an die Hand gegeben, eben diese Ticketnummer im Alert zu sehen. Das ist eine wesentliche Methode der Fehlersuche, an bestimmten Stellen des Codes Alert(...) oder Print(...) einzubauen und damit dem Verlauf des Programms zu kontrollieren. traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
Lesezeichen |
Stichworte |
error, error sl, error tp, fehler, fehler sl, fehler tp, sl / tp, stoploss, takeprofit, zähler |
Themen-Optionen | Thema durchsuchen |
Ansicht | |
|
|