Erros, bugs, perguntas - página 1917

 

Fórum sobre comércio, sistemas automatizados de comércio e testes de estratégia comercial

Insectos, insectos, perguntas

fxsaber, 2017.06.15 10:08

Porque é que 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
Porque não deveria compilar?

A é o antepassado de B, pelo que a conversão pode ser válida, a validade é verificada e se a conversão do objecto não for possível, é lançada uma excepção e o programa MQL termina.

Em contraste com a conversão explícita dynamic_cast não levanta uma excepção, mas retorna NULL, caso em que o programa continuará a ser executado.
 
Vladimir Karputov:

Definir a velocidade para menos três passos do máximo - caso contrário, as actualizações da interface não são garantidas.

Esta velocidade está no meio - é um longo caminho até ao máximo lá
 
SymbolInfoDouble(_Symbol,SYMBOL_MARGIN_INITIAL)

SymbolInfoDouble(_Symbol,SYMBOL_MARGIN_MAINTENANCE)
devolve sempre 0,0 no testador por alguma razão

o código de erro também é 0

 
Anton Ohmat:
por alguma razão retorna sempre 0.0

o código de erro também é 0

Isto, tanto quanto sei, só funciona na Bolsa de Moscovo

 
Ajuda por favor!!!!!!!! O botão "1-clique de negociação" não é exibido no terminal 1090. Fiz todos os possíveis. Também assinalei a caixa nas propriedades. Não é exibido como uma ordem de abertura de linha!!! O que fazer?
 
vati-vv:
Ajuda por favor!!!!!!!! No terminal 1090, o botão "Trocar em 1 clique" não é exibido. Fiz tudo o que era possível. Também o verifiquei em propriedades. Não é exibido como uma ordem de abertura de linha!!! O que fazer?

A sua pergunta foi agora afixada na secção MQL5. Para o terminal antigo, deve colocar as suas perguntas nas secçõesMQL4 e MetaTrader 4.

É aconselhável verificar se está ligado ao servidor de negociação, uma vez que o painel de negociação rápida é exibido apenas quando está efectivamente ligado à sua conta de negociação.

 

Olá, em mql5 utilizo a seguinte forma de especificar o modo_de_enchimento

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


No testador o EA abre posições, mas cerca de uma posição não abre e erro no modo de enchimento sem suporte, o que estou eu a fazer mal?

 
Dmitry Melnichenko:

Olá, em mql5 utilizo a seguinte forma de especificar o modo_de_enchimento


No testador um EA abre posições, mas algumas posições não são abertas e o modo de enchimento sem suporte de erro, o que estou a fazer mal?


Não é um valor que é devolvido, mas um composto de um ou dois - é por isso que a verificação pode estar incorrecta.

Tente uma tal construção:

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


Acrescentado: se ajudou, por favor avisem-me.

 
Vladimir Karputov:

Não é um único valor que é devolvido, mas um composto de um, ou dois - por isso pode receber um cheque inválido.

Experimente esta construção:


Acrescentado: se ajudou, por favor avisem-me.


Obrigado, mas não ajudou, ainda dá periodicamente este erro!

 

Como sei o número da janela/ubjanela de um objecto? Não vejo uma propriedade correspondente.

Razão: