Erros, bugs, perguntas - página 1261

 

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

As aplicações móveis MetaTrader 4 e MetaTrader 5 para Android foram actualizadas

pav36krs, 2014.12.20 10:21

Os meus amigos ajudam!!! Descarreguei o Metatrader, e não começará em 32 bits no meu Windows de 64 bits. Esta é a primeira vez que me deparo com tal problema antes de instalar o Metatrader a partir do alpha forex, e tudo funcionou bem.

 

Erros em operações bitwise.

Print(int(1)<<34);

Recebemos 4, que deveriam ser 0. Quantos anos de polimento de MT, e ainda assim tais erros.

 

E o quê, o compilador não jurou esta compensação? Duvido.

Seja como for, era isso que queríamos.

00000000000000000000000000000001 << 34
00000000000000000000000000000100
 
GVladimir:

E o quê, o compilador não jurou esta compensação? Duvido.

Seja como for, era isso que queríamos.

É óbvio que não sabe muito bem como funcionam os turnos de bits. Nada pode ocorrer lá nos bits de baixa ordem. Em caso de dúvida, C++ é a sua ajuda.
 
meat:
Nada pode ocorrer lá nas partes de baixa ordem.
Na MQL penso que todos os turnos de bits são implementados como cíclicos (ROL/ROR), (que provavelmente não conhece, porque nem C nem C++ os têm) apenas para tais situações
 
GVladimir:
Na MQL acredito que todos os turnos de bits são implementados como turnos cíclicos (ROL/ROR), (que provavelmente não conhece, porque nem C nem C++ os têm) apenas para tais situações

A documentação MQL não diz nada sobre um turno cíclico, pelo que o turno habitual é assumido. Mas encontrei aí a seguinte frase

Não é recomendado deslocar mais ou igual número de bits do que o número de bits na variável a ser deslocada, porque o resultado desta operação é indefinido.

Isto é incorrecto. Não pode haver um resultado indefinido em operações bitwise. É que o bit de partida ou é armazenado numa bandeira especial ou não é armazenado, mas isto não tem qualquer efeito sobre o algoritmo de deslocamento, ou seja, os bits certos são preenchidos com zeros de qualquer forma. Se for um deslocamento cíclico, isto deve ser explicitamente declarado (embora um deslocamento normal compatível com C++ seria mais correcto).

 

é possível ligar um indicador compilado pelo antigo edifício como recurso a outro indicador?

Não consigo que funcione desta forma:

........ 

#resource "\\Indicators\\тфьу.ex4"

........ 

int OnCalculate(const int rates_total,

                const int prev_calculated,

                const datetime &time[],

                const double &open[],

                const double &high[],

                const double &low[],

                const double &close[],

                const long &tick_volume[],

                const long &volume[],

                const int &spread[])

  {

........ 

ExtLimeBuffer[i]=iCustom(_Symbol,0,"::Indicators\\тьфу.ex4",pr1,pr2,pr3,pr4,pr5,pr6,pr7,2,i);

........ 

  return(rates_total);

}


 

o compilador diz o seguinte:

unknown resource type 'C:\Program Files\MT4\MQL4\Indicators\тфьу.ex4' тфьу1.mq4 10 1

 

 


 
meat:

A documentação MQL não diz nada sobre um turno cíclico, pelo que assume um turno normal. No entanto, encontrei aí uma frase como essa:

Isto é incorrecto. Não pode haver um resultado indefinido em operações bitwise. É que o bit de partida ou é armazenado numa bandeira especial, ou não é armazenado, mas isto não afecta o algoritmo do turno, ou seja, os bits certos são preenchidos com zeros de qualquer forma. Se for um turno cíclico, é necessário especificar explicitamente isto (embora um turno simples++-compatível fosse mais correcto).

Pode ser.

Um máximo de 5 bits para inteiros de 32 bits (ou 6 bits para inteiros de 64 bits) deve estar envolvido em operações de turno. Se um valor de turno leva mais de 5 (ou 6) bits, processadores diferentes tratam esta situação de forma diferente. Na documentação, acabámos de reflectir este facto ao afirmar que o resultado da operação é indefinido.

Документация по MQL5: Торговые функции / OrderCalcProfit
Документация по MQL5: Торговые функции / OrderCalcProfit
  • www.mql5.com
Торговые функции / OrderCalcProfit - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
sanyooooook:

...
o compilador escreve desta forma:

unknown resource type 'C:\Program Files\MT4\MQL4\Indicators\тфьу.ex4' тфьу1.mq4 10 1

Aparentemente, o compilador é mais inteligente do que parece. Quer encontrar o código fonte de tfu1.mq4 e depois anexá-lo como um recurso.