Sopra il codice dell'indicatore Spread_of_symbols ... ho deciso di riscriverlo per farlo funzionare più velocemente.... e il codice è apparso, vedi sotto ... i dati non vengono copiati ... se si copiano i dati da 1 a 0 nel codice, l'indicatore disegna molto velocemente ma si verifica un errore fuori gamma ... cosa c'è di sbagliato nel codice vedi sotto ...?
Nella modalità di visualizzazione, quando si fa trading su due simboli, dopo aver chiuso le operazioni nello stesso momento, nella cronologia appaiono solo i dati del simbolo su cui è in esecuzione l'Expert Advisor. I dati dell'altro simbolo arrivano alla scheda della cronologia solo dopo aver aperto altre transazioni. Di conseguenza, c'è un periodo di tempo in cui i dati sulle schede commercio e storia sono diversi.
JF 0 Trades 19:31:10 '***': annulla l'ordine #3694236 compra stop 1.10 AUDJPY.m a 95.679<br / translate="no">DS 0 Trades 19:31:10 '***': annulla l'ordine #3694238 compra limite 1.10 AUDJPY.m a 93.876 DH 0 Trades 19:31:10 '***': cancella l'ordine #3694237 compra stop 0.36 AUDJPY.m a 95.679 FI 0 Trades 19:31:10 '***': cancella l'ordine #3694239 acquista limite 0,36 AUDJPY.m a 93,876 FP 0 Trades 19:31:10 '***': cancella l'ordine #3694236 compra stop 1.10 AUDJPY.m a 95.679 fatto QE 0 Trades 19:31:11 '***': cancella l'ordine #3694238 acquista limite 1,10 AUDJPY.m a 93,876 fatto CG 0 Trades 19:31:11 '***': cancella l'ordine #3694237 compra stop 0.36 AUDJPY.m a 95.679 fatto OL 0 Trades 19:31:11 '***': cancella l'ordine #3694239 acquista limite 0,36 AUDJPY.m a 93,876 fatto
Quattro ordini pendenti, secondo il registro, sembravano essere cancellati rapidamente. Ma suTradeTransaction, le risposte sono arrivate in circa 15 secondi, i tick arrivavano in questo periodo.
IE 0 prp5 (EURUSD.m,M1) 19:31:26 TS=6 =O= Deal close/reverse price=95.648 m=3 b/s=SELL ... ==>Tempo prima di OrderSendAsync ES 0 prp5 (EURUSD.m,M1) 19:31:29 TS=6 case 8(real) m=3 b/s=SELL Err=Order placed ==>Dopo OrderSendAsync, 3 sec sembrano essere troppo lunghi.
P.S. Sembra che ci siano stati ritardi nell'esecuzione di Expert, anche se mi chiedo per quanto tempo i pacchetti per OnTradeTransaction possano rimanere in coda.
Guardato l'"organizzazione di accesso ai dati", guardato lo script di esempio che pompa i dati e capito tutto, sono sorte le seguenti domande:
1. Perché non posso scrivere questo codice nell'indicatore nella funzione OnInit, in modo che all'inizio l'indicatore scarichi la sua storia e prepari la serie temporale? Posso scrivere un tale assegno nel mio Expert Advisor?
2. Quanto spesso devo fare questo controllo per: 1 per gli Expert Advisors e 2 per gli indicatori? Se preparo solo una volta la storia e le serie temporali per la copia, allora in futuro non si verificheranno errori nella copia? O devo controllare ogni volta o di tanto in tanto se la storia e le serie temporali sono pronte?
3. Questo controllo è necessario solo per gli indicatori e gli Expert Advisor che usano diversi timeframe e simboli, o è auspicabile per tutti?
I processi di swap sono asincroni e l'indicatore non può attendere i dati. Quindi è possibile interrogare in inite, senza aspettare o rallentare e solo in oncalculate per controllare la disponibilità e il conteggio.
Si prega di notare - l'indicatore non ha il diritto di aspettare o di fare un loop, altrimenti ucciderà il calcolo degli indicatori successivi.
Renat: I processi di swap sono asincroni e l'indicatore non può attendere i dati. Così si può interrogare nell'inite, senza aspettare o rallentare e solo nell'oncalculate per controllare la disponibilità e il conteggio.
Si prega di notare - l'indicatore non ha il diritto di aspettare o di fare un loop, altrimenti ucciderà il calcolo degli indicatori successivi.
1 Allora dove impagino i dati? Se voglio fare un indicatore con un paniere di coppie di valute, molti simboli... per ognuno di essi ho bisogno di controllare e scambiare i dati... devo eseguire uno script dall'indicatore? Perché un indicatore dovrebbe uccidere i calcoli dei successivi? Nei prossimi indicatori, è sufficiente utilizzare il controllo del calcolo dell'indicatore precedente attraverso BarsCalculated(indicator1_Handle), lasciarlo calcolare e scaricare i dati, o mi sbaglio?
2 Un'altra domanda, di un altro tipo - quando dichiaro la maniglia dell'indicatore nella funzione, inizia a contare? O inizia a contare prima che io dia un comando per copiarlo?
Sopra il codice dell'indicatore Spread_of_symbols ... ho deciso di riscriverlo per farlo funzionare più velocemente.... e il codice è apparso, vedi sotto ... i dati non vengono copiati ... se si copiano i dati da 1 a 0 nel codice, l'indicatore disegna molto velocemente ma si verifica un errore fuori gamma ... cosa c'è di sbagliato nel codice vedi sotto ...?
DH 0 Trades 19:31:10 '***': cancella l'ordine #3694237 compra stop 0.36 AUDJPY.m a 95.679
FI 0 Trades 19:31:10 '***': cancella l'ordine #3694239 acquista limite 0,36 AUDJPY.m a 93,876
FP 0 Trades 19:31:10 '***': cancella l'ordine #3694236 compra stop 1.10 AUDJPY.m a 95.679 fatto
QE 0 Trades 19:31:11 '***': cancella l'ordine #3694238 acquista limite 1,10 AUDJPY.m a 93,876 fatto
CG 0 Trades 19:31:11 '***': cancella l'ordine #3694237 compra stop 0.36 AUDJPY.m a 95.679 fatto
OL 0 Trades 19:31:11 '***': cancella l'ordine #3694239 acquista limite 0,36 AUDJPY.m a 93,876 fatto
Quattro ordini pendenti, secondo il registro, sembravano essere cancellati rapidamente. Ma suTradeTransaction, le risposte sono arrivate in circa 15 secondi, i tick arrivavano in questo periodo.
***
JG 0 prp5 (EURUSD.m,M1) 19:31:26 TS=6 Delete tp _ OnTrade PENDING id=85 m=3 b/s=SELL Err=Bid completato
***
RL 0 prp5 (EURUSD.m,M1) 19:31:26 TS=6 Delete sl _ OnTrade PENDING id=86 m=3 b/s=SELL Err=Bid completato
***
HK 0 prp5 (EURUSD.m,M1) 19:31:26 TS=6 Delete tp _ OnTrade PENDING id=87 m=3 b/s=SELL Err=Ordine eseguito
Anche se c'è qualcosa di strano anche qui
ES 0 prp5 (EURUSD.m,M1) 19:31:29 TS=6 case 8(real) m=3 b/s=SELL Err=Order placed ==>Dopo OrderSendAsync, 3 sec sembrano essere troppo lunghi.
P.S. Sembra che ci siano stati ritardi nell'esecuzione di Expert, anche se mi chiedo per quanto tempo i pacchetti per OnTradeTransaction possano rimanere in coda.
Dal riferimento:
Riferimento a MQL5 / Libreria Standard / Classi per creare pannelli e finestre di dialogo / CWnd / StateFlagsSet
Quali proprietà?
StateFlagsSet non proprietà, ma stato. Un metodo di gruppo per cambiare lo stato. Appena sopra i metodi per cambiare le singole bandiere di stato.
Usare separatamente.
Guardato l'"organizzazione di accesso ai dati", guardato lo script di esempio che pompa i dati e capito tutto, sono sorte le seguenti domande:
1. Perché non posso scrivere questo codice nell'indicatore nella funzione OnInit, in modo che all'inizio l'indicatore scarichi la sua storia e prepari la serie temporale? Posso scrivere un tale assegno nel mio Expert Advisor?
2. Quanto spesso devo fare questo controllo per: 1 per gli Expert Advisors e 2 per gli indicatori? Se preparo solo una volta la storia e le serie temporali per la copia, allora in futuro non si verificheranno errori nella copia? O devo controllare ogni volta o di tanto in tanto se la storia e le serie temporali sono pronte?
3. Questo controllo è necessario solo per gli indicatori e gli Expert Advisor che usano diversi timeframe e simboli, o è auspicabile per tutti?
Si prega di notare - l'indicatore non ha il diritto di aspettare o di fare un loop, altrimenti ucciderà il calcolo degli indicatori successivi.
I processi di swap sono asincroni e l'indicatore non può attendere i dati. Così si può interrogare nell'inite, senza aspettare o rallentare e solo nell'oncalculate per controllare la disponibilità e il conteggio.
Si prega di notare - l'indicatore non ha il diritto di aspettare o di fare un loop, altrimenti ucciderà il calcolo degli indicatori successivi.
1 Allora dove impagino i dati? Se voglio fare un indicatore con un paniere di coppie di valute, molti simboli... per ognuno di essi ho bisogno di controllare e scambiare i dati... devo eseguire uno script dall'indicatore? Perché un indicatore dovrebbe uccidere i calcoli dei successivi? Nei prossimi indicatori, è sufficiente utilizzare il controllo del calcolo dell'indicatore precedente attraverso BarsCalculated(indicator1_Handle), lasciarlo calcolare e scaricare i dati, o mi sbaglio?
2 Un'altra domanda, di un altro tipo - quando dichiaro la maniglia dell'indicatore nella funzione, inizia a contare? O inizia a contare prima che io dia un comando per copiarlo?