Функция OnTradeTransaction - страница 2

 
Yurich:

Зачем исправлять? Следуя этой логике, много чего еще можно исправить, например, POSITION_TYPE_BUY :)

Хотел ответить, что исправить таки нужно, потому что нельзя однозначно сказать, удалось ли получить свойство (и оно = 0) или это OrderGetInteger не смог выполнится (и присвоился 0 по умолчанию):

                ENUM_ORDER_STATE state = (ENUM_ORDER_STATE)OrderGetInteger( ORDER_STATE );
        
                switch ( state )
                {
                        case ORDER_STATE_STARTED:                               // Ордер проверен на корректность, но еще не принят брокером
                        case ORDER_STATE_FILLED:                                // Ордер выполнен полностью
                        {

 

А потом обнаружил, что есть 2-й вариант функции с проверкой результата:

//2. Возвращает true или false в зависимости от успешности выполнения функции.  В случае успеха значение свойства помещается в приемную переменную, передаваемую по ссылке последним параметром.

bool  OrderGetInteger(
   ENUM_ORDER_PROPERTY_INTEGER  property_id,      // идентификатор свойства
   long&                long_var          // сюда примем значение свойства
   );

 

Так действительно неоднозначности нет, до проверки состояния просто не дойдет дело.

 

Андрей, есть некие правила и общие положения,

а иногда просто хороший тон писать (код) грамотно.

Да, я не дочитал, что это поле не заполняется, НО (и это мне и вам очевидно),

что в этом поле (даже если оно не заполняется) не должно быть значащего выражения.

Я бы так (как сделано у MQ) никогда не сделал. 

 

Перечисления начинать с 0 тоже принято.

Я не знаю, как правильно. Для меня главное, что я могу получить ожидаемый результат.

 
Конечно с нуля, но не со значащего выражения! 
 

Зачем вам вообще функция OnTradeTransaction ?

Бестолковая функция, можно и без нее спокойно обойтись. 

 
Serj_Che:

Зачем вам вообще функция OnTradeTransaction ?

Бестолковая функция, можно и без нее спокойно обойтись. 

Хочу и использую, а вы не хотите и не используете.

У каждого свой выбор (слава богу, что он есть). 

И ещё...

А что вы используете, при работе с OrderSendAsync

 
Mikalas:

Хочу и использую, а вы не хотите и не используете.

У каждого свой выбор (слава богу, что он есть). 

И ещё...

А что вы используете, при работе с OrderSendAsync? 

Только не нервничайте. Я вам не запрещаю)

Теперь понятно. Я не пользую  OrderSendAsync. C OrderSendAsync возможно понадобится OnTradeTransaction.

Но лучше без него, имхо. 

 

Боже упаси нервничать!

Повторяю, у каждого свой выбор. 

 

Я уважаю ваш выбор. 

В справке написано, что OnTradeTransaction может и не дойти (потеряться).

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

 

Сергей!

Никто не может гарантировать, что клиент-сервер на 100% без ошибок и потерь!

Что не используй, всё-равно есть вероятность, что что-то потеряется.....

OnTrade - так же может не дойти или потеряться. 

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