Fehler, Irrtümer, Fragen - Seite 1917

 

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Wanzen, Wanzen, Fragen

fxsaber, 2017.06.15 10:08

Warum wird es kompiliert?
class A {};

class B : public A
{
public:  
  int i;
};

void OnStart()
{
  A* a = new B;
  
  ((B*)a).i = 1;
  
  dynamic_cast<B*>(a).i = 1;
  
  delete a;
}
Support Team 2017.06.29 12:04
Warum sollte es nicht kompiliert werden?

A ist der Vorfahre von B, so dass die Konvertierung gültig sein kann. Die Gültigkeit wird geprüft und wenn die Objektkonvertierung nicht möglich ist, wird eine Ausnahme ausgelöst und das MQL-Programm beendet.

Im Gegensatz zur expliziten Konvertierung löst dynamic_cast keine Ausnahme aus, sondern gibt stattdessen NULL zurück; in diesem Fall wird das Programm weiter ausgeführt.
 
Vladimir Karputov:

Stellen Sie die Geschwindigkeit auf minus drei Schritte vom Maximum ein - andernfalls ist eine Aktualisierung der Schnittstelle nicht gewährleistet.

Diese Geschwindigkeit liegt in der Mitte - bis zur Höchstgeschwindigkeit ist es ein weiter Weg.
 
SymbolInfoDouble(_Symbol,SYMBOL_MARGIN_INITIAL)

SymbolInfoDouble(_Symbol,SYMBOL_MARGIN_MAINTENANCE)
gibt im Tester aus irgendeinem Grund immer 0,0 zurück

der Fehlercode ist ebenfalls 0

 
Anton Ohmat:
aus irgendeinem Grund wird immer 0,0 zurückgegeben

der Fehlercode ist ebenfalls 0

Soweit ich weiß, funktioniert diese Funktion nur an der Moskauer Börse.

 
Hilfe bitte!!!!!!!! Die Schaltfläche "1-Klick-Handel" wird auf dem Terminal 1090 nicht angezeigt. Ich habe alles getan, was möglich war, und ich habe auch das Kästchen in den Eigenschaften angekreuzt. Sie wird nicht als offener Auftrag angezeigt!!! Was ist zu tun?
 
vati-vv:
Hilfe bitte!!!!!!!! Im Terminal 1090 wird die Schaltfläche "Handel mit 1 Klick" nicht angezeigt. Ich habe alles Mögliche getan und auch in den Eigenschaften nachgesehen. Auch der offene Auftrag wird nicht mit einer Linie angezeigt!!! Was ist zu tun?

Sie haben Ihre Frage jetzt im Bereich MQL5 gestellt. Für das alte Terminal sollten Sie Ihre Fragen in den BereichenMQL4 und MetaTrader 4 stellen.

Es ist ratsam zu überprüfen, ob Sie beim Handelsserver angemeldet sind, da das Schnellhandels-Panel nur angezeigt wird, wenn Sie tatsächlich bei Ihrem Handelskonto angemeldet sind.

 

Hallo, in mql5 verwende ich die folgende Art der Angabe von filling_mode

   if(SymbolInfoInteger(Symbol(),SYMBOL_FILLING_MODE)==SYMBOL_FILLING_FOK)
     {
      tradeBuy.SetTypeFilling(ORDER_FILLING_FOK);
      tradeSell.SetTypeFilling(ORDER_FILLING_FOK);
     }

   else if(SymbolInfoInteger(Symbol(),SYMBOL_FILLING_MODE)==SYMBOL_FILLING_IOC)
     {
      tradeBuy.SetTypeFilling(ORDER_FILLING_IOC);
      tradeSell.SetTypeFilling(ORDER_FILLING_IOC);
     }

   else
     {
      tradeBuy.SetTypeFilling(ORDER_FILLING_RETURN);
      tradeSell.SetTypeFilling(ORDER_FILLING_RETURN);
     }


Im Tester öffnet der EA Positionen, aber über eine Position nicht öffnen und Fehler nicht unterstützten Füllmodus, was mache ich falsch?

 
Dmitry Melnichenko:

Hallo, in mql5 verwende ich die folgende Art der Angabe von filling_mode


Im Tester öffnet ein EA Positionen, aber einige Positionen werden nicht geöffnet und Fehler nicht unterstützten Füllmodus, was mache ich falsch?


Es ist nicht ein einzelner Wert, der zurückgegeben wird, sondern eine Zusammensetzung aus einem oder zwei Werten - deshalb kann es zu einer falschen Prüfung kommen.

Versuchen Sie eine solche Konstruktion:

//---
   if(IsFillingTypeAllowed(Symbol(),SYMBOL_FILLING_FOK))
      m_trade.SetTypeFilling(ORDER_FILLING_FOK);
   else if(IsFillingTypeAllowed(Symbol(),SYMBOL_FILLING_IOC))
      m_trade.SetTypeFilling(ORDER_FILLING_IOC);
   else
      m_trade.SetTypeFilling(ORDER_FILLING_RETURN);
...
//+------------------------------------------------------------------+ 
//| Checks if the specified filling mode is allowed                  | 
//+------------------------------------------------------------------+ 
bool IsFillingTypeAllowed(string symbol,int fill_type)
  {
//--- Obtain the value of the property that describes allowed filling modes 
   int filling=(int)SymbolInfoInteger(symbol,SYMBOL_FILLING_MODE);
//--- Return true, if mode fill_type is allowed 
   return((filling & fill_type)==fill_type);
  }


Hinzugefügt: Wenn es geholfen hat, lassen Sie es mich bitte wissen.

 
Vladimir Karputov:

Es ist nicht ein einzelner Wert, der zurückgegeben wird, sondern eine Zusammensetzung aus einem oder zwei Werten, so dass Sie eine ungültige Prüfung erhalten können.

Versuchen Sie diese Konstruktion:


Hinzugefügt: Wenn es geholfen hat, lassen Sie es mich bitte wissen.


Danke, aber es hat nicht geholfen, es gibt immer noch regelmäßig diesen Fehler!

 

Wie erfahre ich die Fenster-/Teilfensternummer eines Objekts? Ich sehe keine passende Eigenschaft.