restituisce la politica di esecuzione. - pagina 3

 
Ivan_Invanov:

Sì, capisco come lavorare con le cifre binarie.

Da questo codice viene fuori, ad esempio, la funzione restituita 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?

Queste sono le cose che non capisco, sono un autodidatta. So solo come controllare e cosa posso ottenere. Il tuo esempio (11&1)==1 risulterà vero poiché 11 può essere composto solo dalle bandiere 1+2+8, quindi 1 è incluso nell'insieme.

Controlla cosa verrà restituito

return(1|2|8);
 
Alexey Viktorov:
Queste sono le cose che non capisco, sono un autodidatta. So solo come controllare e cosa posso ottenere. Il tuo esempio (11&1)==1 risulterà vero perché 11 può essere composto solo dalle bandiere 1+2+8, quindi 1 è incluso nell'insieme.

Controlla cosa verrà restituito

Questo è quello che ho scritto in binario, ho dimenticato di specificare. Ho sostituito i valori nel codice che ho scritto se la funzione restituisse 3 e l'ho confrontato con FOK. Questo è il modo in cui è scritto il binario. (0b11 & 0b1)==0b1 ; il risultato tra parentesi 0b11 ha l'espressione 0b11==0b1 ; ma risulta falso, secondo me. Deve essere vero perché tutto funzioni. Beh, dato che questo campione è nella guida, è vero. Devo aver capito male qualcosa. Ora ho guardato l'aiuto C, e prima ancora quello mql. Sembra essere lo stesso. Mi scuso se sto facendo domande molto stupide e vi ringrazio tutti per le risposte.
 
L'aiuto di mql dice che il valore true è qualsiasi valore non zero, quindi questa deve essere la risposta. E poi l'uguaglianza, e in C l'uguaglianza. Si scopre che non è l'uguaglianza, ma se i termini confrontati sono maggiori di zero, allora il valore è vero. Credo di sì. È scritto in modo poco chiaro. Si tratta dell'operatore ==.
Документация по MQL5: Основы языка / Типы данных / Целые типы / Тип bool
Документация по MQL5: Основы языка / Типы данных / Целые типы / Тип bool
  • www.mql5.com
Внутреннее представление – целое число размером 1 байт. Необходимо отметить, что в логических выражениях допустимо использовать вместо типа bool другие целые или...
 

Un'operazione bitwise, questa è un'operazione P O B I T O R T . Funziona con i bit. Per esempio, 1 è 00000001. 2 è 00000010. Una bandiera può essere solo 1, 2, 4, 8, ecc. In breve, un bit è occupato.

E un insieme di bandiere può avere qualsiasi bit occupato, per esempio 00000101. Questo insieme comprende le bandiere 00000001 e 00000100. E per scoprire se qualche bandiera è inclusa nell'insieme delle bandiere, bisogna fare una "e" bitwise della bandiera e dell'insieme, se lascia una bandiera, significa che è nell'insieme:

(00000101& 00000100) == 00000100 - vero. Questo significa che c'è un flag 00000101 nel set 00000101.

 
Dmitry Fedoseev:

Un'operazione bitwise, questa è un'operazione P O B I T O R T . Funziona con i bit. Per esempio, 1 è 00000001. 2 è 00000010. Una bandiera può essere solo 1, 2, 4, 8, ecc. In breve, un bit è occupato.

E un insieme di bandiere può avere qualsiasi bit occupato, per esempio 00000101. Questo insieme comprende le bandiere 00000001 e 00000100. E per scoprire se qualche bandiera è inclusa nell'insieme delle bandiere, bisogna fare una "e" bitwise della bandiera e dell'insieme, se lascia una bandiera, significa che è nell'insieme:

(00000101& 00000100) == 00000100 - vero. Questo significa che c'è un flag 00000101 nel set 00000101.

È vero che (termine positivo 1 == termine positivo 2) ma il termine positivo 1 non è uguale al termine positivo 2? Risulta così, perché l'aiuto dice che la verità è qualsiasi valore non zero, e poi il codice funziona.
 
Ivan_Invanov:
È vero che (termine positivo 1 == termine positivo 2) ma il termine positivo 1 non è uguale al termine positivo 2? Risulta così, perché l'aiuto dice che la verità è qualsiasi valore non zero, e quindi il codice funziona.
Quello che mi confonde è che la parola uguaglianza è scritta dopo.
 
Dov'è il riferimento? In particolare dove e cosa?
 
Dmitry Fedoseev:
In quale luogo del riferimento? Dove e cosa?

Questo mi sembra una contraddizione. È vero non se a è uguale a b, ma se a e b sono diversi da zero. Beh, non è una contraddizione, non è scritto chiaramente. Credo di aver capito, grazie.

File:
1111.jpg  29 kb
 
ENUM_SYMBOL_TRADE_EXECUTION Non dice che tipo è, e le intestazioni nell'aiuto sono confuse (sembrava scritto per le stringhe, e poi senza menzionarlo ha iniziato a parlare di interi). Ho provato tutte e tre le opzioni, ma ogni volta errore del compilatore. Cosa c'è che non va?
long execution = (long) SymbolInfoInteger(_Symbol, ENUM_SYMBOL_TRADE_EXECUTION);
string execution = (string) SymbolInfoString(_Symbol, ENUM_SYMBOL_TRADE_EXECUTION);
double execution = (double) SymbolInfoDouble(_Symbol, ENUM_SYMBOL_TRADE_EXECUTION);
 
Ivan_Invanov:
ENUM_SYMBOL_TRADE_EXECUTION Non dice che tipo ha, e le intestazioni nell'aiuto sono confuse (sembrava scritto per le stringhe, e poi senza menzionarlo ha iniziato a parlare di interi) . Ho provato tutte e tre le opzioni, ma ogni volta errore del compilatore. Cosa c'è che non va?

Dovete farlo in questo modo:

//--- Check trade execution mode
  ENUM_SYMBOL_TRADE_EXECUTION market_info = ENUM_SYMBOL_TRADE_EXECUTION(SymbolInfoInteger(Symbol(), SYMBOL_TRADE_EXEMODE));
    
  if((market_info & SYMBOL_TRADE_EXECUTION_EXCHANGE) != SYMBOL_TRADE_EXECUTION_EXCHANGE)
  {
    MessageBox("Символ " + Symbol() + " не поддерживает TRADE EXECUTION EXCHANGE режим!", "Ошибка", MB_OK | MB_ICONHAND);
    return(false);
  }