Errori, bug, domande - pagina 492

 
komposter:

Assolutamente, esattamente su tutti.

Grazie per il suggerimento. Ho completamente dimenticato OnTimer(). L'ho fatto attraverso di esso e sono soddisfatto )
 
Rosh:
Quanto era disponibile, tanto è stato ricevuto. Questo è il modo per capirlo. Controlla la profondità della storia disponibile. Assicuratevi che i dati siano disponibili prima di richiederli. Che build hai? Recentemente è stato corretto un bug con la copia dei timeframe mensili, potrebbe essere questo.
In quale build dovrebbe esserci una correzione? C'è un bug nel 489.
 
marketeer:
Quindi non è controllato bene o l'Expert Advisor NON è multivaluta, può solo funzionare su simboli diversi. Il ragionamento è semplice: sapere che le zecche arrivano a simboli diversi in momenti diversi. Di conseguenza, se un Expert Advisor è suTick EURUSD (per esempio), e controlla il tick GBPUSD o anche solo i cambiamenti di tick invece di EURUSD, il risultato sarà diverso. In particolare, una barra formata su EURUSD può avvenire prima della formazione di una barra con lo stesso tempo su GBPUSD. Se scambi GBPUSD due volte sulla stessa barra: la barra GBPUSD precedente sarà ancora considerata come nuova (zero). Per quanto riguarda gli indicatori multi-valuta, tutto è chiaro. Imparare le basi.

Che cazzo è la matematica, un tick è arrivato su 1 coppia, ma se il secondo tick è in ritardo e f...

cioè abbiamo bisogno del prezzo al momento della comparsa di una nuova barra e dei tick

Non gioca un ruolo nel verificarsi di una nuova barra in tutti i simboli, ma è da

La strategia dipende, se non sei uno scalper

 

Vorrei chiedere ancora una volta al team di MQ se ci sono piani per portare la funzione iCustom() a uno stato funzionante.

Al momento, gli sviluppatori di Expert Advisor non possono offrire una soluzione universale utilizzando iCustom(),

dove il cliente può specificare il nome di un indicatore esterno utilizzato dall'Expert Advisor.

A tal fine, il cliente ha bisogno di avere il codice sorgente di Expert Advisor, nonché di inserire manualmente ogni nome di indicatore nel codice di Expert Advisor, il che è abbastanza scomodo, per usare un eufemismo.

C'è anche il problema dell'indicazione esplicita obbligatoria del valore delle celle tampone dell'indicatore.

Se nessun valore (vuoto o non vuoto) è esplicitamente assegnato alle celle del buffer dell'indicatore nel testo dell'indicatore, la funzione iCustom() può riempire le celle indicate nell'Expert Advisor con

con qualsiasi spazzatura. Penso che tale operazione della funzione non possa essere considerata corretta.

 
MoneyJinn:

Vorrei chiedere ancora una volta al team di MQ se ci sono piani per portare la funzione iCustom() ad uno stato funzionante.

Al momento, gli sviluppatori di Expert Advisor non possono offrire una soluzione universale utilizzando iCustom(),

dove il cliente può specificare il nome di un indicatore esterno utilizzato dall'Expert Advisor.

Per fare questo, il cliente ha bisogno di avere il codice sorgente di Expert Advisor, così come di inserire manualmente ogni nome di indicatore nel codice di Expert Advisor, il che è abbastanza scomodo, per usare un eufemismo.

È possibile passare un nome dinamico dell'indicatore chiamato in iCustom, ma l'insieme dei parametri di ogni indicatore personalizzato è diverso.

Purtroppo non conosciamo una soluzione universale alla domanda "come possiamo implementare in modo sicuro la chiamata senza toccare il codice senza sapere cosa e con quali parametri sarà chiamata?

Se ho capito bene, vuoi fare un sistema di plugin, quando un utente terzo imposta qualsiasi nome dell'indicatore con parametri (per esempio, "MyIndicator(10,20,50,100)") nelle impostazioni EA. Per un caso simile con un formato rigido del nome, potete analizzare voi stessi la stringa, formare un blocco di parametri e implementare una chiamata dinamica di iCustom con un diverso insieme di parametri come classe wrapper. In altre parole, diverse varianti di chiamata iCustom con diversi set/numero di parametri saranno nascosti all'interno.


C'è anche il problema di un'indicazione esplicita obbligatoria del valore delle celle del buffer dell'indicatore.

Se nessun valore (vuoto o non vuoto) è esplicitamente assegnato alla cella del buffer dell'indicatore nel testo dell'indicatore, la funzione iCustom() può riempire le celle indicate nell'Expert Advisor con

con qualsiasi spazzatura. Penso che tale operazione della funzione non possa essere considerata corretta.

È impudenza e pura pigrizia dello sviluppatore non riempire il buffer che gli è stato dato a sua completa disposizione.

Il sistema di runtime non sa come usate il buffer dell'indicatore e non ha il diritto di riempirlo con alcuni valori, specialmente durante i momenti di sovra allocazioni di massa (paginazione o aggiornamenti del grafico). L'indicatore è necessariamente avvisato di tutti i casi in cui è necessario ricalcolare attraverso la funzione OnCalculate(...,const int prev_calculated,...) e il parametro prev_calculated.

 
Renat:

In iCustom, è possibile passare un nome dinamico dell'indicatore da chiamare, ma ogni indicatore personalizzato ha il proprio set di parametri.

Purtroppo, non conosciamo una soluzione universale della domanda "Come possiamo implementare in modo sicuro la chiamata senza disturbare il codice, non sapendo cosa e con quali parametri sarà chiamata?

Se ho capito bene, vuoi fare un sistema di plugin, quando un utente terzo imposta qualsiasi nome dell'indicatore con parametri (per esempio, "MyIndicator(10,20,50,100)") nelle impostazioni EA. Per un caso simile con un formato rigido del nome, potete analizzare voi stessi la stringa, formare un blocco di parametri e implementare una chiamata dinamica di iCustom con un diverso insieme di parametri come classe wrapper. In altre parole, diverse varianti della chiamata iCustom con diversi set/numero di parametri saranno nascosti all'interno.

Con la problematica necessità di cambiare il codice, intendevo l'obbligo di specificare esplicitamente il nome dell'indicatore durante i test

nel formato #property tester_indicator "Name.ex5", ma non un numero diverso di parametri dell'indicatore.

Gli indicatori possono essere utilizzati con i parametri predefiniti, selezionando solo il numero di buffer dell'indicatore con il segnale corrispondente.

Renat:

Questa è impudenza e pura pigrizia dello sviluppatore di non riempire il buffer che gli è stato dato a sua completa disposizione.

Il sistema di runtime non sa come usate il buffer dell'indicatore e non ha il diritto di riempirlo con alcuni valori, specialmente durante i momenti di sovra allocazioni di massa (paginazione o aggiornamenti del grafico). L'indicatore è necessariamente avvisato di tutti i casi di necessità di ricalcolo tramite la funzione OnCalculate(...,const int prev_calculated,...) e il parametro prev_calculated.

È davvero difficile assegnare Empty_Value alle celle inutilizzate in iCustom() invece di intasarle con la spazzatura dello stack?

https://www.mql5.com/ru/forum/1111/72233#comment_72233

Si noti che il valore effettivo delle celle del buffer rimane un Vuoto. È iCustom() che fa la manomissione.

 
MoneyJinn:

Per necessità problematica di cambiamenti nel codice, intendevo l'obbligo di specificare esplicitamente il nome dell'indicatore durante i test

nel formato #property tester_indicator "Name.ex5", ma non un numero diverso di parametri dell'indicatore.

Risolveremo ulteriormente la questione - ci sono delle sfumature.

È davvero difficile assegnare Empty_Value alle celle inutilizzate in iCustom() invece di riempirle con spazzatura dallo stack?

https://www.mql5.com/ru/forum/1111/72233#comment_72233

Questo non può essere fatto. Per favore, rileggi la mia risposta.
 
Renat:

Questo non dovrebbe essere fatto. Rileggi la mia risposta, per favore.

La ragione per cui iCustom() assegna valori arbitrari a quelle celle del buffer che non sono effettivamente riempite con nulla non mi è chiara, così come il motivo per cui non può essere evitato in alcun modo.

Suppongo che abbia qualcosa a che fare con l'allocazione della memoria per l'array di dati corrispondente del buffer dell'indicatore.

Una tale operazione di iCustom(), quando è impossibile determinare l'origine e la verità dei dati, mi sembra inammissibile e crea ulteriori rischi per l'utente.

Se iCustom() assegna comunque alle celle del buffer valori arbitrari e incoerenti con quelli reali,

perché non assegna valori uguali a Empty_Value a queste celle come è implementato in MT4?

Così almeno il loro status sarebbe chiaro.

 
Non discuto.
kPeriod2 = kPeriod1 * nextPriod;

Warning : possible loss of data due to type conversion
ma in questo modo
kPeriod2 = round(kPeriod1 * nextPriod - 0.5);

Warning : possible loss of data due to type conversion 
c'è un arrotondamento, lo dice ancora?
 
Lodar:
Non discuto.
ma in questo modo
c'è l'arrotondamento scrive ancora, dovrebbe essere così?


Vedi se tutte le tue variabili sono dello stesso tipo. E poi c'è la sezione diconversione del tipo. L'avvertimento è causato da una conversione implicita di tipo che viene rilevata al momento della compilazione.
Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Основы языка / Типы данных / Приведение типов - Документация по MQL5
Motivazione: