![MQL5 - Linguaggio delle strategie di trading integrato nel client terminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Se siete interessati al calcolo dei dati di un altro indicatore, potete farlo nel modo seguente. In primo luogo, creiamo un altro indicatore con il proprio metodo di calcolo dei dati, e poi prendiamo l'handle di questo indicatore(MQL5 Reference Guide / Technical Indicators / iCustom ) e questo handle viene utilizzato nel nuovo indicatore. Guarda attentamente l'esempio. Se avete domande sull'esempio
Ho delle domande, ancora non lo capisco.
Ok, prendiamo Custom Moving Average.mq5 come base.
aggiungere la nuova procedura di lisciatura MODE_MYMA - nessun problema.
La domanda è come alimentare i dati. attraverso l'i-cast di un altro indicatore? ok. prendiamo come esempio un qualsiasi indicatore fatto dal secondo modulo (se l'indicatore è fatto dal primo modulo... non so come prendere l'alto-basso... quindi significa solo il secondo modulo?)
Ok, dichiariamo
int newHandl;
definirlo nell'onInit (parabolico, cioè qualunque cosa, l'importante è il 2° tipo, giusto? Ho capito come implementare il mio)
newHandl=iCustom(_Symbol,0, "ParabolicSAR.mq5",0.02,0.2);
e poi in onCalculate lo alimentiamo al posto del prezzo standard?
CalculateEMA(rates_total,prev_calculated,begin,newHandl);???
giura. o cosa? per favore spiegami, non capisco... (((((
Sì, sto ancora usando i modelli mcl4. lì, è semplice - loop, dati (qualsiasi!) prendere, smussare, uscita.
Ma qui.... Non so a cosa aggrapparmi...
(se l'indicatore è fatto dalla prima forma... non ho capito da dove prendere l'alto-basso... quindi significa solo dalla seconda forma?)
Sì, riguardo all'alto-basso era solo un esempio, come trattare gli articoli da soli. Per la prima forma puoi prendere il compito di disegnare la linea close[i]/2 [o sqrt(close[i]/2 )]. In generale, si può arrivare a un mucchio di varianti usando anche un singolo array.
OK, dichiariamo
int newHandl;
in onInit definirlo (come esempio - parabolico. comunque, la cosa principale è il 2° tipo, giusto? come implementare il proprio è più o meno chiaro)
newHandl=iCustom(_Symbol,0, "ParabolicSAR.mq5",0.02,0.2);
Va bene. Lo finirò ora.
Se il manico dell'indicatore è corretto, significa che possiamo indirizzare ai buffer di questo indicatore. Guarda di nuovo l'esempio da MQL5 Reference / Technical Indicators / iCustom C'è una linea:
Ora leggete MQL5 Reference / Access to Timeseries and Indicators / CopyBuffer (...Ancora: molte cose diventano chiare quando si analizzano gli esempi riga per riga).
Prova a ricevere i dati di qualsiasi buffer di indicatori che hai selezionato. Non ho un terminale, ma in parabolica si può vedere quali buffer sono calcolati e la loro numerazione.
Domanda sulla descrizione delle funzioni ArrayIsSeries() e ArrayGetAsSeries().
C'è una frase del genere nel Manuale di riferimento:"Gli array passati nella funzione riflettono i dati dei prezzi, cioè, questi array hanno il segno della serie temporale e la funzione ArrayIsSeries() restituirà true quando controlla questi array . Ma comunque, in ogni caso, la direzione di indicizzazione dovrebbe essere controllata solo con la funzione ArrayGetAsSeries()".
Ne consegue da una lettura letterale che anche se la funzione ArrayIsSeries() restituisce true (cioè conferma che l'array controllato è un array di serie temporali), comunque la direzione di indicizzazione dovrebbe essere controllata solo dalla funzione ArrayGetAsSeries(). Allora non capisco la ragione di introdurre la funzione ArrayIsSeries() se i suoi risultati devono essere comunque controllati ulteriormente. Qual è il punto? È possibile che l'array sia una serie temporale, ma la sua direzione di indicizzazione non sarà la stessa di una serie temporale (il flag AS_SERIES non sarà impostato)?
Durante il porting da Mql4 a Mql5 è spuntato un errore Lot:
'Lot' - la costante non può essere modificata
Come correggere?
Durante il porting da Mql4 a Mql5, si è verificato un errore di lotto:
'Lot' - la costante non può essere modificata
Come si risolve il problema?
Non si può. Non è un bug, è una caratteristica. :)
In mql5 le variabili di input non sono modificabili (const).
Fare un semplice disaccoppiamento:
Nella sezioneMQL5 Manual / Array Operations / ArraySetAsSeries, c'è un esempio in cui la funzione ArraySetAsSeries() si applica all'array const datetime&time[] ad ogni tick:
È questo che tutti fanno (capovolge l'array ad ogni tick) per lavorare con l'array come una serie temporale?
Un'altra domanda: gli array usati da OnCalculate() possono cambiare arbitrariamente la loro direzione di indicizzazione? O è sufficiente controllare questa direzione una volta?
Durante il porting da Mql4 a Mql5 un errore SymbolInfoDouble:
'SymbolInfoDouble' - nessuno degli overload può essere applicato alla chiamata di funzione
Come posso correggerlo?
Durante il porting da Mql4 a Mql5, è apparso l'errore SymbolInfoDouble:
'SymbolInfoDouble' - nessuno degli overload può essere applicato alla chiamata di funzione
Come posso correggerlo?
Perché c'è uno 0 in basso?
https://www.mql5.com/ru/docs/constants/environment_state/marketinfoconstants#enum_symbol_info_double
E oltre a questo, controllate la divisione per 0.
I risultati del tester di strategia sono visualizzati in grafici:
Potete dirmi dove trovare il significato dei diversi colori sulle tabelle?
I risultati del tester di strategia sono visualizzati in grafici:
Potete dirmi dove trovare il significato dei diversi colori sulle tabelle?