Errores, fallos, preguntas - página 1917

 

Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading

Bichos, errores, preguntas

fxsaber, 2017.06.15 10:08

¿Por qué se 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
¿Por qué no debería compilar?

A es el ancestro de B, por lo que la conversión puede ser válida, se comprueba la validez y si la conversión del objeto no es posible se lanza una excepción y el programa MQL termina.

A diferencia de la conversión explícita, dynamic_cast no lanza una excepción, sino que devuelve NULL, en cuyo caso el programa continuará la ejecución.
 
Vladimir Karputov:

Ajuste la velocidad a menos tres pasos del máximo, de lo contrario no se garantiza la actualización de la interfaz.

Esta velocidad está en el medio - es un largo camino hacia el máximo allí
 
SymbolInfoDouble(_Symbol,SYMBOL_MARGIN_INITIAL)

SymbolInfoDouble(_Symbol,SYMBOL_MARGIN_MAINTENANCE)
siempre devuelve 0.0 en el probador por alguna razón

el código de error también es 0

 
Anton Ohmat:
por alguna razón siempre devuelve 0.0

el código de error también es 0

Esta cosa, por lo que tengo entendido, sólo funciona en la Bolsa de Moscú

 
¡¡¡¡¡¡¡¡Ayuda por favor!!!!!!!! El botón de "comercio de 1 clic" no aparece en el terminal 1090. He hecho todo lo posible. También he marcado la casilla en las propiedades. ¡¡¡No se muestra como una orden de apertura de línea!!! ¿Qué hacer?
 
vati-vv:
¡¡¡¡¡¡¡¡Ayuda por favor!!!!!!!! En el terminal 1090 no aparece el botón "Operar en 1 clic". He hecho todo lo posible, también lo he comprobado en propiedades. ¡¡¡No aparece como una orden de apertura de línea!!! ¿Qué hacer?

Has publicado tu pregunta en la sección MQL5. Para el antiguo terminal, deberías publicar tus preguntas en las seccionesMQL4 y MetaTrader 4.

Es aconsejable comprobar si ha iniciado la sesión en el servidor de operaciones, ya que el panel de operaciones rápidas sólo se muestra cuando se ha iniciado la sesión en la cuenta de operaciones.

 

Hola, en mql5 utilizo la siguiente forma de especificar 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);
     }


En el probador el EA abre posiciones, pero sobre una posición no abre y error modo de llenado no soportado, ¿qué estoy haciendo mal?

 
Dmitry Melnichenko:

Hola, en mql5 utilizo la siguiente forma de especificar filling_mode


En el probador un EA abre posiciones, pero algunas posiciones no se abren y error modo de llenado no soportado, ¿qué estoy haciendo mal?


No se devuelve un único valor, sino un compuesto de uno o dos, por lo que puede dar lugar a una comprobación incorrecta.

Intenta una construcción de este tipo:

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


Añadido: si ha servido de algo, por favor, hágamelo saber.

 
Vladimir Karputov:

No se devuelve un solo valor, sino un compuesto de uno, o dos, por lo que puede obtener una comprobación no válida.

Prueba esta construcción:


Añadido: si ha servido de algo, por favor, hágamelo saber.


Gracias, pero no ha servido de nada, ¡sigue dando periódicamente este error!

 

¿Cómo puedo saber el número de ventana/subventana de un objeto? No veo una propiedad que coincida.