Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 273
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
int tip=OrderType();
if(OrderSelect(nomber,SELECT_BY_POS,MODE_HISTORY))
Vi è già stato detto che la seconda linea di questo frammento contiene un errore: prima che la funzione OrderType() sia chiamata, l'ordine deve essere selezionato usando la funzione OrderSelect().
C'è un errore nella linea 3: ma c'è un ordine con il numero 1? Se il numero minimo fosse 1, cioè il conto inizia con 1, allora il numero massimo sarebbe uguale al numero (che ci siano 5 ordini in totale: numeri d'ordine 1, 2, 3, 4, 5). Ma gli ordini sono numerati da 0 - metti il cursore su OrdersHistoryTotal e premi F1 per vedere un esempio. Qual è il numero massimo di ordini?
Prima hai suggerito di dividere la data del mese per 7 e di arrotondare, cosa che viene fatta nella seconda tabella.
Non capisco il suo algoritmo.
Ora ecco cosa sto pensando:
1. Determinare il giorno della settimana del primo giorno del mese.
2. Scopri quanti giorni mancano alla fine della settimana (era mercoledì (3) a lunedì 7-3 = 4).
3. Il 5° giorno - l'inizio della seconda settimana
4. poi nel ciclo, stiamo cercando una settimana, se il numero rientra nell'intervallo da 5 + 7 * x a 5 + 7 * (x +1), dove x - numero della settimana meno uno, allora abbiamo trovato la settimana
Ma è complicato, forse c'è un modo più semplice?
Alexey, stiamo parlando di cose diverse. Il problema non era determinare quale settimana del mese è il numero del mese, ma il primo giorno della settimana con questo nome nel mese. Si tratta di compiti diversi e, di conseguenza, di soluzioni diverse.
Per 63 anni non riesco ancora a capire come calcolare il numero di settimane nel mese. Per esempio, in Russia il lunedì è considerato il primo giorno della settimana. Se il mese inizia di domenica, come si conta il lunedì? È iniziata la seconda settimana? O cosa? La domanda è retorica, non c'è bisogno di iniziare una polemica su di essa.
Alexei, stiamo parlando di cose diverse. Il problema non era determinare in quale settimana del mese si trova il numero del mese, ma se è il primo giorno della settimana con quel nome in quel mese. Si tratta di compiti diversi e, di conseguenza, di soluzioni diverse.
Per 63 anni non ho ancora capito come contare il numero della settimana nel mese. Diciamo che in Russia il primo giorno della settimana è il lunedì. Se il mese inizia di domenica, come si conta il lunedì? È iniziata la seconda settimana? O cosa? La domanda è retorica, non c'è bisogno di iniziare una polemica su di essa.
Capisco. È una domanda definitiva per me...
Alexei, stiamo parlando di cose diverse. Il problema non era determinare in quale settimana del mese si trova il numero del mese, ma se è il primo giorno della settimana con quel nome in quel mese. Si tratta di compiti diversi e, di conseguenza, di soluzioni diverse.
Per 63 anni non riesco ancora a capire come calcolare il numero di settimane nel mese. Per esempio, in Russia il lunedì è considerato il primo giorno della settimana. Se il mese inizia di domenica, come si conta il lunedì? È iniziata la seconda settimana? O cosa? La domanda è retorica, non c'è bisogno di iniziare una polemica su di essa.
Vi è già stato detto che la seconda linea di questo frammento contiene un errore: prima che la funzione OrderType() sia chiamata, l'ordine deve essere selezionato usando la funzione OrderSelect().
C'è un errore nella linea 3: ma c'è un ordine con il numero 1? Se il numero minimo fosse 1, cioè il conto inizia con 1, allora il numero massimo sarebbe uguale al numero (che ci siano 5 ordini in totale: numeri d'ordine 1, 2, 3, 4, 5). Ma gli ordini sono numerati da 0 - metti il cursore su OrdersHistoryTotal e premi F1 per vedere un esempio. Qual è il numero massimo di ordini?
if (OrderSelect(1,SELECT_BY_POS,MODE_HISTORY))
int tip=OrderType();
È corretto ora?
if (OrderSelect(1,SELECT_BY_POS,MODE_HISTORY)) - так какой наибольший номер ордера?
int tip=OrderType();
e ora è giusto?
scrivere uno script e dopo ogni operatore stampare le informazioni + GetLastError() con Alert() - vedere lo script di esempio sopra
ma è meglio prendere il codice di errore dalla variabile _LastError per stamparlo, altrimenti si può distruggere la logica con un leggero "debug print"
GetLastError() allo stesso tempo fa una cosa non ovvia per GetXXX() - cambia il suo stato interno resettando il codice di errore a 0.
solo per la stampa è meglio prendere il codice di errore dalla variabile _LastError, altrimenti è possibile distruggere la logica con un leggero "debug print".
GetLastError() allo stesso tempo fa una cosa non ovvia per GetXXX() - cambia lo stato interno, resettando il codice di errore a 0.
beh, è una questione di gusti - o memorizzare il codice di errore in una variabile e resettare l'errore o memorizzarlo in _LastError per un uso successivo
ecco l'algoritmo qui sopra da leggere dal basso verso l'alto