Errori, bug, domande - pagina 2447

 

errore nel tester di strategia durante l'ottimizzazione.

"compito rifiutato dall'agente tester".

Per esempio, se la valuta del suo conto è EUR,

  • EURJPY Nessun problema
  • Errore su GBPJPY


Se la valuta del suo conto è USD

  • USDCAD Nessun problema
  • USDJPY Nessun problema
  • Errore su EURAUD


appare quando si usano altre coppie di valute nel codice.

Nel mio esempio sta usando il calcolo del lotto dinamico

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
   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;
                 }
              }
           }



cioè quando l'EA richiede il prezzo di un'altra valuta.

 
Nikolai Semko:

Allora avete bisogno di un ragionamento competente per MQ.
A cosa serve? Come e in quali casi può migliorare le capacità di mql? E non solo per soddisfare un capriccio personale.

Diciamo che tu scrivi EA manager. Ora due EA identici con nomi diversi non possono essere riconosciuti come uguali.

Per esempio, è necessario determinare se l'EA e il suo clone sono stati eseguiti prima.

Beh, questo succede quando ci sono molti grafici e EAs. E qualcosa viene lanciato di nuovo per errore.

 

Cari sviluppatori, per favore spiegate perché periodicamente ottengo un errore quando copio la data della barra corrente nell'indicatore nel buffer?

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);
   }

In inverno non c'era questo errore - gli indicatori hanno funzionato costantemente per un mese, ma nelle nuove costruzioni ho iniziato a vederlo.

 
Grazie!
 
Mykhailo Ohorodniichuk:

Aiutatemi a risolvere questo problema. come posso far trasmettere i caratteri normali invece di quelli attuali?

Comando Google chcp

chcp 1251 - windows-1251

chcp 65001 - utf-8

...

 
fxsaber:

Diciamo che tu scrivi EA manager. Ora due EA identici con nomi diversi non possono essere riconosciuti come uguali.

Per esempio, è necessario determinare se l'EA e il suo clone sono stati eseguiti prima.

Beh, questo succede quando ci sono molti grafici e EAs. E qualcosa viene lanciato di nuovo per errore.

Capisco...

Ma continuo a propendere per la seguente formula: non più di un Expert Advisor per un conto di trading. Ha più senso. Anche se ci sono diverse strategie che vuoi combinare, dovresti farlo nell'ambito di un solo Expert Advisor. In questo caso, non avete bisogno di un gestore EA. Inoltre, ancora una volta, un hash diverso non è una garanzia che l'EA sia dissimile, anche se è l'hash interno nativo degli sviluppatori.

E se vogliamo controllare al momento del lancio di un EA se qualche altro EA è stato lanciato su questo conto per caso, al fine di prevenire e consentire ulteriormente il funzionamento di un nuovo EA per evitare possibili conflitti, può essere facilmente risolto da funzioni regolari e il controllo di identità non è necessario qui.

 
Nikolai Semko:

Capisco...

Ma continuo a propendere per la seguente formula

Quindi cosa c'entra la tua preferenza personale? Si tratta di MT5 in generale.
 
fxsaber:
Cosa ha a che fare questo con le sue preferenze personali? Si tratta di MT5 in generale.
Dubito molto che qualcuno, a parte voi, possa pensare di creare un manager EA. ))
 
Nikolai Semko:
Dubito molto che qualcuno, a parte voi, penserà mai di creare un manager EA. ))

Perché? È una cosa molto buona e pratica da fare.

Devo usare i profili per ora, ma hanno un sacco di limitazioni.

 
Andrey Khatimlianskii:

Perché? È una cosa molto buona e pratica da fare.

Devo usare i profili per ora, ma hanno un sacco di limitazioni.

Andrei, non capisco i profili.

Motivazione: