Erros, bugs, perguntas - página 2729

 
Alexey Viktorov:

Isto não é uma característica do mql5, são apenas algumas tentativas de ensinar a ordem.

a ordem de acesso é quando o compilador dá um aviso (ou erro). a conversão de inteiros em fracções retorna 0 - isto é um disparate, não é uma ordem. 90% dos códigos antigos quebrarão dessa forma.

e repare, a variante de trabalho ainda estava com int! ou seja, a questão não é sobre a conversão do tipo na etapa de substituição, mas na etapa de cálculo

ACRESCENTADO: comutado para MQ-demo, actualizou o terminal de trabalho. Não tem este problema.

 
Erro de compilação
class A {  
public:
        static int i;
} a; //Error: unresolved static variable 'A::i'
int A::i = 0;
 
Igor Zakharov:

ordenar é quando o compilador dá um aviso (ou erro). converter inteiros em fracções retorna 0 - isto é um disparate, não uma ordem. é assim que 90% dos códigos antigos se quebram.

e repare, a variante de trabalho ainda estava com int! ou seja, a questão não é sobre a conversão do tipo na etapa de substituição, mas na etapa de cálculo

ACRESCENTADO: comutado para MQ-demo, actualizou o terminal de trabalho. Não tem este problema.

Não será a falta de destaque das opções possíveis neste caso suspeito?

   ObjectSetDouble (0,name,OBJPROP_ANGLE,dir// тут должен появиться список вариантов переменных double
 
Erro durante a execução
class A {  
public:
         A() { i = ++ii; printf( "%d", i ); }
        ~A() {           printf( "%d", i ); }
        int i;
        static int ii;
};
int A::ii = 0;
A a[ 2 ];
void OnStart() {}

  • O resultado em MQL: 1212
  • e em C++: 1221
 
Alexey Viktorov:

Não será a falta de destaque das opções possíveis neste caso suspeito?

:)

 
Igor Zakharov:

:)

Sim... Estranho, durante algum tempo, variáveis de tipo inapropriado não foram destacadas. Talvez o fixem de propósito ou prestem atenção a este diálogo e o voltem a fixar. De qualquer modo, se a função requerer o dobro do tipo variável, o dobro deve ser utilizado.

 
Sempre foi um erro.
#define  MACRO( X, Y )
MACRO( 1, 2, 3) //Warning: too many arguments for function-like macro 'MACRO'
Porquê um aviso? Especialmente porque estão sempre em número excessivo e por vezes não se presta atenção
 
Alexey Viktorov:

Sim... Estranho, durante algum tempo, variáveis de tipo inapropriado não foram destacadas. Talvez o fixem de propósito ou prestem atenção a este diálogo e o voltem a fixar. De qualquer modo, se a função exigir o dobro do tipo da variável, o dobro deve ser utilizado.

Alexei, reparei que gostas de links para documentação, tenho um para ti :)

https://www.mql5.com/ru/docs/basis/types/casting

int para o dobro é uma conversão implícita válida sem perda de dados. legítima.

Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Часто возникает необходимость преобразовать один числовой тип в другой. Не каждый числовой тип допустимо преобразовать в другой, допустимые преобразования в MQL5 показаны на схеме: Сплошные линии со стрелками обозначают преобразования, которые выполняются без потери информации. Вместо типа char может выступать тип bool (оба занимают в памяти 1...
 

pergunta sobre o funcionamento do testador de estratégias.

Estou a fazer o teste. O Conselheiro Especialista abre uma posição com SL e TP. Depois rola e a posição é fechada sem ser reaberta.

O que é isso? Um insecto? Há já algum tempo que não utilizo o testador e este não tinha tais problemas. Abaixo está o registo do testador. Vemos que a posição foi aberta e fechada após o capotamento e depois está meio escrito que foi aberta via COMPRAR. Coloquei no testador o comando

PositionSelect(_Symbol) para verificar se existem posições abertas após o capotamento, o resultado é sempre o mesmo - sem posições abertas.


2020.04.28 18:14:14.609 2014.01.09 05:00:00 compra imediata 1,00 AUDUSD a 0,88800 sl: 0,88450 tp: 0,89200 (0,88750 / 0,88800 / 0,88750)

2020.04.28 18:14:14.609 2014.01.09 05:00:00 negócio #8 comprar 1,00 AUDUSD a 0,88800 feito (com base na encomenda #8)

2020.04.28 18:14:14.610 2014.01.09 05:00:00 negócio feito [#8 comprar 1.00 AUDUSD a 0.88800

2020.04.28 18:14:14.610 2014.01.09 05:00:00 encomenda efectuada compra 1,00 a 0,88800 [#8 compra 1,00 AUDUSD a 0,88800


2020.04.28 18:14:24.169 2014.01.09 23:59:59 negócio #9 vender 1,00 AUDUSD a 0,88980 feito (com base no pedido #9)

2020.04.28 18:14:24.169 2014.01.09 23:59:59 rollover deal done [#9 vender 1.00 AUDUSD a 0.88980

2020.04.28 18:14:24.170 2014.01.09 23:59:59 negócio #10 comprar 0,00 AUDUSD a 0,8899950 feito (com base na encomenda #10)

2020.04.28 18:14:24.170 2014.01.09 23:59:59 negócio de capotagem feito [#10 comprar 0,00 AUDUSD a 0,8899950]


 
Igor Zakharov:

Alexei, reparei que gostas de links para documentação, tenho um para ti :)

https://www.mql5.com/ru/docs/basis/types/casting

int para o dobro é uma conversão implícita válida sem perda de dados. legítima.

Faço a ligação à documentação para que não tenha de reescrever a documentação no correio e para que as pessoas se habituem a ler a documentação. Imagine que houve aqui pessoas no fórum que não sabiam que a documentação existia de todo. Quanto a mim pessoalmente, vi uma imagem assim na documentação, mas não tentei compreendê-la bem. O hábito de utilizar variáveis do tipo que a função requer é suficiente para mim. Como último recurso, forçarei a conversão para o tipo certo.