Errori, bug, domande - pagina 725

 
Snaf: Ho trovato io stesso l'errore nel primo script, ma non ho abbastanza cervello per il secondo .

Bild 630

Questo esempio è scritto usando la nuova build del compilatore MQL5. Ci scusiamo per non averne tenuto conto. Ma uscirà presto. Per favore aspettate un po' e tutto sarà compilato.
 
MetaDriver: Sì, beh, è con la gestione delle stringhe che ho fatto casino. La mia funzione assemblava una lunga stringa da pezzi restituiti da altre funzioni (generazione di programmi OpenCL). Nel debugger è come un orologio - la build si blocca e dice "Acces Violation"... ;)

Stavo per scrivere al Service Desk, ma dal nulla ha funzionato. :) Non sono riuscito a riprodurlo (anche se ho provato a farlo onestamente), quindi perché dovrei mandarlo al service Desk?

Sì, c'è un chiaro problema con CLProgramCreate(). Ho rintracciato specificamente dove nello script c'era il primo errore di esecuzione, ed era in questa funzione. La funzione non restituisce un valore.

Il programma CL sotto forma di stringa sembra essere riprodotto correttamente. Ma il programma CL stesso non viene creato.

 
Quando si testa sui cross c'è una modellazione accurata anche di altri tassi per una corretta conversione dei profitti e dei requisiti di margine.

Provate ad eseguire la visualizzazione e capirete immediatamente il volume dei calcoli basati sul numero di caratteri di sfondo nel marketwatch.
 
Per favore ditemi come unire il mio computer portatile e PC, quando le strategie di test, i computer stanno lavorando attraverso un router, uno via cavo, l'altro via Wi-Fi, provato a creare sul computer desktop file mt5, ho gettato al portatile, aggiunto alla sezione remota, ma i nomi degli agenti sono gli stessi di un computer portatile
 

dal post https://www.mql5.com/ru/forum/1111/page736#comment_185306

ha localizzato il problema nel punto :

- sulla funzione dalla classe CFastFile::ReadInteger

Si è scoperto che in 630/64 sia l'assegnazione della struttura, sia la lettura da array in array si incasinava, anche se la variante peggiore sembra essere la conversione di signed (short/int/char) in unsigned (ushort/uint/uchar).

Da qualche parte ci sono bit extra o offset. Di conseguenza, il programmatore legge un numero molto diverso da quello previsto. Sarà più facile per voi risolvere il problema e ricontrollare nella funzione.

Ma funziona stabilmente nello stesso codice su 4 computer (il codice è grande, non posso allungare la trama).

 
lazarev-d-m:
Per favore ditemi come unire il mio portatile e il PC, quando si testano le strategie, i computer stanno lavorando attraverso un router, uno via cavo, l'altro via Wi-Fi, provato a creare un file mt5 su un computer desktop, lo ha gettato sul portatile, aggiunto alla sezione remota, ma i nomi degli agenti sono gli stessi di un portatile
Non funziona? Terminale cliente / Tester di strategia / Agenti
 
Yedelkin:
Non funziona così? Terminale cliente / Tester di strategia / Agenti
Devo aver fatto qualcosa di sbagliato, ora ho creato di nuovo il file mt5, ora il notebook vede i processori del PC, ma nel test di connessione non va oltre, quale può essere il problema, e devo aggiungere i processori del notebook al PC tester, se non li userò sul PC?
 

Sviluppatori, mi avete conquistato con questo bug! Come si dice, "sto piangendo".

Funzioni da CFastFile ( ::ReadInteger)

        uint ReadArray(uchar &dst[], uint dst_start=0, int cnt=WHOLE_ARRAY) { int r=ArrayCopy(dst, m_data, dst_start, m_pos, cnt); if (r>0) m_pos+=r; return(r); }
        ushort ReadShort() { __2 b={0}; __short d={0}; ReadArray(b.v, 0, 2); d=b; return(d.v); }
        uint ReadInteger(int sz=INT_VALUE)
        {
                if (sz==SHORT_VALUE) { ushort s=ReadShort(); return(s); }
                return(ReadInt());
        }


Ritorna senza senso quando legge SHORT_VALUE.


Ho iniziato a scavare in giro, avvolgendomi la testa intorno a diverse opzioni per leggere da un array.

Si è scoperto che se invece di ushort s=ReadShort() si mette il corpo della funzione ReadShort stessa, tutti i numeri vengono letti normalmente.

Ma poi ho trovato una variante che mi ha fatto davvero piangere.

        uint ReadInteger(int sz=INT_VALUE)
        {
                if (sz==SHORT_VALUE) { ushort s=ReadShort(); if (s==426) Print(s); return(s); }
                return(ReadInt());
        }

Cioè, la funzione Print trasforma magicamente un numero sbagliato s in uno corretto e restituisce il valore corretto.


Cari sviluppatori, rinsavite! State facendo una schifezza!!!

Come compenserete le perdite sul mercato derivanti dal vostro atteggiamento nei confronti del vostro prodotto?

Dopo tutto, MT5 è solo un'enorme risorsa di consumo, che è servita da programmatori di terze parti.

E voi con le vostre azioni negligenti mettete in dubbio la loro competenza e la qualità dei loro programmi!

 
sergeev:

Sviluppatori, mi avete conquistato con questo bug! Come si dice, "sto piangendo".

Funzioni da CFastFile ( ::ReadInteger)

Aspetta, ma questo è il tuo codice della classe CFastFile, vero? Cosa c'entrano gli sviluppatori di piattaforme?

//+------------------------------------------------------------------+
//|                                                         FastFile |
//|                                            Copyright © 2006-2012 |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006-2012"
#property version "1.00"
#property library
 
Renat:

Aspetta, ma questo è il tuo codice della classe CFastFile, vero? Cosa c'entrano gli sviluppatori della piattaforma?



Sì Renat, questo è il mio codice.

Ha funzionato nelle build precedenti. Ma ha smesso di funzionare nell'attuale 630/64.

E continua a funzionare con successo nel 630/32.


Il bug che ho trovato è piuttosto strano e, francamente, spaventoso.