Fehler in SetTypeFillingBySymbol - Seite 4

 

Auf Deinem Bild steht: "Wir haben None ausgewählt, weil wir unseren Kunden keine FOK oder IOC Orders anbieten."

Er bietet anscheinend nur Markt-Oders an.

Wenn Du versuchst mit

SymbolInfoInteger()
etwas anders zu 'setzen' kriegst Du eben eine false zurück.
 
Carl Schreiber:

Auf Deinem Bild steht: "Wir haben None ausgewählt, weil wir unseren Kunden keine FOK oder IOC Orders anbieten."

Er bietet anscheinend nur Markt-Oders an.

Ja und, ist doch seine Sache. Ich als Kunde kann ja auch woanders hingehen.

Und du bringst schon wieder alles durcheinander, Nochmal :

1. die Funktion "bool CTrade::SetTypeFillingBySymbol(const string symbol)" ruft über die Funktion "int filling=(int)SymbolInfoInteger(symbol,SYMBOL_FILLING_MODE);"

    einen Wert vom Symbol des Broker ab, das kann 0 / 1 / 2 sein.

//+------------------------------------------------------------------+
//| Set order filling type according to symbol filling mode          |
//+------------------------------------------------------------------+
bool CTrade::SetTypeFillingBySymbol(const string symbol)
  {
//--- get possible filling policy types by symbol
   uint filling=(uint)SymbolInfoInteger(symbol, SYMBOL_FILLING_MODE);
   if((filling&SYMBOL_FILLING_FOK)==SYMBOL_FILLING_FOK)
     {
      m_type_filling=ORDER_FILLING_FOK;
      return(true);
     }
   if((filling&SYMBOL_FILLING_IOC)==SYMBOL_FILLING_IOC)
     {
      m_type_filling=ORDER_FILLING_IOC;
      return(true);
     }
//---
   return(false);
  }

2. Anhand des Wertes in der Variablen filling, setzt die Funktion SetTypeFillingBySymbol dann in der 1. if Anweisung, die Variable m_type_filling auf ORDER_FILLING_FOK wenn filling=SYMBOL_FILLING_FOK (1) gesetzt ist.

    In der 2. if Anweisung wird die Variable m_type_filling auf ORDER_FILLING_IOC gesetzt wenn filling=SYMBOL_FILLING_IOC (2) ist.

    In beiden fällen wird die Funktion mit return("true") beendet.

    Da bei mir aber filling=0 (None / Return) oder wie du es auch nennen willst nicht bearbeitet wird, gibt die Funktion am ende return("false") zurück. Was ja falsch ist.


Das war jetzt mein letztes mal das ich es dir Erklärt habe.


Kannst du bitte noch meine Frage beantworten?

Also Carl, du bist doch Moderator, wie bekommt man den Fehler jetzt beseitigt. An wen oder wo muss man sich hin wenden?

Gibt es sowas wie Bugzilla oder etwas vergleichbares?


VG

Thorsten

 
Thorsten Fischer :

Kannst du bitte noch meine Frage beantworten?

Also Carl, du bist doch Moderator, wie bekommt man den Fehler jetzt beseitigt. An wen oder wo muss man sich hin wenden?

Gibt es sowas wie Bugzilla oder etwas vergleichbares?


VG

Thorsten

Es gibt keine andere Möglichkeit, Fehler zu melden als im Forum. Und wenn Sie gelesen werden möchten, ist es besser, es im russischen Forum zu tun.

Wunderbar, nicht wahr?

 

Siehst Du, da ist Dein Denkfehler:

" Da bei mir aber filling=0 (None / Return) oder wie du es auch nennen willst nicht bearbeitet wird, gibt die Funktion am ende return("false") zurück. Was ja falsch ist."

Nach dem (https://www.mql5.com/de/docs/basis/types/integer/boolconst), was üblich ist:

ist ein logischer Wert von false numerisch 0!

Allerdings wird alles was != 0 als true gewertet!

 
Carl Schreiber:

Siehst Du, da ist Dein Denkfehler:

" Da bei mir aber filling=0 (None / Return) oder wie du es auch nennen willst nicht bearbeitet wird, gibt die Funktion am ende return("false") zurück. Was ja falsch ist."

Nach dem (https://www.mql5.com/de/docs/basis/types/integer/boolconst), was üblich ist:

ist ein logischer Wert von false numerisch 0!

Allerdings wird alles was != 0 als true gewertet!

Deine Aussage ist so nicht ganz richtig.

Eine Funktion gibt das zurück was der Programmierer in die Funktion programmiert.

Die Aussage was das Ergebnis einer Funktion ist bestimmt der Programm Code in der Funktion und nicht ein Wert.

Wie ich schon einige male dir gesagt habe ist hier ein Programmierfehler in der Funktion vorhanden, wodurch in der

Funktion eine falsche interpretation des Abrufswertes zu einer fehlerhaften Ausführung bzw. Ergebnis führt.

Du vermischt schon wieder Variablen, Funktionen und Werte.

 

Du weißt schon, dass Zahlenwerte zB in einer logischen Abfrage automatisch gecastst werden, also von 0 in false umgewandelt werden!

Wenn man #property strict verwendet, weist einen der Compiler (meist) darauf hin, andernfalls nicht.

 
Carl Schreiber:

Du weißt schon, dass Zahlenwerte zB in einer logischen Abfrage automatisch gecastst werden, also von 0 in false umgewandelt werden!

Wenn man #property strict verwendet, weist einen der Compiler (meist) darauf hin, andernfalls nicht.

Ich verwende immer "#property strict" bitte gib mir ein einfaches Beispiel da du immer noch verschiedene Situationen mit einander vergleichst und

dadurch die Aussagen von dir nicht richtig bzw, eindeutig sind.

 

Im Link von oben das Beispiel:

   int i=5;
   double d=-2.5;
   if(i) Print("i = ",i," und Wert true hat");
   else Print("i = ",i," und Wert false hat");
 
   if(d) Print("d = ",d," und Wert true hat");
   else Print("d = ",d," und Wert false hat");
 
   i=0;
   if(i) Print("i = ",i," und Wert true hat");
   else Print("i = ",i," und Wert false hat");
 
   d=0.0;
   if(d) Print("d=",d,"und Wert true hat");
   else Print("d=",d,"und Wert false hat");
 
//--- Ergebnisse der Ausführung 
//   i= 5 und Wert true hat
//   d= -2.5 und Wert true hat
//   i= 0 und Wert false hat
//   d= 0 und Wert false hat
 
Carl Schreiber :

Siehst Du, da ist Dein Denkfehler:

" Da bei mir aber filling=0 (None / Return) oder wie du es auch nennen willst nicht bearbeitet wird, gibt die Funktion am ende return("false") zurück. Was ja falsch ist."

Nach dem (https://www.mql5.com/de/docs/basis/types/integer/boolconst), was üblich ist:

ist ein logischer Wert von false numerisch 0!

Allerdings wird alles was != 0 als true gewertet!

Carl Ich verstehe nicht, warum Sie streiten? Es gibt einen Fehler in der "Standard Library" -Funktion SetTypeFillingBySymbol (), den Thorsten von Anfang an bemerkt hat. Dieser Fehler tritt sehr selten auf, da der GBE-Broker ein sehr ungewöhnliches Setup für sein Symbol verwendet (meiner Meinung nach ist es eine falsche Konfiguration, aber das ist eine andere Sache).

Wir sind jetzt bei Post 39, das ist eine Menge nutzloser Diskussionen. Ich möchte niemanden beleidigen, aber Sie ( und amando ) scheinen nicht zu wissen, wovon Sie mit dem Füllmodus sprechen.

 
Carl Schreiber:

Im Link von oben das Beispiel:

Hallo Carl,

Wie Alain schon schreibt ist das hier mit dir eine sinnlose Konversation, da du die ganze Zeit Äpfel mit Birnen und dann auch noch Kirschen vergleichst.

Das Beispiel sagt lediglich aus, das bei einem Wert von condition = int 0 (false) die Anweisung 2 ausgeführt wird und ansonsten immer Anweisung 1.

if(condition)

    Anweisung 1

else

    Anweisung 2

Wie oben schon gesagt vergleichst du immer verschiedene Dinge. Ich beende das hiermit, da du es nicht verstehen wirst.


VG

Thorsten