Errori, bug, domande - pagina 1917

 

Forum sul trading, sistemi di trading automatico e test di strategie di trading

Bug, bug, domande

fxsaber, 2017.06.15 10:08

Perché si compila?
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
Perché non dovrebbe compilare?

A è l'antenato di B, quindi la conversione può essere valida, la validità viene controllata e se la conversione dell'oggetto non è possibile viene lanciata un'eccezione e il programma MQL termina.

A differenza della conversione esplicita, dynamic_cast non solleva un'eccezione ma restituisce invece NULL, nel qual caso il programma continuerà l'esecuzione.
 
Vladimir Karputov:

Impostare la velocità a meno tre passi dal massimo - altrimenti gli aggiornamenti dell'interfaccia non sono garantiti.

Questa velocità è nel mezzo - è una lunga strada verso il massimo lì
 
SymbolInfoDouble(_Symbol,SYMBOL_MARGIN_INITIAL)

SymbolInfoDouble(_Symbol,SYMBOL_MARGIN_MAINTENANCE)
restituisce sempre 0,0 nel tester per qualche motivo

il codice di errore è anche 0

 
Anton Ohmat:
per qualche motivo restituisce sempre 0,0

il codice di errore è anche 0

Questa cosa, per quanto ho capito, funziona solo sulla Borsa di Mosca

 
Aiuto per favore!!!!!!!! Il pulsante "1-click trading" non viene visualizzato nel terminale 1090. Ho fatto tutto il possibile, ho anche spuntato la casella nelle proprietà. Non viene visualizzato come un ordine aperto in linea!!! Cosa fare?
 
vati-vv:
Aiuto per favore!!!!!!!! Nel terminale 1090 il pulsante "Trade in 1 click" non viene visualizzato. Ho fatto tutto il possibile, ho anche controllato nelle proprietà. Anche l'ordine aperto non viene visualizzato con una linea!!! Cosa fare?

Ora hai postato la tua domanda nella sezione MQL5. Per il vecchio terminale, dovresti postare le tue domande nelle sezioniMQL4 e MetaTrader 4.

Si consiglia di controllare se si è connessi al server di trading, poiché il pannello di trading rapido viene visualizzato solo quando si è effettivamente connessi al proprio conto di trading.

 

Ciao, in mql5 uso il seguente modo di specificare 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);
     }


Nel tester l'EA apre le posizioni, ma circa una posizione non si apre e l'errore unsupported filling mode, cosa sto facendo di sbagliato?

 
Dmitry Melnichenko:

Ciao, in mql5 uso il seguente modo di specificare filling_mode


Nel tester un EA apre le posizioni, ma alcune posizioni non vengono aperte e l'errore non supporta la modalità di riempimento, cosa sto facendo di sbagliato?


Non è un singolo valore che viene restituito ma un composto di uno o due - ecco perché può risultare in un controllo errato.

Provate una tale costruzione:

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


Aggiunto: se ha aiutato, per favore fatemelo sapere.

 
Vladimir Karputov:

Non è un singolo valore che viene restituito, ma un composto di uno, o due - quindi si può ottenere un controllo errato.

Provate questa costruzione:


Aggiunto: se ha aiutato, per favore fatemelo sapere.


Grazie, ma non è servito, dà ancora periodicamente questo errore!

 

Come faccio a sapere il numero di finestra/sottofinestra di un oggetto? Non vedo una proprietà corrispondente.

Motivazione: