Pergunta um recém-chegado! - página 23

 
Михаил:
longo é um tipo variável, mas repito que não é correcto.

PositionGetInteger() devolve tipo longo. Não precisa de se preocupar com tipos tão longos comoENUM_POSITION_TYPE.

De qualquer modo, o programador efectua uma conversão de tipo. É melhor que o escreva mais curto.

Aqui dão conselhos a programadores novatos...

 

Nextor257:

...

Porque é (longo) especificado antes de POSITION_TYPE_BUY ?

...

Trata-se de uma mudança de tipo por uma variável na mosca.

 
Dmitry Fedoseev:

PositionGetInteger() devolve tipo longo. Não precisa de se preocupar com tipos tão longos comoENUM_POSITION_TYPE.

De qualquer modo, o programador efectua uma conversão de tipo. É melhor que o escreva mais curto.

Aqui dão conselhos a principiantes...

Incorrecto, porque depois disso a função de comparação é executada:

 if(type==(long)POSITION_TYPE_BUY

E POSITION_TYPE não é longo, mas

ENUM_POSITION_TYPE

Identificador

Descrição

POSITION_TYPE_BUY

Comprar

POSITION_TYPE_SELL

Venda

 
Михаил:

Errado, porque depois vem a comparação:

E POSITION_TYPE não é longo, mas

ENUM_POSITION_TYPE

Identificador

Descrição

POSITION_TYPE_BUY

Comprar

POSITION_TYPE_SELL

Venda

Sim... tem um conhecimento muito profundo de programação.
 
Dmitry Fedoseev:
Sim... tem um conhecimento muito profundo em programação.

Parece não ter qualquer conhecimento - apenas ambição!

ENUM_POSITION_PROPERTY_INTEGER

Identificador

Descrição

Tipo

POSIÇÃO_TIME

Tempo de abertura da posição

data/hora

POSITION_TIME_MSC

Tempo de abertura da posição em milissegundos a partir de 01.01.1970

longo

POSITION_TIME_UPDATE

Tempo de mudança de posição em segundos desde 01.01.1970

longo

POSITION_TIME_UPDATE_MSC

Tempo de mudança de posição em milissegundos desde 01.01.1970

longo

POSIÇÃO_TIPO

Tipo de posição

ENUM_POSITION_TYPE

POSIÇÃO_MAGIC

Número mágico para a posição (ver ORDER_MAGIC)

longo

POSITION_IDENTIFIER

O identificador da posição é um número único, que é atribuído a cada posição recentemente aberta e permanece inalterado durante toda a sua vida útil. A inversão de uma posição não altera o identificador da posição.

longo

 
Михаил:

Parece não ter qualquer conhecimento - apenas ambição!

ENUM_POSITION_PROPERTY_INTEGER

Identificador

Descrição

Tipo

POSIÇÃO_TIME

Tempo de abertura da posição

data/hora

POSITION_TIME_MSC

Tempo de abertura da posição em milissegundos a partir de 01.01.1970

longo

POSITION_TIME_UPDATE

Tempo de mudança de posição em segundos desde 01.01.1970

longo

POSITION_TIME_UPDATE_MSC

Tempo de mudança de posição em milissegundos desde 01.01.1970

longo

POSIÇÃO_TIPO

Tipo de posição

ENUM_POSITION_TYPE

POSIÇÃO_MAGIC

Número mágico para a posição (ver ORDER_MAGIC)

longo

POSITION_IDENTIFIER

O identificador da posição é um número único, que é atribuído a cada posição recentemente aberta e permanece inalterado durante toda a sua vida útil. A inversão de uma posição não altera o identificador da posição.

longo

Para a função PositionGetDouble()

É o caso em que as pessoas dizem: "quando se olha para o livro, vê-se uma estatueta".

Tente compilá-lo primeiro:

ENUM_POSITION_TYPE z=PositionGetInteger(POSITION_TYPE);

Haverá um aviso.

Uma função não pode produzir tipos diferentes em casos diferentes. Será longa em qualquer caso. E acreditava que a mesma função devolve tipos diferentes? Sim... Ninguém se surpreende com superstições neste fórum, é normal...

ENUM_POSITION_TYPE na coluna de tipo significa que todos os valores de retorno possíveis estão no enumerador correspondente.

Também ajudaria a prestar mais atenção, o quadro acima refere-se ao PositionGetInteger(), e o PositionGetDouble() escrito abaixo não tem absolutamente nada a ver com ele.

 

Pergunto-me quem vê a "figura" ....

Escrevi-o desta forma:

ENUM_POSITION_TYPE pos_type = ENUM_POSITION_TYPE(PositionGetInteger(POSITION_TYPE));
 
Dmitry Fedoseev:

Isto é uma mudança de tipo na mosca.

Muito obrigado.
 
Михаил:

Pergunto-me quem vê a "figura" ....

Escrevi-o desta forma:

ENUM_POSITION_TYPE pos_type = ENUM_POSITION_TYPE(PositionGetInteger(POSITION_TYPE));

Porquê escrever ENUM_POSITION_TYPE antes do PositionGetInteger? Porque, segundo a sua crença, a função PositionGetInteger com o identificador POSITION_TYPE já devolve o tipo ENUM_POSITION_TYPE.

 
Dmitry Fedoseev:

Porquê escrever ENUM_POSITION_TYPE antes de PositionGetInteger? Porque, segundo a sua crença, a função PositionGetInteger com identificador POSITION_TYPE já devolve o tipo ENUM_POSITION_TYPE.

Você é o Guru da programação - vá responder você mesmo....

E esta não é a minha "crença", mas a documentação...

Mas penso que a funçãoPositionGetInteger() devolve sempre o valor do tipo LONG e não importa o que estava "dentro" do INTRGER ou LONG.

Os programadores fizeram-no para evitar escrever duas funções.

Portanto, para obter o tipo de posição(e é INTEGER) é correcto fazer o que escrevi:

ENUM_POSITION_TYPE pos_type = ENUM_POSITION_TYPE(PositionGetInteger(POSITION_TYPE));