[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 451

 
Vinin:

Warum gibt es das englische Sprichwort "Große Geister denken ähnlich" auf Russisch?
der Redewendung "Dummköpfe denken gleich" entsprechen?

 
Vinin >>:

Наверно надо предварительно выбрать ордер.

Ich weiß, das habe ich schon auf Seite 445 geschrieben, aber ich habe immer noch ein Problem.


Mein Problem ist es, einen lächerlichen Punkt zu erreichen. Fehler in der Auftragsabschlussfunktion.

OrserClose(int tip){
if( tip==1){
for( i=0; i<OrdersTotal(); i++){
           if(true==OrderSelect( i, SELECT_BY_POS, MODE_TRADES)){
           if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && OrderMagicNumber() == Magic){
           OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);
               }
           }
         }  
}

Ich erhalte einen Fehler (in verschiedenen Terminals)

EURCHF,M5: OrderClose-Fehler 4107

EURCHF,M5: Ungültiger Preis 1.48566000 für OrderClose Funktion


wenn ich es tue

OrderClose(OrderTicket(), OrderLots(),OrderClosePrice(),3, Violet);
OrderClose(OrderTicket(),OrderLots(),MarketInfo(Symbol(),MODE_BID),3,Violet);

Aber wenn ich OrderClose(...) nicht in eine separate Funktion, sondern in int start() schreibe , tritt dieser Fehler nicht auf.

Was ist das Problem und wie kann es behoben werden?



 
Urain писал(а) >>

Warum gibt es das englische Sprichwort "Große Geister denken ähnlich" auf Russisch?
dem Motto "Dummköpfe denken gleich" entsprechen?

Dann haben wir Glück.

 
T-G писал(а) >>

Ich weiß, das habe ich schon auf Seite 445 geschrieben, aber ich habe immer noch ein Problem.

Mein Problem ist, dass ich einen lächerlichen Punkt erreiche. Fehler in der Auftragsabschlussfunktion.

Ich erhalte einen Fehler (in verschiedenen Terminals)

EURCHF,M5: OrderClose-Fehler 4107

EURCHF,M5: Ungültiger Preis 1.48566000 für OrderClose Funktion

wenn ich es tue

Aber wenn ich OrderClose(...) nicht in eine separate Funktion, sondern in int start() schreibe , tritt dieser Fehler nicht auf.

Was ist das Problem und wie kann es behoben werden?

Ich weiß es nicht, ich weiß es nicht. Ich verwende immer meine eigene Funktion, um den Auftrag abzuschließen.

Zum Beispiel dieses.

//+------------------------------------------------------------------+
//|                                         Функция закрытия ордеров |
//|                                Copyright © 2010, Victor Nicolaev |
//|                                            e-mail: vinin@mail.ru |
//+------------------------------------------------------------------+
//| void Order_Close(int lMagic, int lOP=-1);                        |
//+------------------------------------------------------------------+
void Order_Close(int lMagic, int lOP=-1){
   bool res;
   GetLastError();
   for(int i = OrdersTotal() - 1;  i >= 0;  i--) {
      if (!OrderSelect( i, SELECT_BY_POS, MODE_TRADES))   continue;
      if (OrderSymbol() != Symbol())                     continue;
      if (OrderMagicNumber() != lMagic)                   continue;
      if (OrderType()!= lOP && lOP!=-1)                     continue;
      
      RefreshRates();
      double _ask      =MarketInfo(Symbol(),MODE_ASK);
      double  _bid     =MarketInfo(Symbol(),MODE_BID);
      double  _point   =MarketInfo(Symbol(),MODE_POINT);
      double  _digits  =MarketInfo(Symbol(),MODE_DIGITS);

      double ClosePrice=NormalizeDouble( iif(OrderType()==OP_BUY,_bid, _ask),_digits);
      res=OrderClose(OrderTicket(), OrderLots(), ClosePrice, 3, iif(OrderType()==OP_BUY, clCloseBuy, clCloseSell));
      if (! res) {
         int err=GetLastError();
         Print("Error(", err,") delete order ", NameOP[ lOP],": ", ErrorDescription( err));
      }
   }
}

Um sie zu nutzen, benötigen Sie weitere Funktionen

//+------------------------------------------------------------------+
//|                                    Функция логического сравнения |
//|                                Copyright © 2010, Victor Nicolaev |
//|                                            e-mail: vinin@mail.ru |
//+------------------------------------------------------------------+
//| double iif(bool A, double B, double C);                          |
//+------------------------------------------------------------------+
double iif(bool A, double B, double C) {if( A) return( B); return( C); }
 

Hilfe bei dem Problem der Kontrolle von Geschichtslöchern. Bitte empfehlen Sie einen wirklich funktionierenden Mechanismus für den Expert Advisor, um den Fehler 4066 abzufangen.

Wenn es keine eindeutige Kontrolle über den Vorgang des Ladens der historischen Daten gibt, macht der Handel mit Expert Advisors keinen Sinn.

Das Risiko eines solchen Handels tendiert einfach gegen unendlich, unabhängig davon, welche Handelsstrategie Sie verwenden.


Ich war sehr überrascht, dass die Lösung für dieses Problem der Benutzer selbst und an einer Stelle finden muss.

Meiner Meinung nach ist das Fehlen einer klaren Unterstützung seitens des Entwicklers in dieser Frage eine reine Ablenkung.

Ich denke, MetaQuotes könnte eine Reihe von empfohlenen und getesteten Lösungen für häufige Fragen und Probleme veröffentlichen.

 
MoneyJinn писал(а) >>

Ich denke, MetaQuotes könnte eine Reihe von empfohlenen und getesteten Lösungen für allgemeine Standardfragen und -aufgaben veröffentlichen.

Der Artikel "Graphen ohne Löcher". könnte helfen... https://www.mql5.com/ru/articles/1407

 

Das Thema ist "jede Frage" und nicht nur über den Code, richtig?

Ich habe eine Frage, oder besser gesagt, ich möchte eine Meinung hören: Was glauben Sie, wohin wird der Preis gehen?



 
T-G >>:

Тема же называется "любой вопрос" а не только по коду?

У меня вопрос, а точнее хочется узнать мнение, куда по вашему мнению двинется цена?

dies ist keine Frage für Anfänger :)

 
Helfen Sie, dieses Problem zu lösen.
Wenn es eine Funktion gibt, die eine übergroße Partie in mehrere Aufträge aufteilt, teilen Sie sie bitte mit.

Ich danke Ihnen.