Discussione sull’articolo "Programmatore migliore (Parte 02): Smetti di fare queste 5 cose per diventare un programmatore MQL5 di successo"
Ciao ragazzi,
Sono un noob. Ho molta esperienza di programmazione, ma sto iniziando a scrivere in MQL5, il mio primo linguaggio simile al C++. Ho letto i documenti di riferimento ma non riesco a individuare il mio errore: il valore che mi aspetto venga restituito da expoMA viene stampato/commentato sul mio grafico come 0.0 - sto commettendo un qualche errore di sintassi? Non ho ricevuto alcun problema/errore in fase di compilazione. Qualsiasi suggerimento sarebbe fantastico
void OnTick( { int days = 3; double Ask = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits); double Bid = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits); double movingAverageValues[]; double bidAskAverage = (Ask + Bid)/2; int exponentialMovingAverage = iMA(_Symbol,_Period,MA_Period,0,MODE_EMA,PRICE_CLOSE); ArraySetAsSeries(movingAverageValues,true); CopyBuffer(exponentialMovingAverage,0,0,3,movingAverageValues); double alpha = expoMA(days); double dEMA = bidAskAverage - movingAverageValues[1]; // l'indice 1 qui rappresenta l'EMA del valore t - 1 Comment("The ask price is: " + DoubleToString(Ask,5) + "\n" "The bid price is: " + DoubleToString(Bid,5) + "\n" "The average price is: " + DoubleToString(bidAskAverage,5) + "\n" "The custom expoMA value is: " + DoubleToString(alpha,5) + "\n" "The dEMA value is: " + DoubleToString(dEMA,5)) ; } double expoMA(int days=2) { double alpha = 2 / (days + 1); NormalizeDouble(alpha,5); return(alpha); }
Ciao ragazzi,
Sono un noob. Ho molta esperienza di programmazione, ma sto iniziando a scrivere in MQL5, il mio primo linguaggio simile al C++. Ho letto i documenti di riferimento ma non riesco a individuare il mio errore: il valore che mi aspetto venga restituito da expoMA viene stampato/commentato sul mio grafico come 0.0 - sto commettendo un qualche errore di sintassi? Non ho ricevuto alcun problema/errore in fase di compilazione. Qualsiasi suggerimento sarebbe fantastico
double expoMA(int days=2) { double alpha = 2.0 / (days + 1); //... }
Si sta dividendo 2/4 in numeri interi (0), che poi vengono analizzati in un double. Si dovrebbe invece fare in modo che uno tra il dividendo e il divisore sia un double (in modo che la divisione venga eseguita nel tipo di dati "più dettagliato").
Altre opzioni potrebbero essere (essendo i giorni un int):
double alpha = double(2) / (days + 1); double alpha = 2 / (days + 1.0); double alpha = 2 / double(days + 1);Probabilmente si tratta di un errore di tipo python eheh
Manuel Alejandro Cercos Perez:
Stai dividendo 2/4 in numeri interi (0), e poi questo viene analizzato in un double. Invece, si dovrebbe fare in modo che uno tra il dividendo o il divisore sia un double (in modo che la divisione venga eseguita nel tipo di dati più dettagliato).
Altre opzioni potrebbero essere (essendo i giorni un int):
Probabilmente si tratta di un errore di tipo python ehehCiao Manuel,
Grazie mille! Il suggerimento di cui sopra ha funzionato a meraviglia. Mi hai risparmiato molte ore di lavoro per trovare la causa principale.
Altrimenti lo farete ad ogni tick ricevuto.
L'ultima domanda: prendete l'ora di apertura e aggiungeteci
Complimenti ai traduttori.
Dopo il primo articolo avevo dei dubbi, ma ora sono sicuro che l'autore vuole spiegare ai programmatori idioti che sono degli idioti. Autore, non si offenda, ma l'articolo è scritto per lei. Inoltre, l'arroganza con cui si rivolge ai lettori vanifica il suo lavoro.
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Accetti la politica del sito e le condizioni d’uso
Il nuovo articolo Programmatore migliore (Parte 02): Smetti di fare queste 5 cose per diventare un programmatore MQL5 di successo è stato pubblicato:
Questo è l'articolo da leggere per chiunque voglia migliorare la propria carriera di programmatore. Questa serie di articoli ha lo scopo di renderti il miglior programmatore che puoi essere, non importa quanto tu sia esperto. Le idee discusse funzionano sia per i neofiti della programmazione MQL5 che per i professionisti.
Uso molto la parola novellino in questa serie di articoli per descrivere qualcuno con meno esperienza nella programmazione MQL5 (non ti offendere). Rende facile relazionarsi. Questo non significa che questo articolo sia solo per novellini. Assolutamente no! È per tutti, indipendentemente dall'esperienza di programmazione che hai, perché ciò che ti rende un novellino o meno sono le tue abitudini e comportamenti di programmazione... non anni di programmazione.
Il primo articolo, per coloro che non l'hanno letto, è qui quindi permettetemi di continuare questa missione per trasformare i novellini in professionisti.
Autore: Omega J Msigwa