[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 670
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Qual è la probabilità che un nuovo tick arrivi prima che tutti i calcoli dell'EA corrente siano completati? Mi sembra che solo in questo caso i dati diventino vecchi e irrilevanti.
Ho controllato quanto tempo conta il tuo codice - anch'io, proprio di recente ho avuto i miei dubbi, è la velocità di calcolo di MT4 abbastanza per il mio EA, si è scoperto che è sufficiente per ora, il mio codice prende circa 18 ms, cioè in 1 secondo si è controllato 55 volte, i tick vengono da 10 a 70 al minuto, se più di 50 tick al minuto, significa che c'è una candela
prova a vedere come funziona il tuo codice, come questo
ecco l'indicatore che conta i tick - per la riconciliazione
Beh, se avete un prezzo di apertura, mi dispiace che mi sia sfuggito
OpnPrice =iOpen(NULL,PERIOD_M5,0); si può cambiare solo ad una barra chiusa - il codice sopra con la condizione if (counted != barM1) {
Come cambiare il numero di cifre dopo il punto decimale dell'indicatore iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0) quando si calcola nel corpo esperto? Il risultato viene visualizzato con 4 (cioè 0,0001), mentre dovrebbe essere visualizzato con 5 (ad esempio 0,00012) per un'analisi accurata. E il terminale MT4 visualizza valori a 5 cifre nella finestra dell'indicatore sul grafico.
L'operatore NormalizeDouble() risolverà i vostri problemi.
Cioè, NormalizeDouble(iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0),5) risulterà nel desiderato 0,00012 ?
P.S. Aggiunto e testato - niente. L'uscita è solo 0,00010, che è lo stesso 4 bit...
No, non proprio, Roger.
IndicatorDigits() vedere Boris. Ma deve essere inserito nell'indicatore stesso, perché si riferirà ad esso, non all'EA.
P.S. Un'altra cosa: questa funzione è adatta solo all'indicatore per il quale avete il codice. Poi sarà possibile chiamarlo usando iCustom().
E per quelli che si chiamano "standard" come iMACD(), non conosco la soluzione giusta.
Quindi, il risultato di NormalizeDouble(iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0),5) sarà il desiderato 0,00000 ?
Sì, proprio così. La frase chiave era nel calcolo nel corpo dell'EA? E apparentemente con l'indicatore standard questo è impossibile (((
Come cambiare il numero di cifre dopo il punto decimale dell'indicatore iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0) quando si calcola nel corpo esperto? Il risultato viene visualizzato con 4 (cioè 0,0001), mentre dovrebbe essere visualizzato con 5 (ad esempio 0,00012) per un'analisi accurata. E il terminale MT4 visualizza valori a 5 cifre nella finestra dell'indicatore sul grafico.
Non dovresti cambiare nulla, la precisione negli indicatori standard è impostata al massimo (fino a 8 cifre), hai fatto una conclusione sbagliata sulla precisione di uscita dei dati perché Print() emette fino a 4 cifre per impostazione predefinita, nei calcoli (nel budello di Expert Advisors per esempio) viene utilizzata la massima precisione, è necessario emettere il doppio attraverso DoubleToStr() come esempio:
e otteniamo questo risultato:
Non hai bisogno di cambiare nulla, negli indicatori standard la precisione è impostata al massimo (fino a 8 cifre), hai fatto una conclusione sbagliata sulla precisione di uscita dei dati perché Print() emette fino a 4 cifre per impostazione predefinita, nei calcoli (nel budello di Expert Advisors per esempio) viene utilizzata la massima precisione, per vedere questo è necessario emettere il doppio tramite DoubleToStr(), come esempio:
e otteniamo un tale output:
Giusto, giusto, giusto! ! ! Anatoly - grandi complimenti, mi stavo impuntando su questo.
La verità della vita è "una testa è buona, ma due sono meglio" (citazione)
Non c'è bisogno di cambiare nulla, gli indicatori standard sono impostati sulla massima precisione (fino a 8 cifre)
È vero, ho avuto lo stesso sospetto :)