![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
Esempio dalla classe commerciale CTrade. Prima viene controllato per'SYMBOL_FILLING_FOK', poi per'SYMBOL_FILLING_IOC'.
Il controllo viene eseguito utilizzando l'operazione "AND bitwise".
Operazione bitwise AND
L'operazione bitwise AND delle rappresentazioni binarie x e y. Il valore dell'espressione contiene 1 (VERO) in tutti i bit dove sia x che y contengono non-zero; e 0 (FALSO) in tutti gli altri bit.
Esempio:
Maggiori informazioni sulle operazioni bitwise.
Non possono essercene due allo stesso tempo? Cosa dovrebbe restituire la funzione perché ce ne siano due allo stesso tempo?
Non possono essercene due allo stesso tempo? Cosa dovrebbe restituire la funzione perché ce ne siano due allo stesso tempo?
Esempio di controlli per due personaggi del server MetaQuotes-Demo:
Vedere le specifiche (compilare) per questi simboli:
ed ecco una variante più comune: quando tutti i riempimenti sono disponibili per un simbolo
e specifiche
Può anche essere 2, allora la funzione restituirà 3. BUT¡¡¡¡¡ Questa è una situazione atipica. Dato che ci sono solo 3 opzioni, potrebbe essere 1, 2 o la somma di 1+2. È la somma, non la terza opzione. Quindi il controllo con un'operazione bitwise può solo rispondere alla domanda: può essere applicata questa o quella politica di riempimento.
Ancora non capisco come una variabile possa restituire due membri. E se restituisce un termine come 3, allora le operazioni bitwise non funzioneranno. Ho deciso di scegliere solo la modalità EXECUTION_INSTANT e avrò sempre una politica FOK .
Per capire questo è necessario capire cosa sono le bandiere.
Ogni valore successivo di una bandiera è il valore del precedente moltiplicato per 2. Cioè 1, 2, 4, 8, 16, 32......... Quindi se il valore è 33 significa che questo valore contiene solo 1 e 32. Allo stesso modo se il valore è 18 può essere composto solo da 16 e 2. E il valore 3 può essere composto solo da 1 e 2.
Quindi le operazioni bitwise stanno solo controllando se il valore controllato è presente nella somma dei flag. Se si controlla se un numero arbitrario è incluso in 18 si ottiene falso, tranne che per controllare i valori 2 e 16.
Per capire questo è necessario capire cosa sono le bandiere.
Ogni valore successivo di una bandiera è il valore del precedente moltiplicato per 2. Cioè 1, 2, 4, 8, 16, 32......... Quindi se il valore è 33 significa che questo valore contiene solo 1 e 32. Allo stesso modo se il valore è 18 può essere composto solo da 16 e 2. E il valore 3 può essere composto solo da 1 e 2.
Quindi le operazioni bitwise stanno solo controllando se il valore controllato è presente nella somma dei flag. Se controllate se un numero arbitrario è incluso in 18 otterrete falso, tranne che per controllare i valori 2 e 16.
Sì, capisco come lavorare con le cifre binarie.
Da questo codice, per esempio, la funzione restituisce 3 .
(11&1)==1 ; 11==01 no, è falso, non ha funzionato.
Stavo scrivendo questo e ho pensato che forse ho frainteso le operazioni.
& significa che converto i valori decimali in binario e faccio una congiunzione bitwise.
== vero quando il primo termine è uguale al secondo termine. È corretto?