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
Grazie per aver risposto.
Sto scrivendo un indicatore... sfortunatamente, il concetto dell'indicatore presuppone - che nel momento in cui arriviamo a OnCalculate la coppia ottimale sarà selezionata, il che suona sospettosamente oscuro.
In generale, nella funzione OnCalculate dovremmo già utilizzare i risultati dei calcoli e delle analisi che sono stati eseguiti in On Init.
Non possiamo trasferire questi calcoli a OnCalculate, perché non abbiamo il tempo di eseguire tutti i calcoli tra due tick vicini...
Tutto viene fuori bene e facilmente.
Spostare l'analisi in una funzione separata e chiamarla da OnCalculate. Se non ci sono dati, allora esci da OnCalculate e aspetta il prossimo tick.
Il fatto che l'indicatore parta davvero dopo 1-2 secondi non è un problema. Un altro modo di lavorare con processi fortemente dipendenti e asincroni non è possibile, solo l'inizializzazione pigra/ondemand.
Questo funziona bene e facilmente.
Spostare l'analisi in una funzione separata e chiamarla da OnCalculate. Se non ci sono dati, allora esci da OnCalculate e aspetta il prossimo tick.
Il fatto che l'indicatore parta effettivamente in 1-2 secondi non è un grosso problema. Un altro modo di lavorare con processi fortemente dipendenti e asincroni è impossibile, solo l'inizializzazione pigra/ondemand.
Grazie per questo suggerimento. Non mi è venuto in mente per qualche motivo. Cercherò di scrivere il mio "pseudo-init", anche se c'è poca speranza. Ho provato ad aspettare in OnInit, non ha funzionato, ho ottenuto LastError 4007
ERRORE_ARRAY_RESIZE_ERROR
4007
Non c'è abbastanza memoria per ridistribuire un array o un tentativo di ridimensionare un array statico
L'array è dinamico, cioè la seconda parte della definizione di errore su"un tentativo di ridimensionare un array statico" è sparita, e non riesco a immaginarecosa significhi " memoriainsufficienteper ridistribuire un array".
Ho provato a fare un indicatore sulla base di un altro indicatore. Il primo indicatore seleziona una coppia e il secondo lavora su questa coppia.
Il consiglio di Renat ha aiutato molto, ho avuto problemi con il trasferimento dei valori iMA nei buffer personalizzati, ho spostato il codice da OnInit a un'altra funzione e con controlli aggiuntivi tutto ha funzionato...ora ci sto lavorando.
ZS Per favore, consiglia il modo più conveniente per tenere traccia dei propri messaggi sul forum. Dove posso vedere tutti i post indirizzati a me (risposte ai miei post)?
Non seguo le innovazioni di MT5 da molto tempo, e quindi probabilmente farò una domanda molto sciocca.
Avvio l'ottimizzazione di un Expert Advisor standard, lento (ricerca completa dei parametri) ma limita questa ricerca completa ad alcuni 10490....
Il log è pieno di alcuni: 2012.07.13 21:48:10 Core 5 genetic pass (494, 2560000) testato con errore "cannot initialize expert"
Allora 2012.07.13 21:49:26 Tester ottimizzazione genetica finito sul passaggio 9353 (di 816310000)
Quale passaggio genetico? Quale ottimizzazione genetica? Superamento completo, giusto?
Ho provato il metodo di ottimizzazione Fast(algoritmo genetico) e ho visto la stessa cosa.
Quale articolo dovrei leggere?).
Non seguo le innovazioni di MT5 da molto tempo, e quindi probabilmente farò una domanda molto sciocca.
Avvio l'ottimizzazione di un Expert Advisor standard, lento (ricerca completa dei parametri) e limita questa ricerca completa a circa 10490....
Quale passaggio genetico? Quale ottimizzazione genetica? Piena forza bruta, giusto?
Nella versione a 32 bit, quando il numero di passaggi supera 1.000.000, si attiva la modalità genetica. La versione a 64 bit ha un limite di 100.000.000 per la forza bruta completa. Questo è descritto nell'aiuto.
È fatto in questo modo per aiutare automaticamente i commercianti a non fare errori evidenti.
Il log è confezionato con alcuni: 2012.07.13 21:48:10 Core 5 genetic pass (494, 256000000) testato con errore "cannot initialize expert".
Devi guardare il codice - o hai perso la memoria o qualcos'altro durante l'inizializzazione di expert.
Nella versione a 32 bit, se il numero di passaggi supera 1.000.000, si attiva la modalità genetica. La versione a 64 bit ha un limite di 100.000.000 per un'esecuzione completa. Questo è descritto nell'aiuto.
È fatto per aiutare automaticamente i commercianti a non fare errori evidenti.
Grazie per la vostra risposta. 100 000 000 sono sufficienti per me.
Devo guardare il codice - o la memoria era insufficiente, o qualcos'altro durante l'inizializzazione dell'Expert Advisor.
EspertoMACD standard....
https://www.mql5.com/ru/forum/1111/page775#comment_234266
Dagli utenti con valutazioni basse, apparentemente i bug non sono rilevanti). La stessa cosa nella nuova costruzione.
OrderCalcProfit(ORDER_TYPE_BUY, "USDJPY", 0.01, 0.01, 0.02, profit_USDJPY_1 );
OrderCalcProfit(ORDER_TYPE_BUY, "USDJPY", 0.01, 200.01, 200.02, profit_USDJPY_2 );
Print("profit_USDJPY_1=", profit_USDJPY_1 ," profit_USDJPY_2=", profit_USDJPY_2 );
(EURUSD,M15) profitto_USDJPY_1=500.0 profitto_USDJPY_2=0.05
Nella variante a croce funziona bene.
Quali cartelle devono essere pulite (rimuovere i log, ...ecc.) per liberare spazio nella directory del terminale. - naturalmente lasciare gli script, gli indicatori, i gufi) per liberare spazio nella directory del terminale? Durante i test e l'ottimizzazione di Expert Advisors, la directory del terminale è diventata di 80 Gigs... È ora di pulirlo.
Idealmente, dovremmo creare qualcosa di simile a 4 - il file clear.bat (cancella tutto ciò che è estraneo, compresa la storia delle quotazioni per i simboli, pulisce i registri e portarlo in conformità con la versione di installazione, naturalmente, lasciando gli script, indicatori e Expert Advisors).
Semmai, puoi darmi un link alla descrizione delle cartelle di MT5?
Potrei cercarlo io stesso e pulire il contenuto delle cartelle manualmente, ma allo stesso modo posso scrivere lo stesso file batch per MT5, nel caso ci sia qualcosa di simile...
Grazie.
Quali cartelle devono essere pulite (rimuovere i log, ...ecc.) per liberare spazio nella directory del terminale. - naturalmente lasciare gli script, gli indicatori, i gufi) per liberare spazio nella directory del terminale? Durante i test e l'ottimizzazione di Expert Advisors, la directory del terminale è diventata di 80 Gigs... È ora di pulirlo.
Idealmente, dovremmo creare qualcosa di simile a 4 - il file clear.bat (cancella tutto ciò che è estraneo, compresa la storia delle quotazioni per i simboli, pulisce i registri e portarlo in conformità con la versione di installazione, naturalmente, lasciando gli script, indicatori e Expert Advisors).
Semmai, puoi darmi un link alla descrizione delle cartelle di MT5?
Potrei cercarlo io stesso e pulire il contenuto delle cartelle manualmente, ma allo stesso modo posso scrivere le batniche per MT5, nel caso ci sia qualcosa di simile...
Grazie.
Aiuto di MetaTrader 5 → Guida introduttiva → Struttura delle cartelle e dei file
Aiuto di MetaTrader 5 → Guida introduttiva → Struttura delle cartelle e dei file