[ARCHIV!] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen - 4. - Seite 39

 
artem86:

Können Sie mir bitte helfen? Wie schließe ich 5 schwebende Aufträge mit demselben Zauber.

Vielen Dank im Voraus!


if (OrdersTotal()>0)
{  for (int i=OrdersTotal()-1; i>=0; i--)
   {  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
      {  if(OrderMagicNumber()==magic_number)
         {  if (OrderClose(OrderTicket(),LOT,price,3)==true)
            {  Print("Error = ",GetLastError()); return(0);
}  }  }  }  }
Wenn alle diese Aufträge zum Verkauf eröffnet wurden, ist der Preis=Ask, wenn zum Kauf , ist der Preis=Bid.
 
paladin80:
Wenn der Auftrag zum Verkauf eröffnet wurde, ist der Preis=Ask, wenn zum Kauf, ist der Preis=Bid.


Falsch, Sie sollten

if (OrdersTotal()>0)
{  for (int i=OrdersTotal()-1; i>=0; i--)
   {  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
      {  if(OrderMagicNumber()==magic_number)
         {  if (OrderDelete(OrderTicket())==true)
              {  
              Print("Error = ",GetLastError()); return(0);
              } 
         } 
      }  
   }  
}
 
r772ra:


Falsch, Sie müssen

Mist, ich habe nicht bemerkt, dass ich die schwebenden Aufträge hätte schließen sollen, ich dachte an das Schließen von Positionen.
 

Guys - sagen Sie mir, in der Tester, und dann beim Handel auf dem Handelskonto, auch manuell, stellt sich heraus, dass es möglich ist, NICHT zu NORMALISIEREN das Volumen der offenen Position, während es durch die erforderliche Volumen geöffnet werden. Wenn ich zum Beispiel einen Auftrag mit 0,1210 Lots eröffne, öffnet das Terminal mit 0,12, d.h. der "zusätzliche" Bruchteil wird standardmäßig verworfen.

Bitte teilen Sie uns mit, ob es sich hierbei um ein weiteres "Upgrade" des Terminals handelt oder ob dies ursprünglich möglich war.

Ich habe diese Methode der Volumennormalisierung bereits verwendet, aber ich habe diesen Punkt in einem meiner Ops übersehen und die Aufträge öffnen sich weiterhin, und die Registerkarte Expert Advisors gibt mir das vorläufige Volumen an, das vor der Positionseröffnung geöffnet werden muss, insbesondere 0,121 Lots - ich teste es auf einem Demokonto.

Funktion der Normalisierung des Loses:

//+------------------------------------------------------------------+
//| Нормализация лота                                                |
//+------------------------------------------------------------------+

double NormalizeLots(double lot)
{
   double lotStep = MarketInfo(Symbol(), MODE_LOTSTEP);
   double lots = NormalizeDouble(lot / lotStep, 0) * lotStep;   
   lots = MathMax(lots, MarketInfo(Symbol(), MODE_MINLOT));
   lots = MathMin(lots, MarketInfo(Symbol(), MODE_MAXLOT));   
   return (lots);
}

Ich rufe es von EA aus an:

// ---------НОРМАЛИЗУЕМ НОВЫЕ РАСЧЕТНЫЕ ЛОТЫ И ОТКРЫВАЕМ ОЧЕРЕДНУЮ ПОЗИЦИЮ...            
                    Lots_New = NormalizeLots(Lots_New);
                    if (lastType == OP_SELL) WmOrderSend(Symbol(), OP_BUY, Lots_New, Ask, 0, 0, "итерация" , MagicNumber);
                    if (lastType == OP_BUY)  WmOrderSend(Symbol(), OP_SELL,Lots_New, Bid, 0, 0, "итерация" , MagicNumber);

Wer es kennt - bitte kommentieren...

P.S. Ich habe es noch einmal überprüft - anscheinend gibt es eine Situation, in der, wenn Sie versuchen, ein Volumen von 0,1466 zu öffnen, 0,14 geöffnet wird, d.h. alles rechts vom zweiten Zeichen nach dem Dezimalpunkt wird abgelehnt.

Wenn Sie die Normalisierung durchführen, sieht es so aus, als ob es 0,15 Lot öffnen würde - d.h. mit Rundung.

Das muss ich mir mal ansehen...

P.P.S. Wie auch immer: Wer weiß - bitte kommentieren...

 

Verdammt, ignorieren.

 
HILFE...BITTE...Ich lasse den Expert Advisor auf einem Demo- und einem Realkonto laufen, er sagt: wird mit dem nächsten Tick gestartet...Der Tick kommt, aber er startet nicht, obwohl die Option "dem EA den Handel erlauben" aktiviert ist, der EA ist aktiviert, keine Fehler im Log, das Internet funktioniert und andere EAs funktionieren auch.Dieser Advisor funktioniert gut im Tester.Wenn es hilft: Der EA hat aufgehört zu laufen, nachdem ich die Filterfunktion aus diesem Artikel in ihn eingebaut habe
 
sellena:
Falls es hilft: der EA hat aufgehört sich einzuschalten, nachdem ich die Filterfunktion aus diesem Artikel hinzugefügt habe

Wenn es Ihnen hilft, sprechen Sie mit einem der Mitarbeiter hier.
 
sergeev:

Wenn es Ihnen hilft, sprechen Sie mit einem der Mitarbeiter hier.
Alex, sieh dir meine Frage an, wenn du Zeit hast... Ich danke Ihnen.
 
Roman.:
Alex, sieh dir meine Frage an, wenn du Zeit hast... Ich danke Ihnen.

Ich kann Ihnen eines sagen - ich habe mich bereits (bei einer anderen Gelegenheit) an den Dienst gewandt, und man sagte mir: "Sich auf die Standardeinstellungenzu verlassen, ist schädlich, verwenden Sie Ihre eigenen Filter und Behandlungen, wenn Sie sicher sein wollen". Es liegt also an Ihnen...
 
Roman.:
Alex, sieh dir meine Frage an, wenn du Zeit hast... Danke.

In den FAQ steht es richtig. Sie können sich nicht auf "Standardwerte" verlassen. Denn ich erinnere mich, dass 131 Fehler (falsches Los) oft auftraten, wenn man vor dem Absenden einer Bestellung keine Normalisierung durchführte.
Vielleicht haben die MMOs jetzt ihre eigene Standard-Losprüfung auf den Servern durchgeführt, wenn sie einen Auftrag zur Ausführung senden.

Sie sollten daher vor dem Versand immer eine eigene Preis- und Losnormalisierung vornehmen.

Das sind für Sie die Regeln einer guten Kodierung und das Versprechen, dass Sie in Zukunft weniger Ärger mit potenziellen Problemen haben werden.