Sie müssen nicht OrderSelect 4 OrderClose verwenden, aber Sie haben 2 für OrderTicket(), OrderLots()
Lieber qjol,
Ich verstehe nicht ganz, was Sie meinen, könnten Sie bitte erklären. Ich danke Ihnen
in Ihrem Code
if (bar3>1) OrderClose(OrderTicket(), OrderLots(),Ask,3,Red);
Sie verwenden OrderTicket() & OrderLots() & 4 dieser Funktionen müssen Sie OrderSelect() verwenden
Wie Sie in der Dokumentation sehen können:
Hinweis
Der Parameter pool wird ignoriert, wenn die Bestellung über die Ticketnummer ausgewählt wird. Die Ticketnummer ist ein eindeutiger Identifikator der Bestellung.
Um herauszufinden, aus welcher Liste die Bestellung ausgewählt wurde, muss die Abschlusszeit der Bestellung analysiert werden. Ist der Zeitpunkt des Orderschlusses gleich 0, ist die Order offen oder schwebend und wird aus der Liste der offenen Positionen des Terminals genommen.
Man kann eine offene Position von einem schwebenden Auftrag durch den Auftragstyp unterscheiden. Wenn die Orderschlusszeit ungleich 0 ist, handelt es sich um eine geschlossene Order oder eine gelöschte schwebende Order, die aus der Terminal-Historie ausgewählt wurde. Sie unterscheiden sich auch durch ihre Ordertypen voneinander.
Die Funktion OrderSelect() kopiert Orderdaten in die Programmumgebung und alle weiteren Aufrufe von OrderClosePrice(), OrderCloseTime(), OrderComment(), OrderCommission(), OrderExpiration(), OrderLots(), OrderMagicNumber(), OrderOpenPrice(), OrderOpenTime(), OrderPrint(), OrderProfit(), OrderStopLoss(), OrderSwap(), OrderSymbol(), OrderTakeProfit(), OrderTicket(), OrderType() Funktionen geben die zuvor kopierten Daten zurück. Das bedeutet, dass sich in einigen Fällen die Orderdetails (Eröffnungskurs, SL/TP Levels oder Verfallsdatum) ändern können und die Daten nicht mehr aktuell sind. Es wird dringend empfohlen, den OrderSelect()-Befehl aufzurufen, bevor Sie die Auftragsdaten anfordern.
Wenn ich also die aktuelle Ticketnummer und Lots verwende, muss ich OrderSelect nicht verwenden, richtig? Ich eröffne jeweils nur einen Auftrag. Kann ich wissen, wie ich die Ticketnummer des offenen Auftrags erhalte?
Nochmals vielen Dank
Wenn ich also die tatsächliche Ticketnummer und Lots verwende, muss ich OrderSelect nicht verwenden, richtig? Ich eröffne jeweils nur einen Auftrag. Kann ich wissen, wie ich die Ticketnummer des offenen Auftrags erhalte?
Nochmals vielen Dank
Die OrderSend()-Funktion gibt bei Erfolg die Ticketnummer zurück. Ich schlage vor, dass Sie das Buch auf dieser Website von Anfang bis Ende lesen, um besser zu verstehen, wie man MQL verwendet, und auch die Referenzdokumentation für jede Funktion, die Sie verwenden, zu Rate ziehen, um besser zu verstehen, welche Parameter zu verwenden sind und was die Rückgabewerte sind.
Sehr geehrte Damen und Herren,
ich habe OrderSelect() eingefügt, aber OrderClose funktioniert immer noch nicht, bitte helfen Sie mir, vielen Dank.
//+------------------------------------------------------------------+ //| chuale.mq4 | //| Copyright 2014, MetaQuotes Software Corp. | //| http://www.abc.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2014, MetaQuotes Software Corp." #property link "http://www.abc.com" #property version "1.00" #property strict extern double TakeProfit=500; extern double Lots=0.1; extern double StopLoss=300; double bar1; double bar2; double bar3; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int init() { //--- //--- return(0); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //--- return(0); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ int start() { int ticket; int total=OrdersTotal(); int counted_bars=IndicatorCounted(); if(counted_bars>0) counted_bars--; { bar1=(iClose(Symbol(),PERIOD_M1,2)-iClose(Symbol(),PERIOD_M1,3))*100; bar2=(iClose(Symbol(),PERIOD_M1,1)-iClose(Symbol(),PERIOD_M1,2))*100; bar3=(iClose(Symbol(),PERIOD_M1,0)-iClose(Symbol(),PERIOD_M1,1))*100; if (bar2>1) { if(total<1) ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,"Chua EA",12345,0,Green); OrderSelect(1,SELECT_BY_POS); if (bar3 <-1) OrderClose(OrderTicket(),Lots,Bid,3,Green); } if (bar2<-1) { if(total<1) ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,Bid+-TakeProfit*Point,"Chua EA",12345,0,Red); if ( bar3>1) OrderClose(OrderTicket(), Lots,Ask,3,Red); } } return(0); //--- return(0); } //+------------------------------------------------------------------+
Hallo zusammen,
Jetzt füge ich Ticket und Lots in die OrderClose ein, ohne OrderTicket() und OrderLots() zu verwenden, aber es schließt die Bestellung nicht auch. Bitte helfen Sie.
//+------------------------------------------------------------------+ //| chuale.mq4 | //| Copyright 2014, MetaQuotes Software Corp. | //| http://www.abc.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2014, MetaQuotes Software Corp." #property link "http://www.abc.com" #property version "1.00" #property strict extern double TakeProfit=500; extern double Lots=0.1; extern double StopLoss=300; double bar1; double bar2; double bar3; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int init() { //--- //--- return(0); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //--- return(0); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ int start() { int ticket; int total=OrdersTotal(); int counted_bars=IndicatorCounted(); if(counted_bars>0) counted_bars--; { bar1=(iClose(Symbol(),PERIOD_M1,2)-iClose(Symbol(),PERIOD_M1,3))*100; bar2=(iClose(Symbol(),PERIOD_M1,1)-iClose(Symbol(),PERIOD_M1,2))*100; bar3=(iClose(Symbol(),PERIOD_M1,0)-iClose(Symbol(),PERIOD_M1,1))*100; if (bar2>1) { if(total<1) ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,"Chua EA",12345,0,Green); if (bar3 <-1) OrderClose(ticket,Lots,Bid,3,Green); } if (bar2<-1) { if(total<1) ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,Bid+-TakeProfit*Point,"Chua EA",12345,0,Red); if ( bar3>1) OrderClose(ticket, Lots,Ask,3,Red); } } return(0); //--- return(0); } //+------------------------------------------------------------------+
Hallo zusammen,
Jetzt füge ich Ticket und Lots in die OrderClose ein, ohne OrderTicket() und OrderLots() zu verwenden, aber es schließt die Bestellung nicht. Bitte helfen Sie.
ticket ist eine lokale Variable, also wird es beim nächsten Tick nicht den gleichen Wert haben.
Außerhalb der Funktionen platzieren , um sie zu Globalscope zu machen
double bar1; double bar2; double bar3; int ticket;
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Hallo,
Ich habe die folgende Codierung für meine EA, bitte helfen Sie mir, warum die OrderClose ist nicht triggerred? Brauche ich OrderSelect() zu verwenden? Was ist der Zweck von OrderSelect()? Vielen Dank!