¡Un recién llegado pregunta! - página 23

 
Михаил:
long es un tipo variable, pero repito que no es correcto.

PositionGetInteger() devuelve el tipo long. No es necesario molestarse con tipos tan largos comoENUM_POSITION_TYPE.

De todos modos, el programador realiza una conversión de tipo. Será mejor que lo escribas más corto.

Aquí dan consejos a los principiantes...

 

Nextor257:

...

¿Por qué se especifica (long) antes de POSITION_TYPE_BUY?

...

Se trata de un cambio de tipo de una variable sobre la marcha.

 
Dmitry Fedoseev:

PositionGetInteger() devuelve el tipo long. No es necesario molestarse con tipos tan largos comoENUM_POSITION_TYPE.

De todos modos, el programador realiza una conversión de tipo. Será mejor que lo escribas más corto.

Aquí dan consejos a los principiantes...

Incorrecto, porque después se ejecuta la función de comparación:

 if(type==(long)POSITION_TYPE_BUY

Y POSITION_TYPE no es largo, pero

ENUM_POSITION_TYPE

Identificador

Descripción

POSICIÓN_TIPO_COMPRA

Comprar

POSICIÓN_TIPO_VENTA

Vender

 
Михаил:

Error, porque luego viene la comparación:

Y POSITION_TYPE no es largo, pero

ENUM_POSITION_TYPE

Identificador

Descripción

POSICIÓN_TIPO_COMPRA

Comprar

POSICIÓN_TIPO_VENTA

Vender

Sí... tienes un conocimiento muy profundo de la programación.
 
Dmitry Fedoseev:
Sí... tienes conocimientos muy profundos en programación.

Parece que no tienes ningún conocimiento, ¡sólo ambición!

ENUM_POSITION_PROPERTY_INTEGER

Identificador

Descripción

Tipo

POSITION_TIME

Tiempo de apertura de la posición

datetime

POSICIÓN_TIEMPO_MSC

Tiempo de apertura de la posición en milisegundos desde el 01.01.1970

largo

POSICIÓN_TIEMPO_ACTUALIZACIÓN

Tiempo de cambio de posición en segundos desde el 01.01.1970

largo

POSICIÓN_TIEMPO_ACTUALIZACIÓN_MSC

Tiempo de cambio de posición en milisegundos desde el 01.01.1970

largo

TIPO_POSICIÓN

Tipo de puesto

ENUM_POSITION_TYPE

POSICIÓN_MAGIA

Número mágico de la posición (véase ORDER_MAGIC)

largo

IDENTIFICADOR_DE_POSICIÓN

El identificador de puesto es un número único, que se asigna a cada puesto recién abierto y que permanece invariable durante toda su vida. La inversión de una posición no cambia el identificador de la posición.

largo

 
Михаил:

Parece que no tienes ningún conocimiento, ¡sólo ambición!

ENUM_POSITION_PROPERTY_INTEGER

Identificador

Descripción

Tipo

POSITION_TIME

Tiempo de apertura de la posición

datetime

POSICIÓN_TIEMPO_MSC

Tiempo de apertura de la posición en milisegundos desde el 01.01.1970

largo

POSICIÓN_TIEMPO_ACTUALIZACIÓN

Tiempo de cambio de posición en segundos desde el 01.01.1970

largo

POSICIÓN_TIEMPO_ACTUALIZACIÓN_MSC

Tiempo de cambio de posición en milisegundos desde el 01.01.1970

largo

TIPO_POSICIÓN

Tipo de puesto

ENUM_POSITION_TYPE

POSICIÓN_MAGIA

Número mágico de la posición (véase ORDER_MAGIC)

largo

IDENTIFICADOR_DE_POSICIÓN

El identificador de puesto es un número único, que se asigna a cada puesto recién abierto y que permanece invariable durante toda su vida. La inversión de una posición no cambia el identificador de la posición.

largo

Para la función PositionGetDouble()

Este es el caso que la gente dice: "cuando miras en el libro, ves una figurita".

Intenta compilarlo primero:

ENUM_POSITION_TYPE z=PositionGetInteger(POSITION_TYPE);

Habrá una advertencia.

Una función no puede producir diferentes tipos en diferentes casos. Será larga en cualquier caso. ¿Y crees que una misma función devuelve diferentes tipos? Sí... Nadie se sorprende de las supersticiones en este foro, es normal...

ENUM_POSITION_TYPE en la columna de tipo significa que todos los posibles valores de retorno están en el enumerador correspondiente.

También ayudaría prestar más atención, la tabla anterior se refiere a PositionGetInteger(), y la PositionGetDouble() escrita a continuación no tiene nada que ver.

 

Me pregunto quién ve la "figura" ....

Lo escribí así:

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

Se trata de un cambio de tipo sobre la marcha.

Muchas gracias.
 
Михаил:

Me pregunto quién ve la "figura" ....

Lo escribí así:

ENUM_POSITION_TYPE pos_type = ENUM_POSITION_TYPE(PositionGetInteger(POSITION_TYPE));

¿Por qué escribir ENUM_POSITION_TYPE antes del PositionGetInteger? Porque, según su creencia, la función PositionGetInteger con el identificador POSITION_TYPE ya devuelve el tipo ENUM_POSITION_TYPE.

 
Dmitry Fedoseev:

¿Por qué escribir ENUM_POSITION_TYPE antes de PositionGetInteger? Porque, según su creencia, la función PositionGetInteger con identificador POSITION_TYPE ya devuelve el tipo ENUM_POSITION_TYPE.

Usted es el Gurú de la programación - vaya a contestar usted mismo....

Y esto no es mi "creencia", sino la documentación...

Pero creo que la funciónPositionGetInteger() siempre devuelve el valor del tipo LONG y no importa lo que estaba "dentro" de INTRGER o LONG.

Los desarrolladores lo hicieron para evitar escribir dos funciones.

Por lo tanto, para obtener el tipo de posición(y es INTEGER) es correcto hacer lo que he escrito:

ENUM_POSITION_TYPE pos_type = ENUM_POSITION_TYPE(PositionGetInteger(POSITION_TYPE));