Emulazione di tick da un EA/indicatore - pagina 4

 
Zhunko:

Solo un caso per esempio?

Basta prendere il mio ChartBuilder nel codebase. Può utilizzare un gran numero di strumenti di trading. E se per lo strumento, sul quale si blocca, non vengono ricevuti nuovi tick per un certo tempo, il valore mostrato è già irrilevante (obsoleto).

Per quanto riguarda la combinazione Expert Advisor+indicatore, se intendi trasferire il codice all'Expert Advisor per ridurre il carico sul thread principale, sembra più ragionevole fare il porting del codice in una DLL e importarlo nell'indicatore. Se pensi al porting del codice, dovrebbe essere in un ambiente normale.

 
Meat: Ho capito qual era il problema: l'array deve essere dichiarato a livello globale, non a livello locale.

nessuna zecca.... ((((

log:

18:33:34 test EURUSD,H1: caricato con successo
18:33:36 test EURUSD,H1: inizializzato

pulsante destro del mouse "aggiorna grafico" il commento era spunta: 1, è diventato spunta: 2

nessun errore nel registro

SZS: tagliato l'interconnessione spuntando "enable proxy server", riavviato il terminale - nessuna connessione, ma quando ho spuntato la casella. SZY: spento il citofono spuntando "enable proxy server" , riavviato il terminale - nessuna connessione, ma quando hai rimosso la casella di controllo sul server proxy, come "avviato" ..... ;)

 
Come idea - un Exe separato, trova la finestra MT - scorre attraverso le finestre al suo interno
e inizia ad inviare i tick di emulazione ad un intervallo prestabilito.
 
jartmailru:
Come idea - un Exe separato, trova la finestra MT - scorre al suo interno le finestre
e inizia a emulare i tick con una data periodicità.
Ne ho uno uguale. Solo in DLL. Ma Alexey lo vuole senza DLL e EXE di terze parti.
Carne:

1. Prendete il mio ChartBuilder nel codebase, per esempio. Può utilizzare un gran numero di strumenti di trading. E se per lo strumento, sul quale si blocca, non arrivano nuovi tick per un certo tempo, allora il valore visualizzato è già irrilevante (obsoleto).

2. Per quanto riguarda l'Expert Advisor+indicatore, se intendi trasferire il codice all'Expert Advisor per ridurre il carico sul thread principale, sarebbe più ragionevole spostare il codice in una DLL e importarlo nell'indicatore. Se volete preoccuparvi di fare il porting del codice, fareste meglio a farlo almeno in un buon ambiente.

1. Lo ripeterò ancora una volta. Se volete reagire allo strumento al di fuori della finestra corrente, dovreste usare l 'ora del server. La WinAPI non è necessaria per questo. MQL4 ha una tale funzione.

2. Non importa quale legame viene usato. Questa è la stessa soluzione. Un Expert Advisor in loop risponde al cambiamento dell'ora del server. Questo è sufficiente per risolvere tutti i problemi che state cercando di risolvere.

Basta emulare i tick per avviare l'Expert Advisor nel fine settimana. Non è necessario per nient'altro. Ho mostrato come aggiornare l'indicatore. Solo una linea.

=====================

L'ultima versione dell'indicatore non funziona su Windows 7.


 
IgorM:

nessuna zecca.... ((((

...............

SZS: tagliate l'interconnessione spuntando la casella "allow proxy server". Ma quando ho deselezionato la casella di controllo del proxy, si è semplicemente "spento" ..... ;)

Igor, questo modo di disconnettersi da Internet non è buono. Ci sono molte cose che non funzionano in questa modalità. Non è necessario disabilitare l'accesso a Internet.

Per esempio, questo codice per Expert Advisor:

#include <WinUser32.mqh


void init()
 {
  int hwndChart = WindowHandle(Symbol(), 0);
  int nNewMessageWindow = RegisterWindowMessageA("MetaTrader4_Internal_Message");
  for (int i = 0; i < 200; i++) PostMessageA(hwndChart, nNewMessageWindow, 2, 1);
 }

void start()
 {
  int nCounter = 0;
  while (!IsStopped())
   {
    nCounter++;
    Comment(nCounter);
    Sleep(500);
   }
 }

funziona nei fine settimana e quando non ci sono zecche, ma non funziona quando è disconnesso da internet. C'è qualche oscura particolarità.

Forse l'hanno ottimizzato nelle ultime build. Prima funzionava.

È meglio scegliere uno strumento che viene aggiornato raramente.

 
Zhunko:
Ne ho fatto fare uno. Solo in DLL. Ma Alexey lo vuole senza DLL e EXE di terze parti.

1. Ancora una volta. Per reagire a uno strumento non dalla finestra corrente, è necessario utilizzare il tempo del server. La WinAPI non è necessaria per questo. MQL4 ha una tale funzione.

2. Non importa quale legame viene usato. Questa è la stessa soluzione. Un Expert Advisor in loop risponde al cambiamento dell'ora del server. Questo è sufficiente per risolvere tutti i problemi che state cercando di risolvere.

Basta emulare i tick per avviare l'Expert Advisor nel fine settimana. Non è necessario per nient'altro. Ho mostrato come aggiornare l'indicatore. Solo una linea.

=====================

L'ultima versione dell'indicatore non funziona su Windows 7.


Non capisco cosa stai cercando di dimostrare, che diversi file in esecuzione sono più fighi di uno? Certo, posso eseguire un Expert Advisor in loop, ma non vedo il motivo di fare questo casino con due file di lavoro, quando posso fare la stessa cosa nell'indicatore stesso o in una dll collegata. Naturalmente, capisco che preferisci avere diversi programmi in esecuzione, e ogni programma esegue la sua funzione specializzata: uno pulisce i registri, un altro invia tic, etc. Ma il tuo approccio non è l'unico corretto.

L'emulazione dei tick è necessaria solo per avviare l'Expert Advisor nel fine settimana

Ripeto, vi sbagliate. Il bisogno di zecche non dipende dal giorno della settimana. Ho già spiegato il perché. Se non fai trading, ma credimi, ho fatto trading di futures negli ultimi anni, lì devi aggiornare i tick abbastanza spesso.

 

Si presume che il codice non funzioni dove è installato il 64-bit. Ho solo 32, quindi non posso controllarlo. Prova a inserire quattro byte nulli dopo PostMsgAddr lì (senza dimenticare di aumentare la dimensione dell'array). Forse funzionerà... Anche se immagino che si debbano rendere anche gli altri due parametri a 64 bit... o no? Comunque, non ho ancora lavorato in un ambiente a 64 bit, quindi non lo so.

 
Meat:


1. Non capisco, cosa sta cercando di dimostrarmi? Che più file in esecuzione sono più fighi di uno? Certo, posso avviare un Expert Advisor in loop, ma non ha senso creare un tale casino composto da due file di lavoro, quando posso fare le stesse cose nell'indicatore stesso o in una linked dll. Naturalmente, capisco che si preferisce avere diversi programmi diversi in esecuzione, e ognuno sta eseguendo la sua funzione specializzata: uno pulisce i registri, l'altro invia tick ecc. Ma solo il tuo approccio non è l'unico corretto.

2. Di nuovo, si sbaglia. Il bisogno di zecche non dipende dal giorno della settimana. Ho già spiegato perché. A meno che tu non sia un trader, ma credimi, ho fatto trading di futures negli ultimi anni, è spesso necessario aggiornare i tick lì.

1. Ora non capisco... Dove ho detto che è più figo? Ho già ribadito molte volte che l'emulazione dei tick non è necessaria per il trading. È necessario solo per il debug del fine settimana, quando non ci sono tic.

2. Come si fa a fare trading da un indicatore? MQL4 non lo fornisce. Hai bisogno di un Expert Advisor o di uno script. L'Expert Advisor va in loop e confronta il tempo del server con quello precedente. Se c'è una mancata corrispondenza, si reagisce nel modo prescritto dal TS. Questo è tutto! Non c'è bisogno di alcuna emulazione. Cosa stai dimostrando? L'ho già scritto in diverse versioni in vari post. Dovete eseguire un tale Expert Advisor durante il fine settimana per eseguire il debug. Ho scritto il codice qui sopra.

 
Zhunko:

1. Ora non capisco... Dove ho detto che è più figo? Ho già ribadito molte volte che l'emulazione dei tick non è necessaria per il trading. È necessario solo per il debug del fine settimana, quando non ci sono tic.

2. Come si fa a fare trading da un indicatore? MQL4 non lo fornisce. Hai bisogno di un Expert Advisor o di uno script. L'Expert Advisor va in loop e confronta il tempo del server con quello precedente. Se c'è una mancata corrispondenza, si reagisce nel modo prescritto dal TS. Questo è tutto! Non c'è bisogno di alcuna emulazione. Cosa stai dimostrando? L'ho già scritto in diverse versioni in vari post. Dovete eseguire un tale Expert Advisor durante il fine settimana per eseguire il debug. Ho scritto il codice qui sopra.

Ma quelli che commerciano probabilmente lo sanno meglio, non credi?

Non voglio fare trading da un indicatore, e non ho bisogno di una cosa aggiuntiva sotto forma di un Expert Advisor in loop quando l'indicatore di ticchettio è sufficiente.

 
Meat:

Quindi sto dicendo: se non hai alcun commercio, allora personalmente non hai bisogno di questa emulazione. Ma quelli che fanno commercio probabilmente lo sanno meglio, non credi?

Non voglio fare trading da un indicatore, e non ho bisogno di una cosa aggiuntiva sotto forma di un Expert Advisor in loop se l'indicatore di ticchettio è sufficiente.

Come si fa a fare trading usando un indicatore ticchettio? MQL4 non lo prevede.

Davvero! Perché ho bisogno di un set aggiuntivo dell'indicatore di ticchettio che non può commerciare, se posso fare tutto in un Expert Advisor in loop? Non ci sarà bisogno di WinAPI, l'interfaccia MT4 non diventerà lenta, l'Expert Advisor funzionerà 3 volte più velocemente. Perché complicare così tanto le cose?