Errori, bug, domande - pagina 594

 
Interesting:

Gli sviluppatori chiederanno in ogni caso di localizzare tutto, creare un'applicazione al SR, allegare un esperto e descrivere tutto nel modo più dettagliato possibile.

Sono gli sviluppatori (li conoscete) e i telepatici si riposano oggi. :)

Va bene.)) Ora lo localizzerò)).

La telepatia non c'entra niente. Il punto è che un tale errore l'ho per la prima volta, e ho pensato che si verifica in alcuni casi specifici, e posso almeno consigliare sul forum in quali casi può essere, e poi io stesso lo risolverò.

Cioè, vorrei sapere, violazione di accesso scrivere (0x-code) e violazione di accesso leggere (0x-code) in quali casi si verifica? Non ho toccato questo programma per circa un mese. Significa che questo problema può aver iniziato a verificarsi dopo qualche build. Forse gli sviluppatori hanno rafforzato i controlli e ora devono scrivere il codice più correttamente. Solo dove cercare un errore in ~20 000 linee di codice? )))

 
tol64:

Va bene.)) Ora lo localizzerò)).

La telepatia non c'entra niente. Il fatto è che questo tipo di errore l'ho avuto la prima volta, e ho pensato che si verifica in alcuni casi specifici, e posso almeno suggerire sul forum, in quali casi può essere, e poi me ne occuperò io stesso.

Cioè, vorrei sapere, violazione di accesso scrivere (0xcode) e violazione di accesso leggere (0xcode) in quali casi si verifica? Non ho toccato questo programma per circa un mese. Significa che questo problema ha iniziato a verificarsi dopo qualche build. Forse gli sviluppatori hanno rafforzato i controlli e ora devono scrivere il codice più correttamente. Solo dove cercare un errore in ~20 000 linee di codice? )))

Provate a convertirlo in C e l'errore si troverà da solo. E in generale - con tali progetti è l'unico modo di scrivere, se non volete problemi in futuro. Purtroppo l'ho capito troppo tardi e ora lo sto riscrivendo :)
 

Signori, per favore consigliate qual è un modo compatto (forse esistono funzioni) per identificare il valore più grande/piccolo di uno dei buffer esistenti? Non solo identificare, ma anche determinare qual è il buffer con il valore più grande/piccolo.

Supponiamo di avere 4 buffer, allora la cosa più semplice che ci viene in mente è di confrontare prima il 1° con gli altri (tipo if(one[0]<two[0] && one[0]<three[0]&& ...etc.). Se è falso, allora confrontate il secondo allo stesso modo e così via. Ma questo è un po' macchinoso.

 
Cmu4:

Signori, per favore consigliate qual è un modo compatto (forse esistono funzioni) per identificare il valore più grande/piccolo di uno dei buffer esistenti? Non solo identificare, ma anche determinare qual è il buffer con il valore più grande/piccolo.

Supponiamo di avere 4 buffer, allora la cosa più semplice che ci viene in mente è di confrontare prima il primo con gli altri (tipo if(one[0]<two[0] && one[0]<three[0]&& ...etc.), poi confrontare il secondo allo stesso modo e così via. Ma questo è un po' macchinoso.

ArrayMinimum restituisce l'indice del valore minimo dell'array, nello stesso modo in cui funziona ArrayMaximum.

Se volete confrontare diversi buffer, potete ottenere i valori estremi e poi confrontarli usando if o fmin, fmax.

 
Cmu4:
Pensi che questo metodo richieda meno risorse della semplice forza bruta che ho scritto sopra?

Assolutamente no,

anche se no, se gli array da cercare sono lunghi 3-4 barre e gli array sono 2-3, sarà più veloce.

 
Urain:

ArrayMinimum restituisce l'indice del valore minimo dell'array, e ArrayMaximum funziona in modo simile.

Se volete confrontare diversi buffer, potete ottenere dei valori estremi e poi confrontarli usando if o fmin, fmax.

Ho appena letto le descrizioni delle funzioni...

ArrayMinimum è un altro esempio, poiché ho bisogno di confrontare il valore della barra 0 e non ho bisogno di cercare la storia dell'array.

fmin confronta solo due buffer, che senso ha? Potrei anche usare lo standard se. Ma poi si ottengono molte condizioni... 4 complessi per il minimo e lo stesso numero per il massimo...

 
Cmu4:

Ora ho letto la descrizione della funzione...

ArrayMinimum è da un'altra direzione - poiché ho bisogno di confrontare il valore della barra 0, e non ho bisogno di cercare la storia dell'array.

fmin confronta solo due buffer, che senso ha? Potrei anche usare lo standard se. Ma poi si ottengono molte condizioni... 4 complessi per il minimo e lo stesso numero per il massimo...

fmin non sta confrontando i buffer, sta confrontando due valori.

Ora il vostro compito è chiaro, dovete trovare un estremo tra i valori paralleli di diversi buffer.

Ora rispondi, hai bisogno di questo solo per i valori zero ? o hai bisogno di ripetere questa azione per molti valori paralleli ?

 
Urain:

fmin non sta confrontando i buffer ma due valori.

Ora il vostro compito è chiaro, dovete trovare l'estremo tra i valori paralleli dei diversi buffer.

Ora rispondete: avete bisogno di questo solo per i valori zero ? o questa azione deve essere ripetuta per molti valori paralleli ?

È necessario per un Expert Advisor che fa trading dal mercato. Quindi, abbiamo bisogno di confrontare i valori di tutti i buffer sulla barra corrente.

Ecco uno screenshot dell'indicatore, sulla barra zero del quale è necessario trovare il buffer massimo e minimo:

 
Cmu4:

Questo è necessario per un EA che fa trading dal mercato. Di conseguenza, i valori di tutti i buffer sulla barra corrente devono essere confrontati.

Ecco uno screenshot dell'indicatore, sulla barra zero del quale è necessario trovare il buffer massimo e minimo:

È più facile allora, assegnare in ordine tutti i valori zero dei buffer in un array (si può anche definire staticamente, perché il numero di buffer è noto in anticipo) e applicare le funzioni ArrayMinimum ArrayMaximum a questo array riassuntivo, il risultato sarà il numero di serie del buffer nell'ordine di assegnazione.
 
Urain:
Allora è semplice, assegnate in ordine tutti i valori nulli dei buffer in un array (potete anche impostarlo staticamente poiché il numero di buffer è noto in anticipo) e applicate le funzioni ArrayMinimum ArrayMaximum a questo array sommario, come risultato otterrete il numero di buffer in ordine di assegnazione.
Grazie, andrà bene! :)
Motivazione: