Nova versão da plataforma MetaTrader 5 build 3280: melhorias e correções baseadas no feedback dos traders - página 2

 

Será que posso sugerir uma melhoria ... É o seguinte: Ao executarmos o seguinte código script

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart() 
{ 
  
        ENUM_TIMEFRAMES time = PERIOD_D1;
        string szSymbol = "EURUSD";
        long id = ChartOpen(szSymbol, time);
        ChartRedraw(id);

        ChartIndicatorAdd(id, 0, iCustom(szSymbol, time, "Media Movel.ex5"));
}

em qualquer janela, iremos ter a abertura de uma nova janela com o símbolo EURUSD e conseguiremos adicionar um indicador customizado na janela recém criada .... PERFEITO ... no entanto se tornarmos este mesmo script em um serviço conforme mostrado abaixo:

#property service
//+------------------------------------------------------------------+
void OnStart()
{
        ENUM_TIMEFRAMES time = PERIOD_D1;
        string szSymbol = "EURUSD";
        long id = ChartOpen(szSymbol, time);
        ChartRedraw(id);

        ChartIndicatorAdd(id, 0, iCustom(szSymbol, time, "Media Movel.ex5"));
}

o comportamento já será diferente, a janela irá ser criada conforme o esperado, mas mesmo tendo o valor da ID da janela não conseguimos adicionar nenhum indicador na janela, é retornado o erro 4802 ....  

Seria MUITO BOM se um serviço pode-se adicionar um indicador, já que podemos usar serviços para ficar fazendo algum trabalho extra, sem sobrecarregar um EA por exemplo, mas mesmo que não fosse possível fazer isto, fica a sugestão de quem sabe, permitir que um serviço pode-se executar um script, de qualquer forma já ajudaria muito...

E se não for abusar muito ...também seria muito bom se a linguagem MQL5, tivesse a função EXIT() para permitir uma forma rápida de saída de um código recursivo quando o mesmo gera uma falha, mas não ao invés de termos uma saída abruta, podermos tratar o erro e finalizar completamente a execução do programa via chamada a EXIT() ... assim como acontece quando chamamos ExpertRemove() para finalizar um EA ... de qualquer forma OBRIGADO PELA ATENÇÃO ... 😁👍

 

Instalei o MT5 várias vezes para o modo /portbale. Atualmente, três estão funcionando em paralelo, dois estão no canal de liberação enquanto comercializam e um no canal beta.

Infelizmente, a janela que pergunta se atualizar agora ou mais tarde para uma nova atualização não indica qual versão pode ser atualizada: Liberação ou Beta:


Seria bom se esta janela simplesmente dissesse:"Release update (ou atualizações beta) foram baixadas". Oportunamente ... "

Desta forma, o usuário saberia se quer atualizar durante a semana (o FX está aberto) ou melhor ainda apenas no fim de semana.

Talvez também se possa distinguir entre atualizações de lançamento e atualizações beta por cor. Isso pode ajudar a evitar erros.

 
MetaQuotes:

Na sexta-feira 29 de abril de 2022, será lançada uma versão atualizada da plataforma MetaTrader 5. Nele fizemos algumas pequenas adições e correções com base no feedback recebido após a publicação da versão 3270.

A atualização inclui as seguintes mudanças:

  1. Terminal: preenchimento fixo dos níveis de Trailing Stop padrão no menu de contexto de pedidos e posições abertas.
  2. Terminal: Traduções atualizadas da interface do usuário.
  3. Correções para os registros cruzados.

A atualização estará disponível através do sistema Live Update.

Como existem correções "pequenas", peço que incluam no próximo lançamento uma correção para este bug: remoção de informações sobre o volume de ticks ao copiar ticks de um símbolo de fonte Time$Sale para um símbolo personalizado, usando a funcionalidade padrão da plataforma MT5.

Este é um bug pequeno, mas muito irritante para aqueles que trabalham com instrumentos de câmbio, porque este bug leva ao fato de que em futuros "contínuos" personalizados, construídos em MT5, é impossível aplicar indicadores que funcionam com o histórico do tick de câmbio!

NQ contínua

 
Este aviso do compilador não é redundante?
void OnStart()
{
  Print(DEAL_REASON_TP == ORDER_REASON_TP); // implicit conversion from 'enum ENUM_ORDER_REASON' to 'enum ENUM_DEAL_REASON'
}
 

Erro de compilação com conversão de enumeração.

ENUM_DEAL_REASON Reason() { return(DEAL_REASON_CLIENT); }

void OnStart()
{
  ENUM_ORDER_REASON Reason1 = Reason();                    // 'Reason' - cannot convert enum
  ENUM_ORDER_REASON Reason2 = (ENUM_ORDER_REASON)Reason(); // OK
}

Cadeia de busca:Oshibka 040.

 
fxsaber #:

Erro de compilação com conversão de enumeração.

Cadeia de busca:Oshibka 040.

Parece não haver erro. Cada enumeração é de seu próprio tipo. Uma só pode ser lançada para outra através de uma conversão explícita. O compilador irá colidir com o implícito.

 
Stanislav Korotky #:

Não parece haver nenhum erro. Cada enumeração é de seu próprio tipo. Uma só pode ser lançada para outra através de uma conversão explícita. O compilador jura pelo implícito.

Erro ao invés de advertência.

'Reason' - cannot convert enum
1 errors, 0 warnings            
 
fxsaber #:

Erro ao invés de advertência.

E daí?

 
Stanislav Korotky #:

E daí?

Bem, então não vamos compilar tal código.

void OnStart()
{
  double d = 0;
  int i = d;
}
 
fxsaber #:

Erro ao invés de advertência.

De acordo com a Documentação: o enumerose refere a algum conjunto limitado de dados. Neste sentido, a comparação e a atribuição não são fundamentalmente diferentes: em ambos os casos deve haver ou Advertência ou Erro. E o fato de que você pode comparar e não pode atribuir é um absurdo