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

 
A100 #:

De acordo com a Documentação: o enumero se 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 você poder comparar e não poder atribuir é um disparate.

Não há diferença, o código de teste é incompleto - uma constante é usada em comparação enquanto é um valor variável na atribuição.

Aqui está o código completo:

void OnStart()
  {    
   ENUM_DEAL_REASON  ReasonD = DEAL_REASON_TP;

   ENUM_ORDER_REASON Reason1 = DEAL_REASON_TP;
   Reason1 = ReasonD;                          // ERROR
  
   Print(DEAL_REASON_TP == ORDER_REASON_TP);     
   Print(Reason1 == ReasonD);                  // ERROR
  }

O compilador verifica se há uma constante na enumeração, um aviso é gerado e se a constante é outra enumeração, o compilador imprime

'ENUM_DEAL_REASON::DEAL_REASON_TP' will be used instead of 'ENUM_ORDER_REASON::ORDER_REASON_TP'


No caso de uma variável, o compilador não sabe qual será o valor e gera um erro.


Decidimos que se uma enumeração em uma expressão não corresponder, sempre produzirá um erro, pois parece que poucas pessoas olham para as advertências, considerando-as sem importância...

 
sfestgaestrge
 


Espero que na próxima atualização móvel (ios), o MT5 dê "número mágico" para informações sobre acordos e posições.

É impossível acompanhar as negociações no celular quando se está usando vários EAs com números mágicos diferentes.

 
Guilherme Mendonca # :


Espero que na próxima atualização móvel (ios), o MT5 dê "número mágico" para informações sobre acordos e posições.

É impossível acompanhar as negociações no celular quando se está usando vários EAs com números mágicos diferentes.

Tente usar um comentário para cada transação.

 

No indicador via CopyTime() eu faço um pedido para obter dados do cronograma mensal. Se o gráfico abrir pela primeira vez, levou 117 segundos para obter menos de 300 barras para o símbolo GBPCHF.

Vídeo: https://drive.google.com/file/d/10KW5Usa1ZVONRghSZCHuji4h3CDQVma-/view?usp=sharing

Há uma menção tal na ajuda que qualquer dado TF é preparado independentemente de outros dados TF:

Não está claro porque leva tanto tempo para copiar 300 barras de outra TF. O indicador na história muitas vezes só precisa de valores de barras OLHC e não precisa de encaixe interno de outras TFs. Há alguma maneira de acelerar este momento? O mesmo código em MT4 é executado em menos de 0,05 segundos.

Arquivos anexados:
 

Cópia por tempo:

int cHigh=CopyHigh(_Symbol,0,T1,T2,_high);

Se a hora de início atingir uma barra inexistente - houve uma abertura tardia da sessão, e isso muitas vezes NÃO é o caso dos símbolos forex,

a função retorna -1, o que não é bem lógico. É mais correto devolver o mais próximo encontrado.

 

Boa tarde.

Onde posso fazer o download da última construção:

MetaTrader 5 construir 3280


O link só diz Março... 2361... :-(

 
Oleg_Filatov #:

Boa tarde.

Onde posso fazer o download da última construção:

MetaTrader 5 construir 3280


O link só diz Março... 2361... :-(

 
Oleg_Filatov #:

Boa tarde.

Onde posso fazer o download da última construção:

MetaTrader 5 construir 3280


O link só diz Março... 2361... :-(

32 bits não é atualizado há muito tempo...

 

Problem with return of ChartTimePriceToXY when chart is not on top


When I use ChartTimePriceToXY and the chart is not on top the X and Y values ​​extrapolate the chart size values ​​obtained through the CHART_WIDTH_IN_PIXELS and CHART_HEIGHT_IN_PIXELS properties.

Is this a error?

The result of the code below for on top and not on top charts is:
width=1578 height=700 x=1392 y=615 top=true
width=195 height=77 x=1536 y=-25 top=false

Note that the value of X is greater than the value of width, and the value of Y is less than height and less than 0.


void getXY()
  {

    MqlRates candles[];
    long width, height;
    int x = 0;
    int y = 0;
    bool top;

    CopyRates(_Symbol, _Period, 0, 5, candles);
    ArraySetAsSeries(candles, true);
    
    width   = ChartGetInteger(0, CHART_WIDTH_IN_PIXELS);
    height  = ChartGetInteger(0, CHART_HEIGHT_IN_PIXELS);
    top     = ChartGetInteger(0, CHART_BRING_TO_TOP);

    ResetLastError();
    
    if(!ChartTimePriceToXY(0, 0, candles[0].time, candles[0].close, x, y))
      {
       Print("Error to get X and Y positions - error n.", GetLastError());
      }

    Print(" width=", width, " height=", height, " x=", x, " y=", y, " top=", top);

  } 
Razão: