Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 759
![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
Ciao, potresti dirmi perché a volte ho un operatore ifle che non funziona.
Ecco un esempio:
Dove:
H3 è il valore del prezzo del livello
price è il prezzo corrente
Il risultato è che il prezzo raggiunge questo livello (a volte si ferma anche ad esso), ma Alert non si attiva.
Puoi dirmi qual è l'errore?
Buongiorno.
Il programma si presenta così.
Quando si compila dà fuori:
Ozero.mq4'Ozero.mq4 1 1
il valore di ritorno di 'OrderClose' dovrebbe essere controllato Ozero.mq4 46 13
conversione implicita da 'numero' a 'stringa' Ozero.mq4 49 117
0 errore(i), 2 avviso(i) 1 3
La scheda "risultati" mostra che gli ordini si stanno aprendo e chiudendo.
1 2014.08.25 00:00 comprare 1 0.10 1.6550 0.0000 0.0000 0.00 10000.00
2 2014.08.25 06:30 chiudere 1 0.10 1.6562 0.0000 0.0000 0.12 10000.12
3 2014.08.25 06:31 comprare 2 0,10 1.6564 0.0000 0.0000 0.00 10000.12
4 2014.08.25 10:00 chiudere 2 0.10 1.6574 0.0000 0.0000 0.10 10000.22
5 2014.08.25 10:00 comprare 3 0.10 1.6576 0.0000 0.0000 0.00 10000.22
6 2014.08.25 12:58 chiudere 3 0.10 1.6586 0.0000 0.0000 0.10 10000.32
7 2014.08.25 12:58 comprare 4 0,10 1.6590 0.0000 0.0000 0.00 10000.32
8 2014.08.26 13:13 chiudere a stop 4 0.10 1.6576 0.0000 0.0000 -0.14 10000.18
8 - Ho interrotto il lavoro chiudendo il tester.
Poi guardiamo il "Journal":
2014.10.31 07:46:44.837 GBPUSD,M15: 4453 eventi tick (5608 barre, 340128 stati delle barre) elaborati entro 312876 ms (tempo totale 324436 ms)
2014.10.31 07:46:44.837 2014.08.26 13:13 Tester: ordine #4 è chiuso
2014.10.31 07:46:44.798 2014.08.26 13:13 Tester visivo fermato
2014.10.31 07:43:15.315 2014.08.25 12:58 Ozero GBPUSD,M15: ORDINE APERTO 4
2014.10.31 07:43:15.315 2014.08.25 12:58 Ozero GBPUSD,M15: aperto #4 comprare 0,10 GBPUSD a 1,6590 ok
2014.10.31 07:43:15.315 2014.08.25 12:58 Ozero GBPUSD,M15: Aperto #4 comprare 0,10 GBPUSD a 1,6590 ok
2014.10.31 07:43:15.245 2014.08.25 12:58 Ozero GBPUSD,M15: Non credo che abbia chiuso. Ecco qui: 4108
2014.10.31 07:43:15.245 2014.08.25 12:58 Ozero GBPUSD,M15: Errore OrderClose 4108
2014.10.31 07:43:15.245 2014.08.25 12:58 Ozero GBPUSD,M15: ticket 3 sconosciuto per la funzione OrderClose
2014.10.31 07:43:15.245 2014.08.25 12:58 Ozero GBPUSD,M15: chiudere #3 comprare 0,10 GBPUSD a 1,6576 al prezzo 1,6586
2014.10.31 07:42:51.123 2014.08.25 10:00 Ozero GBPUSD,M15: HOLD OPEN #3
2014.10.31 07:42:51.123 2014.08.25 10:00 Ozero GBPUSD,M15: aperto #3 comprare 0,10 GBPUSD a 1,6576 ok
2014.10.31 07:42:51.123 2014.08.25 10:00 Ozero GBPUSD,M15: Aprire posizione #1
2014.10.31 07:42:51.059 2014.08.25 10:00 Ozero GBPUSD,M15: Come va? Ecco qui: 4108
2014.10.31 07:42:51.059 2014.08.25 10:00 Ozero GBPUSD,M15: Errore OrderClose 4108
2014.10.31 07:42:51.059 2014.08.25 10:00 Ozero GBPUSD,M15: ticket 2 sconosciuto per la funzione OrderClose
2014.10.31 07:42:51.059 2014.08.25 10:00 Ozero GBPUSD,M15: chiudere #2 comprare 0,10 GBPUSD a 1,6564 al prezzo 1,6574
2014.10.31 07:42:31.473 2014.08.25 06:31 Ozero GBPUSD,M15: HOLD OPEN 2
2014.10.31 07:42:31.473 2014.08.25 06:31 Ozero GBPUSD,M15: open #2 buy 0.10 GBPUSD at 1.6564 ok
2014.10.31 07:42:31.473 2014.08.25 06:31 Ozero GBPUSD,M15: Apertura della prima posizione
2014.10.31 07:42:31.331 2014.08.25 06:30 Ozero GBPUSD,M15: Come va? Ecco qui: 4108
2014.10.31 07:42:31.331 2014.08.25 06:30 Ozero GBPUSD,M15: Errore OrderClose 4108
2014.10.31 07:42:31.331 2014.08.25 06:30 Ozero GBPUSD,M15: ticket 1 sconosciuto per la funzione OrderClose
2014.10.31 07:42:31.331 2014.08.25 06:30 Ozero GBPUSD,M15: chiudere #1 comprare 0,10 GBPUSD a 1,6550 al prezzo 1,6562
2014.10.31 07:41:31.966 2014.08.25 00:00 Ozero GBPUSD,M15: ORDINE APERTO 1
2014.10.31 07:41:31.966 2014.08.25 00:00 Ozero GBPUSD,M15: aperto #1 comprare 0,10 GBPUSD a 1,6550 ok
2014.10.31 07:41:31.966 2014.08.25 00:00 Ozero GBPUSD,M15: aperto #1 comprare 0,10 GBPUSD a 1,6550 ok
2014.10.31 07:41:31.958 Ingressi Ozero: gLot=0.1; gPoint=0.001;
Ora sono del tutto in perdita. Da un lato gli ordini vengono chiusi come si può vedere nel grafico e nei risultati, dall'altro il codice viene eseguito con errori come si vede nel log: (((((((((((
Ozero.
Stai cercando di chiudere lo stesso ordine due volte. Rimuovere la parte superiore.
Buongiorno.
Eliminate due linee. Tutto funziona. E tutto viene visualizzato correttamente sul grafico, nei risultati e nei log.
Domanda: durante la compilazione, dà
Ozero.mq4'Ozero.mq4 1 1
Il valore di ritorno di 'OrderClose' dovrebbe essere controllato Ozero.mq4 46 13
0 errore(i), 1 avviso(i) 1 2
Di cosa mi avverte il compilatore? La 46esima linea è OrderClose(OrderTicket(),OrderLots(),_Bid,15);
Ozero.
Potete dirmi cosa potrebbe essere la causa del glitch che si è verificato oggi?
L'EA ha un'opzione per fermare il trading 15 minuti prima della chiusura del mercato il venerdì.
Quando appare un nuovo giorno l'EA controlla se è venerdì, allora oggi si ferma il trading in StringToTime("23:59")-15*60
Nel tester della strategia, questa funzione funziona correttamente. Tuttavia, nel trading reale, vedo una situazione completamente diversa - l'Expert Advisor ferma il trading al primo tick quando arriva il venerdì.
Ecco le stampe del diario di Expert Advisor:
Broker #1, demo:
0 05:59:47.731 Scalper GBPAUDpt,M1: Finish In Friday = 2014.10.23 23:44:00
Broker 2, reale:
0 03:00:11.999 Scalper EURUSD,M1: Finish In Friday = 2014.10.23 23:44:00
Cioè, quando appare la barra giornaliera di oggi (venerdì 24 ottobre) sul primo tick, l'EA
convertirà la linea "23:59" nell'ora di ieri invece di assegnare il giorno di oggi.
Tuttavia, se l'Expert Advisor viene riavviato il venerdì a metà giornata, determinerà correttamente il tempo di completamento.
Ho trovato la ragione di questo problema: https://forum.mql4.com/33023
Come previsto, è praticamente un bug nella funzione StringToTime. Tutti i sintomi sono simili. Questa funzione converte la stringa "23:59" in datetime con la data del PC locale ma non con la data di MT4. E nel tester, come sappiamo, la data del PC locale è emulata ed equiparata all'ora del terminale. Ecco perché tutto funziona correttamente nel tester, ma la demo/tempo reale provoca glitch e perdite. La documentazione, ovviamente, non dice da dove viene la data e il link sopra mostra che questo problema è stato segnalato 4 anni fa, ma apparentemente ai metacaratteri non importa.
Un'altra domanda. Ho capito bene che:
1. la numerazione dell'ordine inizia da "0".
2. Questo codice chiuderà assolutamente tutti gli ordini, indipendentemente dal fatto che io li apra manualmente o programmaticamente? Cioè, non troveremo mai un ordine che questa parte del programma non può chiudere?
Ozero.
Qualcuno ha fatto scorrere il testo sullo schermo? Per esempio - ordine così e così aperto/chiuso/modificato, ecc... Notizie lì così e così... ?
Se non ti dispiace, per favore mostrami un pezzo di codice.
Grazie!
Quello più basso è meglio. L'ordine deve essere scelto in anticipo.
È meglio così:
Qualcuno ha fatto scorrere il testo sullo schermo? Per esempio - ordine così e così aperto/chiuso/modificato, ecc... Notizie lì così e così... ?
Se non ti dispiace, per favore mostrami un pezzo di codice.
Senx!
Stava facendo lo scorrimento verticale nella finestra vuota dell'indicatore. Ecco la funzione:
Come esempio di utilizzo di un messaggio a un colore (si possono avere 4 colori in una linea per parole diverse):
Ci dovrebbe essere un indicatore vuoto chiamato Win_Inform sul grafico.