"Плавающая" ошибка PositionSelect() - страница 6

 
Karputov Vladimir:
Цифири под Вашим аватаром Вам не принадлежат, поэтому Вы над ними не властны (Вы не можете по своему хотению изменять их).

А я не сам хочу изменить, прошу Вас :)

Ну если на 1000 нельзя, то хотябы на 100 умножить.

 
prostotrader:

А я не сам хочу изменить, прошу Вас :)

Ну если на 1000 нельзя, то хотябы на 100 умножить.

Низзя. Не положено. Невозможно.
 
Karputov Vladimir:

Цифири под Вашим аватаром Вам не принадлежат, поэтому Вы над ними не властны (Вы не можете по своему хотению изменять их).

 

Добавлено.

Забудьте про ордера, пока не прошла транзакция с типом  TRADE_TRANSACTION_DEAL_ADD. Почему "забудьте"? Потому что это НЕПРАВИЛЬНО.

Забудьте про сделки, скажу Вам по-секрету, что про сделки можно узнать из истории,

когда пришла историческая транзакция. Ордера нет, значит можно смотреть, что он "накрвырял"

С помощью этой простой функции:

double GetDealsVolume(const string a_symbol,const ulong a_ticket,const datetime start)
  {
   double volume=0;
   if(HistorySelect(start-180,TimeTradeServer()+180))
     {
      int deals=HistoryDealsTotal();
      if(deals>0)
        {
         for(int i=deals-1; i>=0; i--)
           {
            ulong deal_ticket=HistoryDealGetTicket(i);
            ulong ticket=ulong(HistoryDealGetInteger(deal_ticket,DEAL_ORDER));
            if(( ticket>0) && (ticket==a_ticket))
              {
               volume+=HistoryDealGetDouble(deal_ticket,DEAL_VOLUME);
              }
           }
        }
     }
   return( volume );
  } 
 
prostotrader:

Забудьте про сделки, скажу Вам по-секрету, что про сделки можно узнать из истории,

когда пришла историческая транзакция. 

С помощью этой простой функции:

Вы невнимательны: 

...
Забудьте про ордера, пока не прошла транзакция с типом  TRADE_TRANSACTION_DEAL_ADD. Почему "забудьте"? Потому что это НЕПРАВИЛЬНО.

 Потом про ордера можете вспоминать.

 
Karputov Vladimir:

Вы невнимательны: 

 Потом про ордера можете вспоминать.

Спасибо, я постораюсь не забыть :)

Так что насчёт х 100? 

Добавлено:

Только вот в чём беда:

Истор. транзакция приходит первой, а как узнать, что он первая?

Или наоборот Сделочная транзакция первая. 

 
prostotrader:

Спасибо, я постораюсь не забыть :)

Так что насчёт х 100? 

Я уже отвечал:

 
prostotrader:

...

Добавлено:

Только вот в чём беда:

Истор. транзакция приходит первой, а как узнать, что он первая?

Или наоборот Сделочная транзакция первая. 

Нужно подумать. Уточните, это в случае, когда срабатывает ордер объёмом более 1?
 
Karputov Vladimir:
Нужно подумать. Уточните, это в случае, когда срабатывает ордер объёмом более 1?
Да не важно какой ордер и не важно какой объём
 

Если бы всё работало как сказал  MQ Alexander , то

и никаких бы проблем небыло.

А так, как есть, невозможно определить... :( 

Потому что сделка может уже быть в истории ещё до прихода Сделочной транзакции (Deals done: 1.0). 

 

А по словам Алексадра работало бы так ( и было бы правильно! ): 

При поступленни исторической транзакции

Volume initial - Volume current = Deals done - Сделочная транзакция уже пришла

Не ставим флаг и разбираемся с позициями и ордерами!

-------------------------------- 

Volume initial - Volume current != Deals done - Сделочная транзакция - следующая

Ставим флаг, дожидаемся Сделочной транзакции и по флагу разбираемся с позициями и ордерами! 

Всё!  

 
Обновляется история сделок до прихода тразакции TRADE_TRANSACTION_DEAL_ADD
Необработана, Начата: 2016.08.15 18:43, #1537513
Причина обращения: