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
Nessun problema, angevogeur
Il codice era originariamente questo:
L'ho semplicemente modificato in questo:
Come puoi vedere, non ho cambiato la "carne" delle funzioni. Ho semplicemente fatto le modifiche necessarie per conformarsi alla nuova funzionalità. Una cosa su cui sono ancora un po' confuso è il cambiamento da start() a OnStart() o OnTick(), qualunque sia (l'ho dimenticato al momento, ma sto ancora usando start() senza problemi. Dovrei menzionare che questo è un indicatore personalizzato. Un'altra cosa di cui mi lamento sono le limitazioni su ciò che puoi usare a seconda che tu stia codificando un EA, un indicatore o uno script. Ci sono alcune cose che hanno senso (come non permettere l'implementazione di trade a meno che non si stia codificando un EA) e altre che non hanno senso (come il divieto di usare un MessageBox in un indicatore). Un'altra cosa che mi preoccupa molto è non avere eventi disponibili per cose come le aperture e le chiusure dei trade. Questo sarebbe davvero utile per quello che sto mettendo insieme in questo momento.
Un esempio di ciò che sto ottenendo con la mia ultima affermazione è questo: Voglio essere in grado di visualizzare un segnale di acquisto se determinati criteri sono soddisfatti, visualizzare un segnale di chiusura della negoziazione se determinati criteri sono soddisfatti, ma voglio anche consentire al mio utente di essere in grado di annullare il segnale di acquisto e aspettare un altro se lo desiderano e idem per il segnale di chiusura. Se scelgono di chiudere il trade, voglio che i segnali Buy e Close Buy scompaiano e che l'indicatore osservi i criteri di entrata per un altro trade. Le parti di cancellazione funzionano perfettamente, ma non posso rilevare gli eventi Open e Close perché MQL4 non fornisce la messaggistica necessaria.
Se avete guardato il mio profilo, avrete visto che non sono affatto un programmatore principiante. Il linguaggio semplicemente non fornisce tutte le funzionalità che un professionista si aspetta e di cui ha bisogno da una moderna piattaforma di sviluppo. Su un'altra nota, non riesco a far funzionare il debugging, che è una grande lamentela. Ho seguito la documentazione, ma quando ho provato a mettere in moto il debugger ho ottenuto un grafico che ha fatto apparire la finestra di dialogo delle proprietà per inizializzare il mio indicatore, ma quando ho premuto Ok per finire la configurazione dell'indicatore il grafico è scomparso e questo è tutto. Forse le cose si perdono nella traduzione dal russo all'inglese e mi manca qualcosa o forse la "torta" non è del tutto cotta. Come professionista so quanto sia monumentale il compito di creare un linguaggio e un ambiente di sviluppo come questo. Le mie osservazioni sono intese più nella natura di FYI per lo staff di sviluppo piuttosto che di lamentele.
Prof
Nessun problema, angevogeur
Il codice era originariamente questo:
Prof
Se non avete dichiarato le variabili che sto impostando e non avete nemmeno i metodi che sto chiamando dichiarati ed elaborati, non si compila. Non può. Mi sarei aspettato che tu lo sapessi. Ho postato quello che pensavo tu stessi chiedendo - la soluzione che ha risolto il mio problema. In ogni caso, se sei con MetaQuotes e stai cercando di capire cosa sta succedendo con MetaTrader e risolverlo, ho postato più sotto. Commentate il blocco if in init(), dichiarate MA_Display_Time_Frame globalmente come un intero e aggiungete questi metodi :
Poiché questo è destinato ad essere un prodotto commerciale, questo non è tutto il codice dell'indicatore, ma questo dovrebbe compilare e potenzialmente causare il problema usando i metodi originali init() e deinit(). È abbastanza per creare un paio di etichette e pulsanti. Come menzionato da uno dei poster, il fallimento era intermittente. Era, comunque, legato a qualsiasi azione che avrebbe causato la deinizializzazione dell'indicatore, come cambiare le proprietà dell'indicatore, cambiare i time frame o fermare e riavviare il terminale. Se volete provare a cambiare le proprietà, aggiungete questi externs ai globali:
Se aggiungete gli externs, non c'è bisogno di commentare il blocco if che fa riferimento ad essi. Questo dovrebbe essere sufficiente per farvi compilare e provare a riprodurre il problema. Il problema non si è più verificato da quando ho cambiato le vecchie funzioni di inizializzazione e deinizializzazione e sono passato alle nuove versioni. Se hai bisogno di qualcos'altro fammelo sapere. Terrò d'occhio il thread.
Ho avuto una situazione simile, l'indi ha funzionato bene quando è caduto sul grafico.
Ha funzionato bene dopo il cambio dei parametri, ha funzionato bene dopo il cambio di Tf.
Dopo aver chiuso MT4 e riavviato, l'indi non è apparso.
Era nella lista degli indicatori sul grafico, ma non funzionava.
Dopo aver aperto la finestra dei parametri e aver cliccato il pulsante OK, l'indi è scomparso immediatamente dalla lista.
Ho provato tutti i trucchi, compresi quelli descritti nei post precedenti, ma niente ha funzionato.
Si è rivelato essere il problema della divisione per 0!
La semplice condizione: if(x!=0) ha risolto il problema.
Sì, ho appena avuto lo stesso problema con un altro indi.
Senza il "se" ogni volta che la piattaforma viene avviata, l'indi ha il problema della divisione per 0,
il nuovo MT4 sembra non avere informazioni memorizzate fino a quando non viene spuntato.
L'altra soluzione sarebbe quella di usare OnCalculate() invece di start() o OnStart(), credo?
Ma questo è qualcosa di cui lamentarsi con MetaQuotes.
Dovete usare il trucco del ritorno (0).
Qualcuno elaborerà un po' se c'è interesse.
Dovete usare il trucco del ritorno (0).
Qualcuno elaborerà un po' se c'è interesse.
Beh, i vecchi indicatori che puoi trovare ovunque su internet non hanno il loro codice modificato automaticamente.
Se qualcuno sa modificare i codici e capisce il problema, può farlo da solo.
Tutti gli altri sono solo destinati a sentire il disagio di non vedere i loro indi ogni volta che aprono MT4.
Se hanno un template, possono usarlo per ripristinare gli indi, ma questo significa farlo ogni volta.
I template sono un'altra storia, nel nuovo Built 625.
Ragazzi,
siete tutti fuori strada. Quello che state descrivendo è un problema di tempistica che è sempre stato un problema. Potete occuparvene molto semplicemente con questo:
Qualsiasi errore di divisione per zero che potreste ottenere è dovuto al fatto che state cercando di fare calcoli prima che il server si sia sistemato. Se state facendo calcoli nella funzione di inizializzazione - NON fatelo! Metti il codice di cui sopra nel tuo start() o OnStart() e POI fai quello che ti serve. Dadas, cercare di renderlo così semplice come stai facendo tu ti farà perdere molto tempo. Sei fortunato con il tuo indi.
Quando un indi scompare, hai un errore di inizializzazione. Se guardi i tuoi log vedrai "fallimento di inizializzazione globale". Devi capire perché lo stai ottenendo e raddrizzarlo. Se non lo fate, tutto quello che avete fatto è mettere un cerotto su un taglio che aveva bisogno di punti e vi si ritorcerà contro.
Mi sembra che questo errore non abbia nulla a che fare con OnInit() e la descrizione dell'errore è fuorviante.
Con una sola linea di codice
Darà l'errore di array fuori range.
Cambiate timeframe e otterrete Global initialisation failed e l'indicatore verrà rimosso dal grafico