Quando provo a testare su usdjpy ottengo un messaggio come questo:
e sembra andare avanti all'infinito, quando è arrivato a 3000 l'ho spento. I test hanno provato a passare su 2010.10.01 - 2010.10.10, solo i prezzi di apertura.
bild 401
Inoltre non riesco a far partire un altro agente remoto, ecco il log:
ha anche osservato un modello simile ieri... Sembra che l'intera storia sia stata sovraccaricata e apparentemente ci sono stati alcuni problemi.
Mi sembra di aver aspettato la fine del processo o di aver riavviato il terminale.
Ho trovato una cosa interessante ieri. dopo aver ricompilato l'EA, le modifiche non funzionano nel tester fino a quando non si riavvia il terminale - questo è lo stagno!!!
Da ieri, gli esperti hanno iniziato a vivere la loro vita digitale.
Durante i test dà una messa a fuoco casuale... Salta la funzione OnInit() in qualche modo magico, poi genera un errore di array fuori portata nella funzione DeInit().
Il fatto è che con gli stessi parametri può iniziare ed eseguire l'intero test, oppure può andare in crash.
Ecco la sfida: rendere dinamico il parametro dell'indicatore, quando si chiude una posizione si cambia uno dei parametri dell'indicatore, quindi questa è la sfida.
Ora la mia soluzione:
Posso dire che questo codice funziona come i test mostrano un risultato diverso, ma non è chiaro perché funziona t.s. una volta ogni tanto, ho guardato nel log - 1 settimana tutto funziona come dovrebbe, poi va in loop e produce gli stessi valori nel buffer, anche se questo è impossibile (2 settimane gli stessi valori nel log del tester), se non va in loop allora scrive solo un errore:
messaggio via Alert
Per quanto ho potuto capire, l'Expert Advisor crea un handle di qualche indicatore quando appare una nuova barra e allo stesso tempo richiede di copiare i buffer di questo indicatore. Ma questo non risolve la situazione in cui potrebbe essere necessario del tempo per calcolare i buffer degli indicatori. In altre parole, l'handle dell'indicatore può essere creato con successo, ma i buffer dell'indicatore non sono ancora stati calcolati.
Статья о традиционных и не совсем традиционных алгоритмах усреднения, упакованных в максимально простые и достаточно однотипные классы. Они задумывались для универсального использования в практических разработках индикаторов. Надеюсь, что предложенные классы в определенных ситуациях могут оказаться достаточно актуальной альтернативой громоздким, в некотором смысле, вызовам пользовательских и технических индикаторов.
Yedelkin: Per quanto sono riuscito a capire, l'Expert Advisor crea un indicatore handle quando appare una nuova barra e allo stesso tempo richiede di copiare i buffer di questo indicatore. Ma la situazione non è elaborata, quando il calcolo dei buffer degli indicatori può richiedere del tempo. In altre parole, l'handle dell'indicatore può essere creato con successo, ma i buffer dell'indicatore non sono ancora stati calcolati.
Sì, sono d'accordo - è per questo che ho provato questo design:
//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+voidOnTick()
{
if (isNewBar()==true && proverkaHANDLA()==true)
{
if (!PositionSelect(Symbol1) && !PositionSelect(Symbol2))
{
BSOpen();
}
}
}
//+==================================================================+bool proverkaHANDLA()
{
ArraySetAsSeries(Sp1Buffer,true);
ArraySetAsSeries(Sp2Buffer,true);
//----------------------
vhandle=iCustom(NULL,0,"МТ5",Symbol1,100,Lots,1,Close());
if(vhandle<0)
{
Alert("Ошибка при создании индиката: ",GetLastError());
return(0);
}
if(CopyBuffer(vhandle,0,0,50,Sp1Buffer)<0 || CopyBuffer(vhandle,1,0,50,Sp2Buffer)<0)
{
Alert("Ошибка копирования буферов индикатора номер ошибки:",GetLastError());
return(0);
}
return (true);
}
Sì, sono d'accordo - è per questo che ho provato questo design:
Per ora funziona! Grazie per il vostro aiuto
Un tale costrutto salta i casi in cui "l'handle è stato creato, ma i buffer degli indicatori non sono ancora stati calcolati". Poiché la costruzione stessa è chiamata una volta per periodo, si può provare a chiamare la funzione CopyBuffer() più volte. Cioè se CopyBuffer()<0, allora chiama ripetutamente la funzione, finché il periodo selezionato lo permette (entro il periodo di tempo selezionato).
Bene, è così. La vostra funzione proverkaHANDLA() è un blocco indipendente, che internamente fa riferimento aCopyBuffer() solo una volta.Di conseguenza, se i buffer non vengono calcolati, salterà sempre fuori di nuovo. Finora la vostra funzione proverkaHANDLA() non gestisce la situazione "handle creato, ma buffer dell'indicatore non ancora calcolato", ma la ignora.
Yedelkin: Questa costruzione salta i casi in cui "l'handle è stato creato, ma i buffer degli indicatori non sono ancora stati calcolati". Poiché la costruzione stessa viene chiamata una volta per periodo, si può provare a chiamare ripetutamente la funzione CopyBuffer(). Cioè se il CopyBuffer()<0, allora ripetere la chiamata della funzione, finché il periodo selezionato lo permette (entro il periodo di tempo selezionato).
Cioè, mentre CopyBuffer>0 lo calcoliamo, e il nuovo parametro (Close()
appare alla chiusura della posizione. Cioè, abbiamo bisogno di un ciclo attraverso While. Si scopre così.
Quando provo a testare su usdjpy ottengo un messaggio come questo:
e sembra andare avanti all'infinito, quando è arrivato a 3000 l'ho spento. I test hanno provato a passare su 2010.10.01 - 2010.10.10, solo i prezzi di apertura.
bild 401
Inoltre non riesco a far partire un altro agente remoto, ecco il log:
ha anche osservato un modello simile ieri... Sembra che l'intera storia sia stata sovraccaricata e apparentemente ci sono stati alcuni problemi.
Mi sembra di aver aspettato la fine del processo o di aver riavviato il terminale.
Ho trovato una cosa interessante ieri. dopo aver ricompilato l'EA, le modifiche non funzionano nel tester fino a quando non si riavvia il terminale - questo è lo stagno!!!
Completamente solidale - forse servicedesk? (chiudilo cento volte)
Da ieri, gli esperti hanno iniziato a vivere la loro vita digitale.
Durante i test dà una messa a fuoco casuale... Salta la funzione OnInit() in qualche modo magico, poi genera un errore di array fuori portata nella funzione DeInit().
Il fatto è che con gli stessi parametri può iniziare ed eseguire l'intero test, oppure può andare in crash.
Ecco la sfida: rendere dinamico il parametro dell'indicatore, quando si chiude una posizione si cambia uno dei parametri dell'indicatore, quindi questa è la sfida.
Ora la mia soluzione:
Posso dire che questo codice funziona come i test mostrano un risultato diverso, ma non è chiaro perché funziona t.s. una volta ogni tanto, ho guardato nel log - 1 settimana tutto funziona come dovrebbe, poi va in loop e produce gli stessi valori nel buffer, anche se questo è impossibile (2 settimane gli stessi valori nel log del tester), se non va in loop allora scrive solo un errore:
messaggio via Alert
Per quanto sono riuscito a capire, l'Expert Advisor crea un indicatore handle quando appare una nuova barra e allo stesso tempo richiede di copiare i buffer di questo indicatore. Ma la situazione non è elaborata, quando il calcolo dei buffer degli indicatori può richiedere del tempo. In altre parole, l'handle dell'indicatore può essere creato con successo, ma i buffer dell'indicatore non sono ancora stati calcolati.
Sì, sono d'accordo - è per questo che ho provato questo design:
Per ora funziona! Grazie per il vostro aiuto
Ma ogni tanto cede:
Sì, sono d'accordo - è per questo che ho provato questo design:
Per ora funziona! Grazie per il vostro aiuto
Ma ogni tanto lo fa:
Bene, è così. La vostra funzione proverkaHANDLA() è un blocco indipendente, che internamente fa riferimento aCopyBuffer() solo una volta.Di conseguenza, se i buffer non vengono calcolati, salterà sempre fuori di nuovo. Finora la vostra funzione proverkaHANDLA() non gestisce la situazione "handle creato, ma buffer dell'indicatore non ancora calcolato", ma la ignora.
Questa costruzione salta i casi in cui "l'handle è stato creato, ma i buffer degli indicatori non sono ancora stati calcolati". Poiché la costruzione stessa viene chiamata una volta per periodo, si può provare a chiamare ripetutamente la funzione CopyBuffer(). Cioè se il CopyBuffer()<0, allora ripetere la chiamata della funzione, finché il periodo selezionato lo permette (entro il periodo di tempo selezionato).
Cioè, mentre CopyBuffer>0 lo calcoliamo, e il nuovo parametro (Close()
appare alla chiusura della posizione. Cioè, abbiamo bisogno di un ciclo attraverso While. Si scopre così.