Ошибки, баги, вопросы - страница 1887

 
Vladimir Karputov:

Вы, как я вижу, не проверили код, который я показал. ДАвайте так: Вы сначала проверяете, потом снова зададите вопрос.

мне не нужно его преверять, я вижу: он возвращает, то что нужно

говорил о первом варианте использования функции

 
Alexandr Bryzgalov:

мне не нужно его преверять, я вижу что он возвращает, то что нужно

говорил о первом варианте использования функции


Ну ладно, тогда так. Пойдём от хвоста. 

1. PositionGetInteger:

Функция возвращает запрошенное свойство открытой позиции, предварительно выбранной при помощи функции...

То есть, перед использованием PositionGetInteger нужно сначала выбрать позицию.


2. Выбираем позицию при помощи PositionGetTicket. PositionGetTicket:

Возвращаемое значение

Тикет позиции. В случае неудачного выполнения возвращает 0.


А где у Вас проверка (после цикла), что там было возвращено от PositionGetTicket? Проверки нет, а там, между прочим возвращается "ноль" - то есть PositionGetTicket сработала с ошибкой - что равнозначно выбору позиции, которой нет. Затем Вы, не проверим результат PositionGetTicket, пытаетесь получить от несуществующей позиции её свойство. А там, в свойствах нусуществующей позиции, или мусор или просто данные обнулённых структур.


Подытожу: не проверив PositionGetTicket на возврат "нуля" дальше двигаться нельзя.

 
Vladimir Karputov:


Ну ладно, тогда так. Пойдём от хвоста. 

1. PositionGetInteger:

Функция возвращает запрошенное свойство открытой позиции, предварительно выбранной при помощи функции...

То есть, перед использованием PositionGetInteger нужно сначала выбрать позицию.


2. Выбираем позицию при помощи PositionGetTicket. PositionGetTicket:

Возвращаемое значение

Тикет позиции. В случае неудачного выполнения возвращает 0.


А где у Вас проверка (после цикла), что там было возвращено от PositionGetTicket? Проверки нет, а там, между прочим возвращается "ноль" - то есть PositionGetTicket сработала с ошибкой - что равнозначно выбору позиции, которой нет. Затем Вы, не проверим результат PositionGetTicket, пытаетесь получить от несуществующей позиции её свойство. А там, в свойствах нусуществующей позиции, или мусор или просто данные обнулённых структур.


Подытожу: не проверив PositionGetTicket на возврат "нуля" дальше двигаться нельзя.

Спасибо, очень детально и полезно.
 
Vladimir Karputov:


Ну ладно, тогда так. Пойдём от хвоста. 

1. PositionGetInteger:

Функция возвращает запрошенное свойство открытой позиции, предварительно выбранной при помощи функции...

То есть, перед использованием PositionGetInteger нужно сначала выбрать позицию.


2. Выбираем позицию при помощи PositionGetTicket. PositionGetTicket:

Возвращаемое значение

Тикет позиции. В случае неудачного выполнения возвращает 0.


А где у Вас проверка (после цикла), что там было возвращено от PositionGetTicket? Проверки нет, а там, между прочим возвращается "ноль" - то есть PositionGetTicket сработала с ошибкой - что равнозначно выбору позиции, которой нет. Затем Вы, не проверим результат PositionGetTicket, пытаетесь получить от несуществующей позиции её свойство. А там, в свойствах нусуществующей позиции, или мусор или просто данные обнулённых структур.


Подытожу: не проверив PositionGetTicket на возврат "нуля" дальше двигаться нельзя.

можно не распинаться )

не в этом вопрос

читайте правильно: нормально ли то, что функция на разные ситуации возвращает одно значение?

это правильно, что функция так поступает?
 
Vladimir Karputov:

Подытожу: не проверив PositionGetTicket на возврат "нуля" дальше двигаться нельзя.

Можно
 
Alexandr Bryzgalov:

что функция на разные ситуации возвращает одно значение?

это правильно, что функция так поступает?
К сожалению, да.
 
Alexandr Bryzgalov:

1. можно не распинаться )

не в этом вопрос

2. читайте правильно: нормально ли то, что функция на разные ситуации возвращает одно значение?

это правильно, что функция так поступает?


1. Вы грубиян, к тому же допустивший ошибку в коде, но не желающий это признать.

2. Функция работает абсолютно правильно. Так как она (PositionGetInteger(POSITION_TYPE)) может возвращать только ДВА значения - или POSITION_TYPE_BUY или POSITION_TYPE_SELL. Но не выбрав позицию (а Вы её не выбираете - Вы не проверяете что именно было выбрано) что-то требовать от (PositionGetInteger(POSITION_TYPE)) безрассудно.


Итог: когда Ваш код написан с логической ошибкой - Вы просто не имеет права, что-то требовать от системных функций.

 
Vladimir Karputov:

Итог: когда Ваш код написан с логической ошибкой - Вы просто не имеет права, что-то требовать от системных функций.

Хороший пример получился, когда на вопрос так и не ответили.
 
Vladimir Karputov:


1. Вы грубиян, к тому же допустивший ошибку в коде, но не желающий это признать.

2. Функция работает абсолютно правильно. Так как она (PositionGetInteger(POSITION_TYPE)) может возвращать только ДВА значения - или POSITION_TYPE_BUY или POSITION_TYPE_SELL. Но не выбрав позицию (а Вы её не выбираете - Вы не проверяете что именно было выбрано) что-то требовать от (PositionGetInteger(POSITION_TYPE)) безрассудно.


Итог: когда Ваш код написан с логической ошибкой - Вы просто не имеет права, что-то требовать от системных функций.

Простите, я не виноват что кто-то не видит вопрос.

То что в коде преднамеренная ошибка признал.

И как её исправить знаю.

Но вопрос в другом.

 

Почему функция PositionGetInteger(POSITION_TYPE) в случае не корректных входных параметров возвращает значение покупки( равное 0), а не ошибки(равное 0) ?

Причина обращения: