Fehler, Irrtümer, Fragen - Seite 2447

 

Fehler im Strategietester während der Optimierung.

"Aufgabe vomPrüfer abgelehnt".

Zum Beispiel, wenn Ihre Kontowährung EUR ist,

  • EURJPY Kein Problem
  • Fehler bei GBPJPY


Wenn Ihre Kontowährung USD ist

  • USDCAD kein Problem
  • USDJPY kein Problem
  • Fehler bei EURAUD


erscheint, wenn andere Währungspaare im Code verwendet werden.

In meinem Beispiel wird die Berechnung des dynamischen Loses verwendet

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
   if(DynamicLot)
     {
      if(SymbolInfoDouble(sym,SYMBOL_ASK)!=0)
        {
         if(Valdepo=="USD" || Valdepo=="USC")
           {
            if(StringSubstr(sym,0,3)=="USD")Lot2=BalanceFreeMargin*LotBalancePercent*AccountInfoInteger(ACCOUNT_LEVERAGE)/100/SymbolInfoDouble(sym,SYMBOL_TRADE_CONTRACT_SIZE);
            else if(StringSubstr(sym,3,3)=="USD")Lot2=BalanceFreeMargin*LotBalancePercent*AccountInfoInteger(ACCOUNT_LEVERAGE)/SymbolInfoDouble(sym,SYMBOL_ASK)/100/SymbolInfoDouble(sym,SYMBOL_TRADE_CONTRACT_SIZE);
            else
              {
               pr=SymbolInfoDouble(StringSubstr(sym,0,3)+"USD"+prefix,SYMBOL_ASK);
               if(pr!=0)Lot2=BalanceFreeMargin*LotBalancePercent*AccountInfoInteger(ACCOUNT_LEVERAGE)/pr/100/SymbolInfoDouble(sym,SYMBOL_TRADE_CONTRACT_SIZE);
               else
                 {
                  double Margin=0;
                  OrderCalcMargin(ORDER_TYPE_BUY,Symbol(),1,SymbolInfoDouble(Symbol(),SYMBOL_ASK),Margin);
                  if(Margin!=0)Lot2=BalanceFreeMargin/Margin/100*LotBalancePercent;
                 }
              }
           }
         else

         if(Valdepo=="EUR" || Valdepo=="EUC")
           {
            if(StringSubstr(sym,0,3)=="EUR")Lot2=BalanceFreeMargin*LotBalancePercent*AccountInfoInteger(ACCOUNT_LEVERAGE)/100/SymbolInfoDouble(sym,SYMBOL_TRADE_CONTRACT_SIZE);
            else
              {
               pr=SymbolInfoDouble("EUR"+StringSubstr(sym,0,3)+prefix,SYMBOL_BID);
               if(pr!=0)Lot2=BalanceFreeMargin*LotBalancePercent*AccountInfoInteger(ACCOUNT_LEVERAGE)*pr/100/SymbolInfoDouble(sym,SYMBOL_TRADE_CONTRACT_SIZE);
               else
                 {
                  double Margin=0;
                  OrderCalcMargin(ORDER_TYPE_BUY,Symbol(),1,SymbolInfoDouble(Symbol(),SYMBOL_ASK),Margin);
                  if(Margin!=0)Lot2=BalanceFreeMargin/Margin/100*LotBalancePercent;
                 }
              }
           }



d.h. wenn der EA den Preis einer anderen Währung anfordert.

 
Nikolai Semko:

Dann brauchen Sie eine kompetente Argumentation für MQ.
Wozu dient es? Wie und in welchen Fällen kann es die Fähigkeiten von mql verbessern? Und das nicht nur, um eine persönliche Laune zu befriedigen.

Nehmen wir an, Sie schreiben EA-Manager. Jetzt können zwei identische EAs mit unterschiedlichen Namen nicht mehr als dieselben erkannt werden.

Sie müssen zum Beispiel feststellen, ob der EA und sein Klon schon einmal ausgeführt wurden.

Nun, das passiert, wenn es eine Menge Charts und EAs gibt. Und wieder wird aus Versehen etwas gestartet.

 

Liebe Entwickler, bitte erklären Sie mir, warum ich regelmäßig einen Fehler erhalte, wenn ich das aktuelle Bar-Datum im Indikator in den Puffer kopiere?

2019.04.26 12:12:39.811 i-Regr4_05i (Si-6.19,M1)        Failed to copy data from the handle_Regressor indicator, error code 4401
   datetime Arr[],time1;
   if(CopyTime(symb,0,0,1,Arr)<=0)
   {
   PrintFormat("Failed to copy data from the handle_Regressor indicator, error code %d",GetLastError());
   return(0);
   }

Im Winter gab es keinen solchen Fehler - die Indikatoren funktionierten einen Monat lang durchgehend, aber bei den neuen Builds fing ich an, ihn zu sehen.

 
Ich danke Ihnen!
 
Mykhailo Ohorodniichuk:

Helfen Sie mir, dieses Problem zu lösen. Wie kann ich erreichen, dass normale Zeichen anstelle der aktuellen Zeichen übertragen werden?

Google-Befehl chcp

chcp 1251 - fenster-1251

chcp 65001 - utf-8

...

 
fxsaber:

Nehmen wir an, Sie schreiben EA-Manager. Jetzt können zwei identische EAs mit unterschiedlichen Namen nicht als dieselben erkannt werden.

Sie müssen zum Beispiel feststellen, ob der EA und sein Klon schon einmal ausgeführt wurden.

Nun, das passiert, wenn es eine Menge Charts und EAs gibt. Und wieder wird aus Versehen etwas gestartet.

Ich verstehe...

Aber ich neige immer noch zu der folgenden Formel: nicht mehr als einen Expert Advisor pro Handelskonto. Das macht mehr Sinn. Auch wenn Sie mehrere Strategien kombinieren möchten, sollten Sie dies im Rahmen eines Expert Advisors tun. In diesem Fall brauchen Sie keinen EA-Manager. Außerdem ist auch hier ein anderer Hash keine Garantie dafür, dass der EA unähnlich ist, selbst wenn es der interne Hash der Entwickler ist.

Und wenn wir zum Zeitpunkt des Starts eines EAs prüfen wollen, ob ein anderer EA versehentlich auf diesem Konto gestartet wurde, um den Betrieb eines neuen EAs zu verhindern und weiterhin zuzulassen, um mögliche Konflikte zu vermeiden, kann dies leicht durch reguläre Funktionen gelöst werden und die Gleichheitsprüfung wird hier nicht benötigt.

 
Nikolai Semko:

Ich verstehe...

Aber ich neige immer noch zu folgender Formel

Was haben also Ihre persönlichen Vorlieben damit zu tun? Es geht um MT5 im Allgemeinen.
 
fxsaber:
Was hat das nun mit Ihren persönlichen Vorlieben zu tun? Es geht um MT5 im Allgemeinen.
Ich bezweifle sehr, dass außer Ihnen noch jemand auf die Idee kommt, einen EA-Manager zu erstellen. ))
 
Nikolai Semko:
Ich bezweifle sehr, dass außer Ihnen noch jemand auf die Idee kommen wird, einen EA-Manager zu erstellen. ))

Und warum? Das ist eine sehr gute und praktische Sache, die man tun kann.

Im Moment muss ich Profile verwenden, aber die haben eine Menge Einschränkungen.

 
Andrey Khatimlianskii:

Und warum? Das ist eine sehr gute und praktische Sache, die man tun kann.

Im Moment muss ich Profile verwenden, aber die haben eine Menge Einschränkungen.

Andrei, ich verstehe das mit den Profilen nicht.