Errori, bug, domande - pagina 2590
![MQL5 - Linguaggio delle strategie di trading integrato nel client terminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Potete dirmi quale potrebbe essere la ragione dell'errore [Too many trade requests] alla seconda chiamata della routine OrderSend (dopo aver avviato il terminale)?
Ha esaminato i registri da lunedì a giovedì. Ho visto la stessa cosa ovunque: il primo ordine limite viene inviato con successo e tutti gli ordini successivi ritornano con l'errore [Troppe richieste di trade]. Poi iniziano a passare. L'unica azione criminale è la frequente chiamata di CopyTickRange in OnInit().
BCS Broker MetaTrader 5 Terminal x64 build 2170 iniziato
@Ilyas
Da dll, il puntatore alla stringa const wchar_t* copia una stringa pari, con questi parametri
wcsncpy( out, data, wcslen(data) * 2 );
Con questi parametri, ovviamente, perde.
Ma la stringa risulta pari, non un solo carattere in più sfugge.
E dopo aver terminato il programma, il registro di Expert Advisor mostra un messaggio
E c'è una tale prova.
Mostra quanto segue
Il carattere char ' ' restituisce due byte invece di uno. Probabilmente perché è in Unicode.
E la stringa restituisce dodici byte invece di due byte rispetto a wchar_t.
Come possibile via, forse l'allineamento di tipo superiore distorce la dimensione della stringa da qualche parte?
@Ilyas
Da dll, il puntatore alla stringa const wchar_t* copia una stringa pari, con questi parametri
Con questi parametri, ovviamente, perde.
Ma la stringa risulta pari, non un solo carattere in più sfugge.
E dopo aver terminato il programma, il registro di Expert Advisor mostra un messaggio
E una tale prova
Mostra quanto segue
Il carattere char ' ' restituisce due byte invece di uno. Probabilmente perché è in Unicode.
E la stringa restituisce dodici byte invece di due byte rispetto a wchar_t.
Come possibile via, forse l'allineamento di tipo superiore distorce la dimensione della stringa da qualche parte?
@Ilyas
Dalla dll, il puntatore const wchar_t* stringa copia una semplice stringa, con questi parametri
Con questi parametri, ovviamente, perde.
Ma la stringa risulta essere pari, senza alcun carattere extra mancante.
E dopo aver terminato il programma, il registro di Expert Advisor mostra un messaggio
E c'è una tale prova.
Mostra quanto segue
Il carattere char ' ' restituisce due byte invece di uno. Probabilmente perché è in Unicode.
E la stringa restituisce dodici byte invece di due byte rispetto a wchar_t.
Come possibile via, forse l'allineamento di tipo superiore distorce la dimensione della stringa da qualche parte?
1. in MQL solo Unicode, ecco perché la dimensione del carattere è di 2 byte
2. la stringa è una struttura (4 byte di dimensione del buffer e 8 byte di dimensione del puntatore)
La copia su stringa dovrebbe essere
Se questo non funziona, l'errore deve essere trovato altrove
Sembra che la funzione ResourceReadImage() non funzioni correttamente quando si ottengono dati da file BMP! Ho fatto uno script per disegnare un'immagine come sfondo su tela. Se prendiamo i pixel dell'immagine dal file che si trova sull'HDD e li riempiamo sulla tela, tutto funziona bene, ma se prendiamo i pixel dell'immagine dalla risorsa BMP che si trova nel file ex5 stesso usando la funzione ResourceReadImage(), l'immagine di sfondo risultante sembrerà una piccola fetta molto ingrandita dell'immagine sorgente. Qual è la ragione?
Il ciclo del punto di copia è sbagliato, sostituirlo con
E questa domanda - come ottenere una lista di variabili di input, la stessa che arriva nella funzioneFrameInputs() , ma solo in un passaggio, senza ottimizzazione?
Sì, abbastanza recentemente una domanda del genere era venuta fuori, l'ho in qualche modo persa di vista, e ora ho anch'io un compito del genere (voglio fare i set-file automaticamente).
In che direzione scavare? E se qualcuno si ricorda di quella discussione - dove si trova (non riesco a trovarla)?
Naturalmente, in ogni Expert Advisor potrei scrivere una funzione che crei una tale lista, ma sarebbe meglio avere una funzione di libreria universale.Si potrebbe, naturalmente, scrivere una singola funzione in ogni EA che crei una tale lista, ma una funzione di libreria universale sarebbe meglio.
Date un'occhiata qui.
Date un'occhiata qui.
Proprio così, è così!
Grazie mille.
1. in MQL solo Unicode, ecco perché la dimensione del carattere è di 2 byte
2. la stringa è una struttura (4 byte di dimensione del buffer e 8 byte di dimensione del puntatore)
La copia su stringa dovrebbe essere
Se questo non funziona, l'errore deve essere trovato altrove
E cosa succede se la dimensione della stringa da copiare è più grande o più piccola della dimensione del buffer allocato?