Errori, bug, domande - pagina 133

 
Interesting:
Per quanto capisco la maturazione, come nella demo o nel tester...
Che cos'è? Riaccredito o rateizzazione
 
Dmitriy2:

Così, quando si emettono valori nel log, solo una volta (per la prima volta) la funzione parabolica, cioè CopyBuffer, restituisce 0 e non -1, come dovrebbe essere in caso di errore (anche se non dovrebbe essere nemmeno così, tutti i dati sono lì, tutti scaricati, nessun grande array multidimensionale, nessun errore dovrebbe verificarsi!) E questo succede SOLO nel tester e SOLO UNA volta. Da qui in poi tutto funziona bene.

Nel codice di base non mi interessa cosa restituiscono le funzioni, alla fine quando si tratta di una richiesta di scambio, i valori ricevuti per la richiesta sono controllati dalla funzione universale, e se tutto è OK inviamo la richiesta, altrimenti - aspettiamo che sia OK...

Provate il seguente codice nella vostra funzione per ottenere il valore parabolico.

double Параболик(ENUM_TIMEFRAMES период,double step,double maximum,int бар)
  {
   double ЗначениеParabolic[1];
   int Parabolic=iSAR(Symbol(),период,step,maximum);
   int cb=CopyBuffer(Parabolic,0,бар,1,ЗначениеParabolic);
   if(cb!=1) Print("BarsCalculated ",BarsCalculated(Parabolic),", CopyBuffer ", cb, ", ArrayValue ",ЗначениеParabolic[0]);
   return(ЗначениеParabolic[0]);
  }

Otterrete qualcosa di simile a questo nel log

2010.09.15 14:53:53     Core 1  2010.09.01 00:00:07   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
2010.09.15 14:53:53     Core 1  2010.09.01 00:00:07   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
2010.09.15 14:53:53     Core 1  2010.09.01 00:00:07   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
2010.09.15 14:53:53     Core 1  2010.09.01 00:00:07   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
2010.09.15 14:53:53     Core 1  2010.09.01 00:00:07   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
2010.09.15 14:53:53     Core 1    SLпоПервойТочкеПараболика=true

Spiegherà perché si ottiene 0 e non -1.

Lo ripeto per la terza volta. I dati ci sono, ma i valori dell'indicatore in quel momento POSSONO ancora essere calcolati. È scritto nell'aiuto!

 
maryan.dirtyn:
Che cos'è? Ricrittografia o rateizzazione
Overcritching soffre di FC, MT ha avuto la maturazione per tutta la vita. Singolo nei giorni normali e x3 il mercoledì(il giorno del triplo scambio dovrebbe essere chiarito)...
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте - Документация по MQL5
 
Interesting:
FC soffre di accumulo eccessivo, MT ha avuto accumulo per tutta la vita. Singolo nei giorni normali e x3 il mercoledì(il giorno del triplo scambio dovrebbe essere chiarito)...
Non so cosa sia fc... Ho solo bisogno di sapere come sarà ai campionati
 
alexvd:

Provate questo codice nella vostra funzione per ottenere il valore della parabola.

Otterrete all'incirca questo output nel log

Questo spiegherà perché si ottiene 0 e non -1.

Lo ripeterò per la terza volta. I dati esistono, ma i valori dell'indicatore in quel momento POTREBBERO non essere ancora stati calcolati. È scritto nell'aiuto!

Esattamente, stiamo ottenendo il valore parabolico, non la risposta di CopyBuffer...

ok... cambiare la funzione parabolica con quella che hai fornito (con le stampe).

Aggiungo le stampe nel ciclo for (non ha protezione dello zero)

if(НапрСигнала==ORDER_TYPE_BUY)
     {
      if(SLпоПервойТочкеПараболика==true)
         for(i=0;;i=i+1)
           {
            Print("бай, параболик до иф ",Параболик(PERIOD_CURRENT,0.02,0.2,i+1));
            if(iLow(PERIOD_CURRENT,i+1,1)<Параболик(PERIOD_CURRENT,0.02,0.2,i+1))// || Параболик(PERIOD_CURRENT,0.02,0.2,i+1)<=0
              {
               Print("бай, параболик после иф ",Параболик(PERIOD_CURRENT,0.02,0.2,i+1));
               break;
              }
           }
      ЗначениеSAR=NormalizeDouble(Параболик(PERIOD_CURRENT,0.02,0.2,i)/ТИК,0)*ТИК;
      if(БИД>ЗначениеSAR) //bay
         slтики=(int)NormalizeDouble((АСК-ЗначениеSAR)/ТИК,0);
     }
   if(НапрСигнала==ORDER_TYPE_SELL)
     {
      if(SLпоПервойТочкеПараболика==true)
         for(i=0;;i=i+1)
           {
            Print("селл, параболик до иф ",Параболик(PERIOD_CURRENT,0.02,0.2,i+1));
            if(iHigh(PERIOD_CURRENT,i+1,1)>Параболик(PERIOD_CURRENT,0.02,0.2,i+1))// || Параболик(PERIOD_CURRENT,0.02,0.2,i+1)<=0
              {
               Print("селл, параболик после иф ",Параболик(PERIOD_CURRENT,0.02,0.2,i+1));
               break;
              }
           }
      ЗначениеSAR=NormalizeDouble(Параболик(PERIOD_CURRENT,0.02,0.2,i)/ТИК,0)*ТИК;
      if(БИД<ЗначениеSAR) //sell
         slтики=(int)NormalizeDouble((ЗначениеSAR-БИД)/ТИК,0);
     }

Eseguirlo nel tester

JQ      0       Core 1  15:16:37        agent process started
NJ      0       Core 1  15:16:37        connecting to 127.0.0.1:3000
NJ      0       Core 1  15:16:39        connected
GP      0       Core 1  15:16:39        authorized (agent build 328)
LK      0       Tester  15:16:39        EURUSD,H1 (MetaQuotes-Demo): testing of Experts\Отладка.ex5 from 2010.01.01 00:00 to 2010.09.11 00:00 to be started
RH      0       Core 1  15:16:41        common synchronization completed
RS      0       Core 1  15:16:41        3124 bytes of account info loaded
RI      0       Core 1  15:16:41        3768 bytes of group info loaded
MN      0       Core 1  15:16:41        7170 bytes of tester parameters loaded
EL      0       Core 1  15:16:41        275 bytes of selected symbols loaded
IK      0       Core 1  15:16:41        expert file added: Experts\Отладка.ex5. 6597 bytes loaded
LE      0       Core 1  15:16:41        initial deposit 10000.00 USD, leverage 1:100
KO      0       Core 1  15:16:41        successfully initialized
RQ      0       Core 1  15:16:41        23 Kb of total initialization data received
KK      0       Core 1  15:16:41        performance: 72
HP      0       Core 1  15:16:41        EURUSD: symbol synchronized, 2904 bytes of symbol info received
RI      0       Core 1  15:16:43        EURUSD: load 27 bytes of history data to synchronize
MG      0       Core 1  15:16:43        EURUSD: history synchronized from 1993.05.13 to 2010.09.10
MP      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
CD      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
IK      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
ON      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
ER      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
KI      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
QL      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
GP      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
MG      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
CK      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
IN      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
OE      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
EI      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
KL      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
QS      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
GG      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
KJ      0       Core 1  15:16:47        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
EN      0       Core 1  15:16:47        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0

e così via all'infinito, finché non si preme cancel

Expert Advisor sul grafico

PJ      0       Experts 15:27:14        expert Отладка (EURUSD,M20) removed
MR      0       Trades  15:27:18        '677265' : instant buy 0.10 EURUSD at 1.29697
EH      0       Trades  15:27:19        '677265' : accepted instant buy 0.10 EURUSD at 1.29697
GL      0       Trades  15:27:21        '677265' : order #1350474 buy 0.10 EURUSD at 1.29697 done
LH      0       Trades  15:27:21        '677265' : deal #1426626 buy 0.10 EURUSD at 1.29697 done (based on order #1350474)
LI      0       Experts 15:27:56        expert Отладка (EURUSD,M20) loaded successfully
IR      0       Trades  15:28:07        '677265' : instant sell 0.10 EURUSD at 1.29690 sl: 1.30136 tp: 1.29502
IM      0       Trades  15:28:08        '677265' : accepted instant sell 0.10 EURUSD at 1.29690 sl: 1.30136 tp: 1.29502
RK      0       Trades  15:28:10        '677265' : order #1350477 sell 0.10 EURUSD at 1.29690 done
RO      0       Trades  15:28:10        '677265' : deal #1426629 sell 0.10 EURUSD at 1.29690 done (based on order #1350477)

nessun errore nel diario

guarda l'immagine nella scheda Experts; nessun messaggio d'errore

si possono contare i punti parabolici, tutto coincide bene, al dodicesimo, uscire dal ciclo...

 

Mi sono reso conto molto tempo fa che in MQL5 in "quel momento" o in quel... I dati qui o là possono non essere calcolati... Ma non è giusto, bisogna sistemarlo, non scrivere stampelle nel codice

a proposito, è lo stesso con tutti gli altri indicatori, non solo con la parabolica

 
maryan.dirtyn:
Non so cosa sia la fc, ho solo bisogno di sapere come sarà ai campionati.

FC - Forex Club e dire il suo terminale Rumus2.

Hai un account di prova per il campionato? Provatelo e tutto sarà chiaro...

 
Dmitriy2:

Mi sono reso conto molto tempo fa che in MQL5 in "quel momento" o in quel... I dati qui o là possono non essere calcolati... Ma non è giusto, bisogna sistemarlo, non scrivere stampelle nel codice

Devi aggiustarlo, non scrivere stampelle... A proposito, è lo stesso con tutti gli altri indicatori, non solo con il parabolico.

Non moltiplichiamo la discussione.

Questo argomento è stato discusso molte volte. È stato rivisitato non molto tempo fa(https://www.mql5.com/ru/forum/1951)

Тестер стратегий. Помогите разобраться с ошибкой.
Тестер стратегий. Помогите разобраться с ошибкой.
  • www.mql5.com
mq5) handle индикатора объявляется как глобальная переменная, индикатор инициализируется в OnInit() и передается в функцию.
 

Seduto... Guardare...

Non crederò mai che MQL5 e MQL4 siano stati scritti dallo stesso team.((((

MQ4 - volare...

MQ5 è un gioco da ragazzi. Senza offesa - ma...((((

 
alexvd:

Non facciamo una discussione.

Questo argomento è stato discusso più di una volta. È stato rivisitato non molto tempo fa(https://www.mql5.com/ru/forum/1951)

Non ho visto questo thread... stessa cosa...

Il punto è che non ho intenzione di fare stupidamente controlli su ogni linea per tutte le occasioni, confondendo e ingombrando il codice. Se questo è fuori questione allora... si aggiungono le stampelle, un progetto abbastanza grande è finalmente completamente rifatto e funzionante...

E in generale, sono solo stupito di questo approccio... Si scopre che non è la prima volta che si pone una tale domanda (e sono sicuro che più di una volta in futuro si presenterà in altre persone), e ogni volta "per la prima volta" a spendere un sacco di tempo di lavoro tuo e di altri per spiegare che cosa è necessario fare per aggirare questo bug ...

L'unica cosa da fare è aggiungere in TESTER che raccomandato in quel thread solo UN sonno (1000) all'inizio di Expert Advisor.

Non deve essere tale che la shell implichi dei glitch, e questi glitch devono essere evitati nel codice. E il TERMINALE funziona bene e correttamente, non ci sono ERRORI (in questa situazione). Ma il funzionamento del tester è DIVERSO da quello del terminale.

ps EQU ciao:)