Frage zum Berater für mehrere Währungen - Seite 12

 

Nachmittags. Function MiniMaxOrderPrice(Symbol(), -1, OP_BUYSTOP, 1 )

zeigt einen Ticker-Auftrag, der weiter vom aktuellen Kurs entfernt ist als andere Aufträge, korrekt an.

Ich muss diesen "weit entfernten" Auftrag löschen, wenn die Anzahl der erteilten Aufträge den angegebenen Wert überschreitet.

Ich mache das so:

//--------Удаление лишних ордеров--------------

if ( NumberOfOrders(NULL,OP_BUYSTOP,-1)> Количество_ордеров_  ){
//если число ордеров больше заданного

 for (int v=0; v<OrdersTotal(); v++)                                   {       
  if (OrderSelect( v, SELECT_BY_TICKET, MODE_TRADES))                    {
// перебираем по тикету
           
   if (OrderSymbol()==Symbol())                                        {                  
    if (OrderType() == OP_BUYSTOP)     { выбираем байстопы 


if (OrderTicket()== MiniMaxOrderPrice(Symbol(), -1,OP_BUYSTOP,1) )
//если тикет равен тикету самого дальнего ордера, - удаляем его

{     OrderDelete(OrderTicket(),Yellow);     return(0);    }
             }}}}} 


Aber leider ist es nicht der am weitesten entfernte Auftrag, der gelöscht wird (wenn er überhaupt gelöscht wird).

Im Kommentar und im Diagramm kann ich jedoch sehen, dass die Funktion

MiniMaxOrderPrice(Symbol(), -1,OP_BUYSTOP,1)
es ist das am weitesten entfernte Ticket, das zurückgegeben wird.

Aber es ist die am weitesten entfernte Ordnung, die entfernt ist. Und dann, nach mehreren Löschungen, bekommen wir 4108 Auftragslöschungsfehler (falsches Ticket/unbekanntes Ticket).

Anscheinend gibt es einen Fehler im Code in den letzten 2-3 Zeilen.... !

Bitte teilen Sie uns mit, wo ein Fehler vorliegen könnte ...? ??


 
rid писал(а) >>

Nachmittags. Function MiniMaxOrderPrice(Symbol(), -1, OP_BUYSTOP, 1 )

zeigt einen Ticker-Auftrag, der weiter vom aktuellen Kurs entfernt ist als andere Aufträge, korrekt an.

Ich muss diesen "weit entfernten" Auftrag löschen, wenn die Anzahl der erteilten Aufträge den angegebenen Wert überschreitet.

Ich mache das so:


Aber leider wird nicht der am weitesten entfernte Auftrag gelöscht (wenn er denn gelöscht wird).

Obwohl ich im Kommentar und in der Grafik sehe, dass die Funktion

gibt das Ticket zurück, das am weitesten entfernt ist.

Aber aus irgendeinem Grund wird der nächste gelöscht. Und dann, nach mehreren Löschungen, treten die 4108 Auftragslöschungsfehler auf (falsches Ticket/unbekanntes Ticket).

Anscheinend gibt es einen Fehler im Code in den letzten 2-3 Zeilen.... !

Bitte teilen Sie uns mit, wo ein Fehler vorliegen könnte ...? ??

int DeleteTicket= MiniMaxOrderPrice(Symbol(), -1,OP_BUYSTOP,1);
OrderSelect( DeleteTicket, SELECT_BY_TICKET);
OrderDelete(OrderTicket(),Yellow);  
Sie könnten so vorgehen, obwohl ich mir nicht sicher bin, ob das die beste Lösung ist
 
Ich danke Ihnen. Ich werde es ausprobieren.
 

Ja...

Es scheint, dass die Sortierung nach Ticket in dieser Situation eine heikle Angelegenheit und nicht ganz korrekt ist.

Das Programm kommt in den Tickets durcheinander! Es wird auf dem Weg nach draußen aufgehalten. Löscht Aufträge außerhalb der Reihenfolge...

Ich werde versuchen, Aufträge mit verschiedenen Magiern zu vergeben. Und dann nach Magiern sortieren, mit allen Konsequenzen...

 

Wenn es Ihnen nichts ausmacht, kann ich mir den gesamten Code ansehen, überprüfen Sie ihn. vinin@mail.ru

 

OK! Ich danke Ihnen. Ich putze den Rotz im Code weg, bürste ihn auf und schicke ihn rüber.

 

Können Sie mir bitte etwas sagen? Wenn ich mehrere Charts öffne und einen EA auf jeden Chart setze, funktioniert dann jeder von ihnen oder nur derjenige im aktiven Chartfenster?

 

Ja, das wird wahrscheinlich der Fall sein. Alle EAs werden in allen Fenstern funktionieren.

Werfen Sie auch einen Blick auf die Parameter von EA.

Es muss eine Option Magic oder etwas Ähnliches geben. SIMILAR.

Das heißt, dies ist der Parameter, mit dem der EA "fremde" Aufträge und Positionen von seinen eigenen unterscheidet!

Wie der Dichter sagte! -

Wenn ein Mann mir treu ist - er ist mein Bruder,
Ein untreuer Bruder ist mein Feind, verdamme ihn hundertfach.
Medizin ist manchmal gefährlicher als Gift,
Krankheit heilt manchmal Gift. (O.H.)

Mit anderen Worten, Optionsscheine, die von einem anderen Experten, einem anderen Magier, ausgestellt werden, werden von dem jeweiligen Experten nicht beachtet. Und stellt aus und "holt für die Änderung" oder schließt nur ihre eigenen, mit dem Zauberer speziell von ihm gesetzt!

Das war's...

 

Ich frage mich, wenn jeder seinen eigenen Assistenten und nur eine zulässige Position zu einer Zeit hat, wird der EA eine Position öffnen, wenn es bereits eine offene Position gibt

von einem anderen EA?

 

Die Frage ist etwas vage formuliert, aber ich habe sie verstanden.

Die Antwort lautet: Ja, natürlich wird sie das! Denn es wird gesagt:

Wer wird im Becher des Lebens einen Tropfen erblicken?
Du oder ich? Er wird glitzern und verschwinden.
Und der Mundschenk des Lebens, - Millionen
Strahlend spritzt und schüttet und wird schütten.(0.X.)

//-------------------------------------------------------------

Unabhängig davon, ob es im Terminal offene Positionen für dieses Instrument gibt. Manuell oder durch einen anderen Expert Advisor geöffnet.

Aber wenn die Magie dieser offenen Positionen nicht mit der Magie des betreffenden EA übereinstimmt, dann wird dieser EA seine eigene Position mit seiner eigenen Magie öffnen! Ungeachtet des Vorhandenseins anderer Positionen (mit einem anderen Magier) für dieses Instrument.


Grund der Beschwerde: