Ошибки, баги, вопросы - страница 1886
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
И в чём вопрос?
Где видно, что под номером "i" находится позиция с тикетом таким-то, по символу такому-то? В общем кроме простого вывода порядкового номера выводите ещё и тикет и символ.
Нормално ли то, что бы на разные ситуации одна функция дает одинаковое значение?
ЗЫ: кстати в посте был вопрос.
суть в том, что если выбрать покупку, то функция(PositionGetInteger(POSITION_TYPE)) возвращает 0
и если выбрать не существующую позицию, функция так же вернет 0
Нормално ли то, что бы на разные ситуации одна функция дает одинаковое значение?
Что есть "разные ситуации"? И сделайте как я рекомендовал выше:
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Ошибки, баги, вопросы
Vladimir Karputov, 2017.05.12 11:15
...
В общем кроме простого вывода порядкового номера выводите ещё и тикет и символ.
Понимаю, что нужно проверять, но всякое бывает...
PositionGetInteger
Функция возвращает запрошенное свойство открытой позиции, предварительно выбранной при помощи функцииPositionGetSymbolилиPositionSelect. Свойство позиции должно быть типа datetime, int. Существует 2 варианта функции.
1. Непосредственно возвращает значение свойства.
long PositionGetInteger(
ENUM_POSITION_PROPERTY_INTEGER property_id // идентификатор свойства
);
2. Возвращает true или false в зависимости от успешности выполнения функции. В случае успеха значение свойства помещается в приемную переменную, передаваемую по ссылке последним параметром.
bool PositionGetInteger(
ENUM_POSITION_PROPERTY_INTEGER property_id, // идентификатор свойства
long& long_var // сюда примем значение свойства
);
Параметры
property_id
[in] Идентификатор свойства позиции. Значение может быть одним из значений перечисленияENUM_POSITION_PROPERTY_INTEGER.
long_var
[out] Переменная типа long, принимающая значение запрашиваемого свойства.
Возвращаемое значение
Значение типаlong. В случае неудачного выполнения возвращает 0.
Тоньше ситуация с мэджиком. Поэтому логично делать проверку (PositionGetInteger(POSITION_TICKET) > 0).
Да, вкусре что нужно делать проверку.
но при написании функции всегда стараешься, что бы при разных ситуациях возвращалось разное значение.
считаю неверным, что при разных ситуациях из функци выходит одно значение.но при написании функции всегда стараешься, что бы при разных ситуациях возвращалось разное значение.
Так мэджик и упомянул по этой причине. Что возвращать в случае ошибки PositionGetInteger(POSITION_MAGIC) ?
Нормално ли то, что бы на разные ситуации одна функция дает одинаковое значение?
ЗЫ: кстати в посте был вопрос.
суть в том, что если выбрать покупку, то функция(PositionGetInteger(POSITION_TYPE)) возвращает 0
и если выбрать не существующую позицию, функция так же вернет 0
Так ведь первый вызов используется тогда, когда Вы ГАРАНТИРОВАННО выбрали позицию (например как у Вас в цикле). А вот вторая форма вызова
для случаев, когда позиция выбирается с бухты барахты.
Сделайте так и поверьте, что получаете в переменную "result" - всё станет на свои места:
0 - позиция открыта вручную. правильно?
Так ведь первый вызов используется тогда, когда Вы ГАРАНТИРОВАННО выбрали позицию (например как у Вас в цикле). А вот вторая форма вызова
для случаев, когда позиция выбирается с бухты барахты.
Сделайте так и поверьте, что получаете в переменную "result" - всё станет на свои места:
не об этом вопрос, а о том что функция на разные ситуации возвращает одно значение.
что как проверить знаю
изначально вопрос был о том нормально ли это вообще?
ЗЫ: ошибка может быть допущена не преднамерено и тогда в 100000 коде устанешь искать.
Что? Не нужно допускать ошибки? )
не об этом вопрос, а о том что функция на разные ситуации возвращает одно значение.
что как проверить знаю
изначально вопрос был о том нормально ли это вообще?
Вы, как я вижу, не проверили код, который я показал. ДАвайте так: Вы сначала проверяете, потом снова зададите вопрос.