Eseguire lo script attraverso Expert Advisor - pagina 3

 
Dadas:


C'è un modo per innescare uno script in un ciclo controllato da qualche ticker, come ogni 50ms o qualcosa del genere?

Non dai tick di MT4?


Cercherò di rispondere da solo:

Non è possibile, perché la funzione start() viene eseguita dalle nuove quotazioni, cioè dai tick del broker.

Quindi, anche se avete un ciclo all'interno della funzione start(), questo lo fa solo quando arriva un nuovo tick.

Ecco perché non puoi vincere contro il broker!

Tuttavia, quando ho eseguito il mio EA come uno script come questo:

int start() {

while(1==1) {

MyEA();

}
}

il mio computer ha iniziato a rallentare, a causa di quel loop.

Ho provato questo di domenica, quindi il mercato era chiuso.

 
Dadas:


Quindi, un EA potrebbe essere eseguito come uno script? In un loop?

Solo che, quando è in un ciclo infinito, il computer alla fine si blocca.

C'è un modo per innescare uno script in un ciclo controllato da qualche ticker, come ogni 50ms o qualcosa del genere?

Non dai tick di MT4?


Uno script viene eseguito una volta sola, a meno che tu non aggiunga un ciclo finito/infinito all'interno della sua funzione start(). Se vuoi innescare lo script con i tuoi tick generati, allora rendilo un EA e mettilo su un grafico offline.
 
Dadas:


Tuttavia, quando ho eseguito il mio EA come uno script come questo:

il mio computer ha iniziato a rallentare, a causa di quel ciclo.


Il tuo computer ha bisogno di un aggiornamento... o di essere sostituito.
 
RaptorUK:

Il tuo computer ha bisogno di un aggiornamento... o di essere sostituito.

Questo è abbastanza vero! È vecchio.
 
RaptorUK:

Uno script viene eseguito una volta sola, a meno che tu non aggiunga un ciclo finito/infinito all'interno della sua funzione start(). Se vuoi innescare lo script con i tuoi tick generati, allora rendilo un EA e mettilo su un grafico offline.

Non posso fare trading su un grafico offline.
 
Dadas:

Non posso fare trading su un grafico offline.
Perché no?
 

Dadas 2012.08.12 16:34
Dadas:


C'è un modo per attivare uno script in un ciclo controllato da qualche ticker, come ogni 50ms o qualcosa del genere?

Non dai tick di MT4?


Cercherò di rispondere da solo:

Non è possibile, perché la funzione start() viene eseguita dalle nuove quotazioni, cioè dai tick del broker.

Quindi, anche se avete un ciclo all'interno della funzione start(), questo lo fa solo quando arriva un nuovo tick.

Ecco perché non puoi vincere contro il broker!

Tuttavia, quando ho eseguito il mio EA come uno script come questo:

int start() {

while(1==1) {

MyEA();

}
}

il mio computer ha iniziato a rallentare, a causa di quel loop.

Ho provato questo di domenica, quindi il mercato era chiuso.

Ciao Dadas,

Lo script viene eseguito senza tick, l'EA viene eseguito con un tick.

Quando usi un ciclo infinito, aggiungi uno Sleep ()(https://docs.mql4.com/common/Sleep)

Prova questo codice qui sotto come script, spegni la connessione internet, apri il task manager e allega lo script al grafico. Lo script andrà in loop infinito senza la necessità di un tick e senza utilizzare troppo il processore.

  int n;
  while (IsStopped() == false) // or while (true)
    {
    n++;
    Alert (n);
    
    Sleep (500); // add this !
    }

 
.
 
RaptorUK:
Perché no?


Illuminatemi, per favore!

Come posso fare trading live in tempo reale su un grafico offline?

 
onewithzachy:

Ciao Dadas,

Lo script viene eseguito senza tick, l'EA viene eseguito con un tick.

Quando usi un ciclo infinito, aggiungi uno Sleep ()(https://docs.mql4.com/common/Sleep)

Prova questo codice qui sotto come script, spegni la connessione internet, apri il task manager e allega lo script al grafico. Lo script andrà in loop all'infinito senza la necessità di un tick, e senza utilizzare troppo il processore.


Grazie mille!

È così semplice che avrei dovuto pensarci io stesso...

Stanco, credo....... Come il mio vecchio computer - LOL!

Anche se, sai, stavo pensando a qualcosa di un po' diverso.

Sto pensando a come annullare il ticchettio nel trading live di MT4!

Il punto è che durante il live trading, i ticchettii controllano l'EA e quindi anche il broker.

In altre parole, se voglio che il mio EA chiuda l'ordine sotto qualche condizione - voglio che il mio EA faccia proprio questo, sicuramente, non forse.

A parte i requotes (per i quali non posso fare altro che cambiare broker), succede troppo spesso che vedo sul mio grafico

che il mio ordine dovrebbe chiudersi, eppure rimane appeso fino al prossimo tick, e poi perde.

Se scrivo nel mio EA:

if(AccountProfit()>0) { CloseAllOrders(); }

allora voglio che chiuda @ 1 Pip di profitto o più. Non mi aspetto che rimanga appeso al 1 Pip e non faccia nulla!

BTW, faccio trading con spread fisso di 1 Pip su EURUSD.

Quindi, non ho bisogno dell'ovvio, e anche Sleep() non è una soluzione, se non per test retrospettivi offline.

BTW, qualsiasi test a ritroso non è buono per niente - non è un test in tempo reale.

Beh, è buono per alcune osservazioni e lo studio dei grafici, per imparare molto!

Ma, nel trading in tempo reale non conosci il futuro, e farai degli errori - a meno che tu non ti fidi veramente del tuo EA!

Fidati più di quello che vedi sui grafici! - Questa è la parte più difficile!

Quindi, ragazzi, per favore leggete i miei post con comprensione!