Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1179
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
Quando faccio una query come questa
Ottengo questo risultato:
2020.06.17 13:49:53.270 2020.01.02 06:50:00 Simbolo EURUSD_i Cifre 5 Punto 1e-05
Quando faccio una richiesta come questa:
Ottengo questo risultato:
2020.06.17 13:51:58.787 2020.01.02 06:45:00 Simbolo EURUSD_i Cifre 0 Punto 0,0
Allo stesso tempo voglio notare che se non inserisco la funzione Print, non ottengo nessun errore, l'ordine non cerca nemmeno di modificarsi. È come se CTrade non vedesse il mio ordine.
Il controllo del simbolo e del numero magico non funziona:
Risultato:
2020.06.17 14:37:38.147 2020.01.02 06:50:00 Symbol Magic 0 Ticket 2
Il numero magico dovrebbe essere 12345, il simbolo è euro dollaro.
Perché non posso avere simbolo e medgic?
Se cambiate la stringa:
è cambiato in
e rimuovere la convalida per numero magico, allora abbiamo problemi con i prezzi
2020.06.17 01:38:24.136 2020.01.02 07:40:00 failed modify order #2 buy stop 0.1 EURUSD_i at 1.12086 sl: 1.12023 tp: 1.12275 -> 1.00000, sl: 1.00000 tp: 1.00000 [prezzo non valido]
2020.06.17 01:38:24.136 2020.01.02 07:40:00 CTrade::OrderSend: modifica #2 a 1,00000 (sl: 1,00000 tp: 1,00000) [prezzo non valido]
2020.06.17 01:38:24.136 2020.01.02 07:40:00 BUY STOP modifica fallita! Risultato Retcode: 10015, descrizione del Retcode: prezzo non valido
Mi sono già scervellato, mentre questo stesso codice funziona bene in un altro Expert Advisor.
Cosa sto facendo di sbagliato?
Oggetto di classe CSymbolInfo inizializzato in modo errato (o non inizializzato).
Se non avete questa stringa asymbol.Name(Symbol()) allora aggiungetela.
Se ne avete uno, fate il debug nella funzione Name(string symbol) cosa succede.
Riempimento dei campi m_digits etc nella funzione Refresh().
s.s. A giudicare da quello che hai aggiunto, hai sicuramente un asymbol non inizializzato.
Finché non arriva il nuovo tick, non c'è movimento dei pulsanti. Questo è quello che posso vedere con i miei occhi. Non appena il prezzo cambia, i pulsanti si muovono.
Anche se oggi anche sulla nuova spunta i pulsanti hanno smesso di ridisegnarsi, anche se non ho cambiato nulla. Solo lo sfondo si muove.Per chiarire - come dici tu cambi le coordinate in OnTick, e sostieni che in effetti i pulsanti si muovono al tick successivo. La prossima spunta da cosa? Quella su cui hai cambiato le coordinate o quella di Natale?
Il tuo oggetto di classe CSymbolInfo è inizializzato in modo errato (o non lo è affatto).
Se non avete tale stringa asymbol.Name(Symbol()) allora aggiungetela.
Se ne avete uno, fate il debug nella funzione Name(string symbol) cosa succede.
Riempire i campi m_digits etc con Refresh().
s.s. A giudicare da quello che hai aggiunto, il tuo asymbol è sicuramente non inizializzato.
È un'inizializzazione? Quando compilo ottengo le seguenti informazioni
'Trade.mq5 panel' Trade.mq5 panel 1 1
'Trade.mqh' Trade.mqh 1 1
'Object.mqh' Object.mqh 1 1
'StdLibErr.mqh' StdLibErr.mqh 1 1
'OrderInfo.mqh' OrderInfo.mqh 1 1
'HistoryOrderInfo.mqh' HistoryOrderInfo.mqh 1 1
'PositionInfo.mqh' PositionInfo.mqh 1 1
'DealInfo.mqh' DealInfo.mqh 1 1
'SymbolInfo.mqh' SymbolInfo.mqh 1 1
codice generato 1 1
0 errori, 0 avvertimenti, 3192 msec trascorsi 1 1
Dopo aver aperto un ordine Buy Stop ricalcolo tutti gli ordini, seleziono un ordine aperto e controllo se il simbolo e il numero Majdic corrispondono:
Non succede niente in questa fase, come ho scritto sopra asymbol.Name() non restituisce il simbolo dell'ordine aperto per qualche motivo, aorder.Magic() restituisce il valore 0 (anche se il mio numero magico è 121345), asymbol.TickSize() restituisce il valore 0. In altre parole, il controllo fallisce e quindi l'ulteriore lavoro sull'ordine si ferma. Si prega di chiarire"debug nella funzione Name(string symbol) cosa sta succedendo", non capisco bene questa frase. Cosa dovrei aggiungere e dove?
Per chiarire - come dici tu cambi le coordinate in OnTick, e sostieni che in effetti i pulsanti si muovono al tick successivo. La prossima spunta da cosa? Quella su cui hai cambiato le coordinate o quella di Natale?
A questo punto, non succede niente, perché come ho già scritto sopra, la funzione asymbol.Name() per qualche motivo non restituisce il simbolo dell'ordine aperto, la funzione aorder.Magic() restituisce il valore 0 (anche se il mio Magic è 121345), la funzione asymbol.TickSize() restituisce il valore 0. In altre parole, il controllo fallisce e quindi l'ulteriore lavoro sull'ordine si ferma. Si prega di chiarire"debug nella funzione Name(string symbol) cosa sta succedendo", non capisco bene questa frase. Cosa dovrei aggiungere e dove?
L'errore nell'indice dell'ordine / biglietto potrebbe essere un errore a giudicare dalla magia 0. Al momento dell'accesso alla struttura dell'ordine, i dati dell'ordine sbagliato vi sono scritti. Nel ciclo di selezione, può darsi che il numero successivo sia inserito nell'ultimo ordine impostato, ma non quello che vi serve. I dati dell'ultimo ordine selezionato sono restituiti dalla struttura dell'ordine.
all'inizio del mio codice ci sono le linee
È un'inizializzazione? Durante la compilazione, ottengo le seguenti informazioni
'Trade panel.mq5' Trade panel.mq5 1 1
'Trade.mqh' Trade.mqh 1 1
'Object.mqh' Object.mqh 1 1
'StdLibErr.mqh' StdLibErr.mqh 1 1
'OrderInfo.mqh' OrderInfo.mqh 1 1
'HistoryOrderInfo.mqh' HistoryOrderInfo.mqh 1 1
'PositionInfo.mqh' PositionInfo.mqh 1 1
'DealInfo.mqh' DealInfo.mqh 1 1
'SymbolInfo.mqh' SymbolInfo.mqh 1 1
codice generato 1 1
0 errori, 0 avvertimenti, 3192 msec trascorsi 1 1
Dopo aver aperto un ordine Buy Stop ricalcolo tutti gli ordini, seleziono un ordine aperto e controllo se il simbolo e il numero Majdic corrispondono:
Non succede niente in questa fase, come ho scritto sopra asymbol.Name() non restituisce il simbolo dell'ordine aperto per qualche motivo, aorder.Magic() restituisce il valore 0 (anche se il mio numero magico è 121345), asymbol.TickSize() restituisce il valore 0. In altre parole, il controllo fallisce e quindi l'ulteriore lavoro sull'ordine si ferma. Si prega di chiarire"debug nella funzione Name(string symbol) cosa sta succedendo", non capisco bene questa frase. Cosa dovrei aggiungere e dove?
Cavolo, perché usi qualcosa che non capisci (e se fosse una valigia yadda yadda )) )
E non ti prendi nemmeno la briga di leggere quello che c'è scritto
Se non avete asymbol.Name(Symbol()) allora aggiungetelo.
s.w. Volevo spiegare di più sull'inizializzazione, ma credo che anche questo sarebbe inutileCi può essere un errore nell'indice dell'ordine / biglietto secondo la magia 0. Al momento dell'accesso alla struttura dell'ordine i dati dell'ordine sbagliato sono memorizzati lì. Nel ciclo di selezione può essere che il numero successivo vada all'ultimo ordine impostato ma non a quello che ti serve. I dati dell'ultimo ordine selezionato sono restituiti dalla struttura dell'ordine.
Buon pomeriggio!
Aiutami a risolvere un semplice problema.
Contatore di gap. Voglio contare le lacune che sono più di 10 punti.
La variabile "gap" si azzera. Non capisco perché. Ho già provato di tutto. Ho provato con i loop e la statica - non funziona. Ho il sospetto di aver scritto i cicli in modo errato.
Buon pomeriggio!
Aiutami a risolvere un semplice problema.
Contatore di gap. Voglio contare le lacune che sono più di 10 punti.
La variabile "gap" si azzera. Non capisco perché. Ho già provato di tutto. Ho provato con i loop e la statica - non funziona. Ho il sospetto di aver scritto i cicli in modo errato.
La variabile gap è nell'ambito della funzione start - e ad ogni nuovo tick viene reinizializzata con zero
Buon pomeriggio!
Aiutami a risolvere un semplice problema.
Contatore di gap. Voglio contare le lacune che sono più di 10 punti.
La variabile "gap" si azzera. Non capisco perché. Ho già provato di tutto. Ho provato con i loop e la statica - non funziona. Ho il sospetto di aver scritto i cicli in modo errato.