Errori, bug, domande - pagina 775

 
Neofit:

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.

 
Renat:

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".

for(int i=0;i<100;i++)
        {int p99=CopyBuffer(MaHandle1,0,0,n_analyzed_bars+shift_offset+2,MaBuffer1);
         if(CopyBuffer(MaHandle1,0,0,n_analyzed_bars+shift_offset+2,MaBuffer1)>0)       break;
         else  
         {
           Print("Getting MA is failed! Error",GetLastError()); 
           int err=GetLastError(); 
             Sleep(500);    
           //return(0);
         } 
         
        }
  
 
papaklass:
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)?

[Eliminato]  

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?).

Генетические алгоритмы - это просто!
Генетические алгоритмы - это просто!
  • 2010.05.25
  • Andrey Dik
  • www.mql5.com
В статье автор расскажет об эволюционных вычислениях с использованием генетического алгоритма собственной реализации. Будет показано на примерах функционирование алгоритма, даны практические рекомендации по его использованию.
 
Figar0:

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.

[Eliminato]  
Renat:

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.

Renat:

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.

File:
clear.zip  1 kb
 
R0MAN:

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

 
WWer:

Aiuto di MetaTrader 5 → Guida introduttiva → Struttura delle cartelle e dei file

Grazie. Lo leggerò...