Piccolo Moneymanagement-Indicator rovinato dal nuovo MQL4 - pagina 3

 
mar:

angevoyageur, credo che tu non abbia visto questo mio post:

mar 2014.04.02 08:16 #

Hai ragione... Non posso evitarlo :-)

"Quello che volevo dire è: posso aspettare che l'aggiornamento sia completato prima di procedere con il calcolo SL? Il problema è che non posso dare a SL un valore casuale perché allora l'intero indicatore è inutile. Quindi vorrei controllare l'errore 4066 e se si verifica, vorrei aspettare in qualche modo e controllare di nuovo prima di andare avanti".

Lì puoi vedere che descritto che non posso seguire il consiglio e siccome sono arrivato a quella soluzione puoi anche vedere che ho sicuramente controllato quello che qjol mi ha consigliato.

No, qjol ha scritto :

quindi devi controllare se una delle variabili è uguale a 0.... in caso di evitare lo zero divide

E dopo si segnala un errore di zero divide. Ma è come desideri.

 
mar:

Un altro esempio:

Se aprite la MetaTrader, il risultato sarà zero! E rimane zero finché non si cambia il timeframe o la coppia. Penso che questo sia esattamente il problema dell'errore di divisione per zero. Non credi anche tu?

Hai provato questo nel fine settimana, quando non c'erano tick in arrivo? Questa è l'unica ragione che mi viene in mente per cui il commento non si aggiornerebbe.
 
GumRai:

Hai provato questo nel fine settimana, quando non c'erano zecche in arrivo? Questa è l'unica ragione che mi viene in mente per cui il commento non si aggiornerebbe.

Anche qui. Nessuna zecca, nessun aggiornamento.
 

No, ho provato oggi. Arrivano molti tick, nessun aggiornamento di AccountBalance. Ho aspettato quasi un minuto ma AccountBalance era ancora a zero.


Il fatto è che questo problema non si è mai verificato negli ultimi anni. Da quando la nuova MetaTrader è stata lanciata questo problema esiste. Quindi non credo che abbia a che fare con il codice. Ci devono essere dei cambiamenti interni alla piattaforma stessa che fanno fallire questo codice. E questo indicatore è solo una linea di commento e fallisce. Quindi deve essere un problema di piattaforma/dati.

 
mar:

No, ho provato oggi. Arrivano molti tick, nessun aggiornamento di AccountBalance. Ho aspettato quasi un minuto ma AccountBalance era ancora a zero.


Il fatto è che questo problema non si è mai verificato negli ultimi anni. Da quando la nuova MetaTrader è stata lanciata questo problema esiste. Quindi non credo che abbia a che fare con il codice. Ci devono essere dei cambiamenti interni alla piattaforma stessa che fanno fallire questo codice. E questo indicatore è solo una linea di commento e fallisce. Quindi deve essere un problema di piattaforma/dati.


Sei sicuro che l'indicatore sia esattamente lo stesso del codice che hai postato?

Sembra che tu stia controllando un indicatore che ha il codice di una linea in init e non in start

 

Ho già risposto a tutte le tue domande (inclusa la domanda futura riguardante questo problema) ma forse non le hai lette attentamente allora lascia che lo faccia di nuovo


qjol:

ovviamente non puoi evitare l'aggiornamento ;-) ma devi evitare una situazione di "zero divide"

quindi devi controllare se una delle variabili è uguale a 0.... nel caso in cui eviti lo zero divide

e siccome non puoi fermare un indicatore, devi trovare una soluzione


mar:


posso aspettare che l'aggiornamento sia completato prima di continuare con il calcolo SL?

no non puoi (già scritto sopra)

qjol:
e perché non puoi fermare un indicatore devi capire qualcosa


mar:


Il problema è che non posso dare allo SL un valore casuale perché poi l'intero indicatore è inutile.


Ti ho già dato una soluzione

SL = MathFloor((iATR(NULL, PERIOD_D1, 7, 0)*MathPow(10,Digits-exp)+1)*0.1);
if (SL == 0) // because error 4066 (for example)
   {
   SL = Someting;
   }
lots=MoneyRisk/SL/(MarketInfo(Symbol(), MODE_TICKVALUE)*multi);


è casuale solo fino a quando l'aggiornamento è finito (non più di 2-3 secondi più o meno) (IMHO è meglio che ricevere un messaggio di errore e che l'indicatore non funziona affatto)

se hai un'altra soluzione sentiti libero di usarla, non c'è bisogno del mio permesso ;-)


mar:


Passa a qualsiasi timeframe che ti piace, tranne D1. Poi trascina l'indicatore sul tuo grafico. Il risultato sarà un errore come sopra. Mi sembra che l'ATR(5) del grafico giornaliero non sia corretto a causa della mancanza di DATI GIORNALIERI. Aprire un grafico "fresco" nel timeframe D1 non causa alcun problema. E quando si passa a un altro timeframe allora va bene anche perché l'ATR(5) è corretto. Ho notato che posso passare a qualsiasi coppia finché resto nel grafico D1. Ma passare ad altre coppie in altri timeframe diversi da D1 causa problemi finché MetaTrader non ha ricevuto i dati giornalieri. Quindi, la mia domanda è ora, come posso ottenere i dati giornalieri che il mio calcolo dell'ATR è corretto quando apro un nuovo grafico in un timeframe che non è D1?


perché stai usando iATR .. PERIOD_D1 e ancora ... devi aspettare che la coppia giornaliera finisca l'aggiornamento (2-3 sec. a meno che tu non usi una connessione dial up)

 

qjol, mi dispiace per tante incomprensioni! Ora capisco che mi hai detto di alimentare l'indicatore con dei dati casuali solo perché così la divisione per zero scompare. Inoltre non ho pensato al fatto che dopo un aggiornamento dei dati l'indicatore usa il valore corretto. Mi dispiace di essere stupido... :D

Ma comunque la domanda è ancora aperta: perché diavolo funzionava prima? Cosa c'è di sbagliato nella nuova MetaTrader?

 
mar:


Ma tuttavia la questione è ancora aperta: perché diavolo funzionava prima? Cosa c'è di sbagliato nella nuova MetaTrader?


non riguarda la vecchia o la nuova MT4, ma il modo in cui gli indicatori funzionano e vengono eseguiti
poiché gli indicatori "non possono aspettare" e vengono eseguiti immediatamente
ma, in questo momento non hai dati per iATR ... PERIOD_D1 quindi è uguale a 0
ecco perché si ottiene zero dividere
 
Questo è assolutamente chiaro per me. Ma io uso questo indicatore da molto tempo e non ho mai avuto problemi di dati mancanti o cose del genere. Quindi mi chiedo perché questo è successo la prima volta che uso la versione build-625 di MT4.
 
mar:

No, ho provato oggi. Arrivano molti tick, nessun aggiornamento di AccountBalance. Ho aspettato quasi un minuto ma AccountBalance era ancora a zero.


Il fatto è che questo problema non si è mai verificato negli ultimi anni. Da quando la nuova MetaTrader è stata lanciata questo problema esiste. Quindi non credo che abbia a che fare con il codice. Ci devono essere dei cambiamenti interni alla piattaforma stessa che fanno fallire questo codice. E questo indicatore è solo una linea di commento e fallisce. Quindi deve essere un problema di piattaforma/dati.

Sei sicuro che l'indicatore sia esattamente lo stesso del codice che hai postato?

Sembra che tu stia controllando un indicatore che ha il codice di una linea in init e non in start

Motivazione: