Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1166

 

Können Sie mir bitte sagen, wie ich die Auftragsauswahl nach Symbol für OrdersTotal() festlegen kann?

   int total=OrdersTotal();

   if(total==0&&Bid>=OrderBuy&&Bid<=OrderBuy+10*Point)
    {
     if(OrderSend(Symbol(),OP_BUY,Lot,Ask,5,0,0,NULL,0,0,clrNONE)){::Alert(" Order Open ");}
    }

Wenn derzeit ein Auftrag für ein Paar offen ist, wird er nicht für andere geöffnet.

 
MakarFX:

Können Sie mir bitte sagen, wie ich die Auftragsauswahl nach Symbol für OrdersTotal() festlegen kann?

Wenn nun ein Auftrag für ein Paar offen ist, wird er nicht für andere Paare geöffnet.

Schauen Sie sich kodobase an, es gibt ein Beispiel in jedem EA

 
Vladimir Pastushak:

Schauen Sie in kodobase nach, dort gibt es für jeden Berater ein Beispiel

Ich bin kein Programmierer(

Das ist ein bisschen kompliziert für mich.

 
MakarFX:

Ich bin kein Programmierer(

Das ist ein bisschen kompliziert für mich.

Es ist nicht kompliziert.

um einen einfachen EA zu schreiben, hier ist die gesamte Funktionalitäthttps://www.mql5.com/ru/forum/131859

Für Ihre Zwecke ist OrdersTotal() die Gesamtzahl der offenen Aufträge (nummeriert von 0) im Terminal, dann müssen Sie sie einzeln auswählen (durch die Schleife gehen), indem Sie OrderSelect() verwenden und die erforderlichen Aufträge bearbeiten

for (i=OrdersTotal()-1; i>=0; i--)
{
  if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) 
  {
   // проверим символ ордера, проверим магикномер ордера....
  }
}
Только "Полезные функции от KimIV".
Только "Полезные функции от KimIV".
  • 2011.02.18
  • www.mql5.com
Все функции взяты из этой ветки - http://forum.mql4...
 
MakarFX:

Können Sie mir bitte sagen, wie ich die Auftragsauswahl nach Symbol für OrdersTotal() festlegen kann?

Wenn derzeit ein Auftrag für ein Paar offen ist, wird er nicht für andere Paare geöffnet.

Ich muss meine Bestellungen regelmäßig überprüfen (mich selbst zählen), je nach Bedarf.
Ich habe in jedem EA eine Schleife (eine große Methode), die vor wichtigen Aktionen aufgerufen wird:

for(int pos=OrdersTotal()-1; pos>=0;pos--) {

        if (!OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)) {

                selectFailed=true; /* не удалось "выбрать" ордер - статистика может быть неверной */
                continue;

        }

        if (OrderCloseTime()!=0) { /* ордер закрыт но ещё не удалён из списка*/ continue; }

        if (OrderMagicNumber()==0) { /* ордер выставлен юзером */ } continue;
        else if (OrderMagicNumber()!=_Magic) { /* ордер выставлен другим советником */ continue; }

        if (OrderSymbol()!=_Symbol) { /* ордер с правильным Magic но на другом символе */ continue; }

       /// обработка рабочих ордеров, с правильным Magic на символе советника (то есть наш ордер)

       /// проверяются несработки, считается кол-во, статистика, позиции и прочее 

}

Prüfung auf einen Auftrag für das Symbol ist hervorgehoben

 
Maxim Kuznetsov:

in regelmäßigen Abständen, je nach Bedarf, ihre Aufträge zu überprüfen (Selbstkontrolle).
Ich habe eine Schleife (eine große Methode) in jedem EA, die vor wichtigen Aktionen aufgerufen wird:

for(int pos=OrdersTotal()-1; pos>=0;pos--) {

        if (!OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)) {

                selectFailed=true; /* не удалось "выбрать" ордер - статистика может быть неверной */
                continue;

        }

        if (OrderCloseTime()!=0) { /* ордер закрыт но ещё не удалён из списка*/ continue; }

        if (OrderMagicNumber()==0) { /* ордер выставлен юзером */ } continue;
        else if (OrderMagicNumber()!=_Magic) { /* ордер выставлен другим советником */ continue; }

        if (OrderSymbol()!=_Symbol) { /* ордер с правильным Magic но на другом символе */ continue; }

       /// обработка рабочих ордеров, с правильным Magic на символе советника (то есть наш ордер)

       /// проверяются несработки, считается кол-во, статистика, позиции и прочее 

}

Prüfen Sie die Reihenfolge, indem Sie das Symbol hervorheben

Nebenbei bemerkt, verstehe ich, dass die Ticker von historischen Aufträgen verloren gehen können. Die Frage ist, ob sich die Auftragsticker(SELECT_BY_TICKET) in MT4 und die Ticker der Geschäfte und Positionen in MT5 ändern können.

Und auch, ob die Reihenfolge nach dem OrderSelect auf dem Ticket geändert werden kann. Zum Beispiel am nächsten Tag. Der EA ist nicht deaktiviert.

Wenn der schwebende Auftrag ein Marktauftrag geworden ist, können Sie ihn nach seinem Typ anzeigen. Wenn die Marktorder geschlossen wurde, wird der Zeitpunkt des Orderschlusses betrachtet, der nicht gleich Null ist OrderCloseTime()!=0

Wenn der schwebende Auftrag während seiner Lebensdauer abgeschlossen wurde, wie können wir ihn dann über das Auftragsticket verfolgen?

Und eine Frage, die Lebensdauer ist auch in Marktaufträge (MT4), funktioniert es?

 
MakarFX:

Können Sie mir bitte sagen, wie ich die Auftragsauswahl nach Symbol für OrdersTotal() festlegen kann?

Wenn nun ein Auftrag für ein Paar offen ist, wird er nicht für andere Paare geöffnet.

Die Frage ist bereits gelöst. Ich danke Ihnen allen.

 
Guten Tag, meine Damen und Herren! Ich verstehe nicht, was falsch ist, warum ist Alert: time3-time1 = wrong datetime?
datetime time1 = iTime(NULL,0,1);
datetime time3 = iTime(NULL,0,3);
datetime delta3 = (time3-time1);  Alert("time3-time1 = ",delta3); 


 
novichok2018:
Guten Tag, meine Damen und Herren! Ich verstehe nicht, warum er Alert: time3-time1 = wrong datetime schreibt?


weil die Zahl negativ ist :-)

nach dieser Logik ist Zeit1 __immer __mehr als Zeit3

 
Maxim Kuznetsov:

weil die Zahl negativ ist :-)

nach der gegebenen Logik ist Zeit1 __immer __mehr als Zeit3

Danke! Manchmal schaltet das Gehirn ab.

Grund der Beschwerde: