gibt die Ausführungsrichtlinie zurück. - Seite 3

 
Ivan_Invanov:

Ja, ich weiß, wie man mit binären Ziffern arbeitet.

Aus diesem Code geht hervor, dass z.B. die Funktion 3 zurückgegeben hat.

(11&1)==1 ; 11==01 nein, das ist falsch, es hat nicht funktioniert.

Ich war gerade dabei, dies zu schreiben und dachte, dass ich die Vorgänge vielleicht missverstanden habe.

& das bedeutet, dass ich Dezimalwerte in Binärwerte umwandle und eine bitweise Verknüpfung durchführe.

== wahr, wenn der erste Term gleich dem zweiten Term ist. Ist dies richtig?

Das sind die Dinge, die ich nicht verstehe, ich bin Autodidakt. Ich weiß nur, wie ich prüfen kann und was ich bekommen kann. Dein Beispiel (11&1)==1 ergibt wahr, da 11 nur aus den Flaggen 1+2+8 bestehen kann und somit 1 in der Menge enthalten ist.

Prüfen Sie, was zurückgegeben werden soll

return(1|2|8);
 
Alexey Viktorov:
Das sind die Dinge, die ich nicht verstehe, ich bin Autodidakt. Ich weiß nur, wie ich prüfen kann und was ich bekommen kann. Dein Beispiel (11&1)==1 ergibt wahr, da 11 nur aus den Flaggen 1+2+8 bestehen kann und somit 1 in der Menge enthalten ist.

Prüfen Sie, was zurückgegeben werden soll

Das ist das, was ich in binärer Form geschrieben habe, ich habe vergessen, es zu spezifizieren. Ich habe die Werte in den Code eingesetzt, den ich geschrieben habe, wenn die Funktion 3 zurückgegeben hat, und ihn mit FOK verglichen. So wird das Binärformat geschrieben. (0b11 & 0b1)==0b1 ; das Ergebnis in Klammern 0b11 hat den Ausdruck 0b11==0b1 ; aber es stellt sich meiner Meinung nach als falsch heraus. Es muss wahr sein, damit alles funktioniert. Nun, da dieses Beispiel in der Hilfe enthalten ist, ist es wahr. Ich muss etwas missverstanden haben. Ich habe mir jetzt die C-Hilfe und davor die mql-Hilfe angesehen. Es scheint dasselbe zu sein. Ich entschuldige mich, wenn ich sehr dumme Fragen stelle und danke Ihnen allen für die Antworten.
 
In der mql-Hilfe steht, dass der Wert true ein beliebiger Wert ungleich Null ist, also muss das die Antwort sein. Und dann die Gleichheit, und in C die Gleichheit. Es stellt sich heraus, dass es sich nicht um Gleichheit handelt, aber wenn die verglichenen Terme größer als Null sind, dann ist der Wert wahr. Ich denke schon. Es ist ziemlich unklar geschrieben. Es geht um den == Operator.
Документация по MQL5: Основы языка / Типы данных / Целые типы / Тип bool
Документация по MQL5: Основы языка / Типы данных / Целые типы / Тип bool
  • www.mql5.com
Внутреннее представление – целое число размером 1 байт. Необходимо отметить, что в логических выражениях допустимо использовать вместо типа bool другие целые или...
 

Dies isteine bitweise Operation, eine P O B I T O R T Operation. Es funktioniert mit Bits. Zum Beispiel ist 1 gleich 00000001. 2 ist 00000010. Eine Flagge kann nur 1, 2, 4, 8, usw. sein. Kurz gesagt, ein Bit ist besetzt.

Und ein Satz von Merkern kann beliebige Bits belegen, zum Beispiel 00000101. Diese Menge enthält die Flaggen 00000001 und 00000100. Um herauszufinden, ob eine Flagge in der Menge der Flaggen enthalten ist, muss man eine bitweise "und"-Verknüpfung zwischen der Flagge und der Menge durchführen; wenn eine Flagge übrig bleibt, bedeutet dies, dass sie in der Menge enthalten ist:

(00000101& 00000100) == 00000100 - wahr. Das bedeutet, dass es in der Menge 00000101 ein Kennzeichen 00000101 gibt.

 
Dmitry Fedoseev:

Dies isteine bitweise Operation, eine P O B I T O R T Operation. Es funktioniert mit Bits. Zum Beispiel ist 1 gleich 00000001. 2 ist 00000010. Eine Flagge kann nur 1, 2, 4, 8, usw. sein. Kurz gesagt, ein Bit ist besetzt.

Und ein Satz von Merkern kann beliebige Bits belegen, zum Beispiel 00000101. Diese Menge enthält die Flaggen 00000001 und 00000100. Um herauszufinden, ob eine Flagge in der Menge der Flaggen enthalten ist, muss man eine bitweise "und"-Verknüpfung zwischen der Flagge und der Menge durchführen; wenn eine Flagge übrig bleibt, bedeutet dies, dass sie in der Menge enthalten ist:

(00000101& 00000100) == 00000100 - wahr. Das bedeutet, dass es im Set 00000101 ein Kennzeichen 00000101 gibt.

Stimmt es, dass (positiver Term 1 == positiver Term 2) aber der positive Term 1 nicht gleich dem positiven Term 2 ist? Es stellt sich heraus, weil die Hilfe sagt, dass Wahrheit ein beliebiger Wert ungleich Null ist, und dann funktioniert der Code.
 
Ivan_Invanov:
Stimmt es, dass (positiver Term 1 == positiver Term 2) aber der positive Term 1 nicht gleich dem positiven Term 2 ist? Es stellt sich heraus, weil die Hilfe sagt, dass Wahrheit ein beliebiger Wert ungleich Null ist, und dann funktioniert der Code.
Was mich verwirrt, ist die Tatsache, dass das Wort "Gleichheit" daneben steht.
 
Wo ist die Referenz? Wo und was genau?
 
Dmitry Fedoseev:
An welcher Stelle des Verweises? Wo genau und was?

Das scheint mir ein Widerspruch zu sein. Sie ist nicht wahr, wenn a gleich b ist, sondern wenn a und b von Null verschieden sind. Nun, es ist kein Widerspruch, es ist nicht klar geschrieben. Ich glaube, ich habe es verstanden, danke.

Dateien:
1111.jpg  29 kb
 
ENUM_SYMBOL_TRADE_EXECUTION Es wird nicht gesagt, um welchen Typ es sich handelt, und die Kopfzeilen in der Hilfe sind durcheinander (es schien für Strings geschrieben worden zu sein, und fing dann, ohne es zu erwähnen, an, über Integers zu sprechen). Ich habe alle drei Optionen ausprobiert, aber jedes Mal gab es einen Compilerfehler. Was ist los?
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 Es wird nicht gesagt, welchen Typ es hat, und die Kopfzeilen in der Hilfe sind durcheinander (es schien für Strings geschrieben worden zu sein, und fing dann, ohne es zu erwähnen, an, über Integers zu sprechen). Ich habe alle drei Optionen ausprobiert, aber jedes Mal gab es einen Compilerfehler. Was ist los?

Sie müssen es so machen:

//--- 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);
  }