Новичок спрашивает! - страница 23

 
Михаил:
long - тип переменной, но повторяю, что это не правильно.

Все правильно. PositionGetInteger() возвращает тип long. Нафиг надо заморачиваться такими длинными типами типа ENUM_POSITION_TYPE.

В любом случае выполняет одно приведения типа. Так лучше писать короче. 

Насоветуют здесь новичкам... 

 

Nextor257:

... 

Зачем перед  POSITION_TYPE_BUY указано (long) ?

...

Это изменение типа переменой на лету.

 
Dmitry Fedoseev:

Все правильно. PositionGetInteger() возвращает тип long. Нафиг надо заморачиваться такими длинными типами типа ENUM_POSITION_TYPE.

В любом случае выполняет одно приведения типа. Так лучше писать короче. 

Насоветуют здесь новичкам... 

Не правильно, потому что потом идёт сравнение:

 if(type==(long)POSITION_TYPE_BUY

 

И POSITION_TYPE не long, а

ENUM_POSITION_TYPE

Идентификатор

Описание

POSITION_TYPE_BUY

Покупка

POSITION_TYPE_SELL

Продажа

 
Михаил:

Не правильно, потому что потом идёт сравнение:

 

И POSITION_TYPE не long, а

ENUM_POSITION_TYPE

Идентификатор

Описание

POSITION_TYPE_BUY

Покупка

POSITION_TYPE_SELL

Продажа

Дааа.. у вас  ооочень глубокие познания в программировании.
 
Dmitry Fedoseev:
Дааа.. увас  ооочень глубокие познания в программировании.

По видимому, у Вас, вообще никаких познаний нет - одни амбиции!

ENUM_POSITION_PROPERTY_INTEGER

Идентификатор

Описание

Тип

POSITION_TIME

Время открытия позиции

datetime

POSITION_TIME_MSC

Время открытия позиции в миллисекундах с 01.01.1970

long

POSITION_TIME_UPDATE

Время изменения позиции в секундах с 01.01.1970

long

POSITION_TIME_UPDATE_MSC

Время изменения позиции в миллисекундах с 01.01.1970

long

POSITION_TYPE

Тип позиции

ENUM_POSITION_TYPE

POSITION_MAGIC

Magic number для позиции (смотри ORDER_MAGIC)

long

POSITION_IDENTIFIER

Идентификатор позиции - это уникальное число, которое присваивается каждой вновь открытой позиции и не изменяется в течение всей ее жизни. Переворот позиции не изменяет идентификатора позиции.

long

 
Михаил:

По видимому у Вас, вообще никаких познаний нет - одни амбиции!

ENUM_POSITION_PROPERTY_INTEGER

Идентификатор

Описание

Тип

POSITION_TIME

Время открытия позиции

datetime

POSITION_TIME_MSC

Время открытия позиции в миллисекундах с 01.01.1970

long

POSITION_TIME_UPDATE

Время изменения позиции в секундах с 01.01.1970

long

POSITION_TIME_UPDATE_MSC

Время изменения позиции в миллисекундах с 01.01.1970

long

POSITION_TYPE

Тип позиции

ENUM_POSITION_TYPE

POSITION_MAGIC

Magic number для позиции (смотри ORDER_MAGIC)

long

POSITION_IDENTIFIER

Идентификатор позиции - это уникальное число, которое присваивается каждой вновь открытой позиции и не изменяется в течение всей ее жизни. Переворот позиции не изменяет идентификатора позиции.

long

Для функции PositionGetDouble() 

Этот тот случай, про который в народе говорят "смотрит в книгу, видит фигу".

Для начала попробуйте откомпилировать:

ENUM_POSITION_TYPE z=PositionGetInteger(POSITION_TYPE);

 Будет предупреждение.

Не может одна функция в разных случаях выдавать разные типы, в любом случае будет long. А вы поверили, что одна и та же функция возвращает разные типы?  Да... суевериями на этом форуме уже никто не удивит, это нормально...

 ENUM_POSITION_TYPE в колонке типа означает, что все возможные возвращаемые значения есть в соответствующем энумераторе.

Еще бы внимания побольше не помешало, приведенная табличка относится к PositionGetInteger(), а  PositionGetDouble()  написанное снизу вообще не при делах.

 

Интересно кто видит "фигу"....

Я написал так:

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

Это изменение типа переменой на лету.

Спасибо большое.
 
Михаил:

Интересно кто видит "фигу"....

Я написал так:

ENUM_POSITION_TYPE pos_type = ENUM_POSITION_TYPE(PositionGetInteger(POSITION_TYPE)); 

Зачем писать ENUM_POSITION_TYPE перед PositionGetInteger? Ведь в соответствии с вашим поверьем функция PositionGetInteger с идентификатором POSITION_TYPE и так возвращает тип ENUM_POSITION_TYPE.

 
Dmitry Fedoseev:

Зачем писать ENUM_POSITION_TYPE перед PositionGetInteger? Ведь в соответствии с вашим поверьем функция PositionGetInteger с идентификатором POSITION_TYPE и так возвращает тип ENUM_POSITION_TYPE.

Вы же ГУРУ в программировании - сами и ответьте....

И это не моё "поверье", а документация... 

Но я думаю, что функция  PositionGetInteger() всегда возвращает значение типа LONG, и не важно что было "внутри" INTRGER или LONG.

Разработчики это сделали для того, чтобы не писать две функции.

Поэтому, чтобы получить тип позиции (а оно INTEGER) правильно делать так, как я написал:

ENUM_POSITION_TYPE pos_type = ENUM_POSITION_TYPE(PositionGetInteger(POSITION_TYPE));
Причина обращения: