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
Quale?
L'ho provato su un paio di indicatori. entrambi funzionavano bene, ora no.
2) ci sono spesso problemi quando si cerca di eseguire il test con la connessione ai core (funziona con l'ennesima esecuzione). vedi l'immagine.
Un gruppo di telepati sta già esaminando il tuo problema.
non c'è bisogno di essere un telepate per capire che iCustom() non funziona come dovrebbe.
per testarlo, potete eseguire il codice dell'Expert Advisor:
doppio buffer[];
ResetLastError();
int MA_handle = iCustom(NULL, 0, "Examples\Custom Moving Average", 21, 0, MODE_SMMA);
//int MA_handle = iMA(NULL, 0, 21, 0, MODE_SMMA, PRICE_MEDIAN);
Print("MA_handle = ", MA_handle, " error = ", GetLastError());
int copy = CopyBuffer(MA_handle, 0, 0, 5, buffer);
if (copy == -1) Print("Failed to get Custom Moving Average indicator");
else
for (int i = 0; i < 5; i++) Print("buffer[", i, "] = ", buffer[i];
e verrà visualizzato il messaggio "Failed to get Custom Moving Average indicator values".
Cioè, CopyBuffer dà un errore (restituisce -1) per la maniglia dell'indicatore iCustom(). Se prendiamo l'indicatore standard iMA(), lo stesso codice funziona!
Guardate la direzione di indicizzazione dell'array risultante, forse ha bisogno di essere espansa.
tutto va bene con la direzione di indicizzazione e nelle build precedenti questo funzionava anche. nella 448 e 450 non funzionava.
Ho suggerito molte volte che gli sviluppatori dovrebbero testare più a fondo la funzionalità principale del terminale,
ma da una build all'altra ottengono diversi errori critici invece di quelli critici.
Cioè una cosa viene aggiustata e un'altra cosa che normalmente funzionava si rompe e non c'è una fine in vista.
Lo slittamento prima di copiare i dati, richiede tempo per calcolare l'indicatore, quindi anche se la maniglia ritorna correttamente, i dati non sono ancora stati calcolati,
In generale, si raccomanda di chiamare gli indicatori nell'inite, e richiedere i dati già in OnTick() o altre funzioni speciali.
di nuovo, copi 5 dati dalla barra zero, ma nel copybuffer la barra zero è da qualche parte intorno al 1970 (dipende dalle impostazioni della barra massima), ecco perché ho detto di guardare l'indicizzazione dell'array.
Lo slittamento prima di copiare i dati, richiede tempo per calcolare l'indicatore, quindi anche se la maniglia ritorna correttamente, i dati non sono ancora stati calcolati.
Sleep(1000); // 1 secondo dopo aver chiamato iCustom() ha aiutato, MA. Dovrei ora prendere il tempo di ritardo? Come faccio a sapere quanto tempo ci vorrà per il processo di calcolo?
è sbagliato dare la maniglia corretta dell'indicatore che punta alla spazzatura! e deve aver funzionato correttamente prima perché non c'era questo problema.
in generale, si raccomanda di chiamare gli indicatori nell'initis, e chiedere i dati già in OnTick() o altre funzioni speciali.
Questo è un buon consiglio per me, grazie ) perché se avessi fatto così, non avrei visto il problema...
Di nuovo stai copiando 5 dati dalla barra zero, ma in copyBuffer la barra zero è da qualche parte intorno al 1970 (dipende dalle impostazioni della barra massima), ecco perché ho detto di guardare l'indicizzazione dell'array.
Per quanto ho capito dalla documentazione di aiuto, in CopyBuffer() la barra zero è in realtà "tempo presente", e già quando la copi, l'array è espanso.
Sleep(1000); // 1 sec. dopo aver chiamato iCustom() ha aiutato, MA... Dovrei ora prendere il tempo di ritardo? Come faccio a sapere quanto tempo impiegherà il processo di calcolo?
è sbagliato dare la maniglia corretta dell'indicatore che indica la spazzatura! e deve aver funzionato correttamente prima, perché non c'era questo problema.
Le seguenti opzioni dell'indicatore (cerchiate in rosso) possono essere impostate programmaticamente?
Non ho trovato un modo per farlo.
Non so se questo è un bug, ma penso che ci siano errori nel codice delle librerie per tutti i tipi di muvings (SignalFrAMA, SignalAMA, SignalMA, SignalDEMA, SignalTEMA) per il master, vediCSignalTEMA::ShortCondition()
Anche nella libreria SignalMA in
Non so se questo è un bug, ma penso che ci siano errori nel codice delle librerie per tutti i tipi di muvings (SignalFrAMA, SignalAMA, SignalMA, SignalDEMA, SignalTEMA) per il master, vedi CSignalTEMA::ShortCondition()
Anche nella libreria SignalMA in
https://www.mql5.com/ru/forum/1111/page391#comment_67358
Indicare la linea completa della chiamata.
/i:<percorso della cartella MQL5>.
Dare la stringa di chiamata completa.
Ecco tutte le opzioni provate:
Dopo ogni tentativo, è stato effettuato un controllo per vedere se il file esisteva nel percorso
D:\Users\Дмитрий\AppData\Roaming\MetaQuotes\Terminal\44 D6FB562C883F0C70690F3306A3851D\MQL5\Scripts\sInstallerTestScript.ex5
L'intruso sul sentiero
D:\Users\Дмитрий\AppData\Roaming\MetaQuotes\Terminal\44 D6FB562C883F0C70690F3306A3851D\MQL5\Include\InstallerTestInclude\IncInstallerTest.mqh
esiste.
Il controllo dell'esistenza è stato eseguito dalla funzione: