"Плавающая" ошибка PositionSelect() - страница 6 12345678 Новый комментарий prostotrader 2016.08.15 17:42 #51 Karputov Vladimir: Цифири под Вашим аватаром Вам не принадлежат, поэтому Вы над ними не властны (Вы не можете по своему хотению изменять их).А я не сам хочу изменить, прошу Вас :)Ну если на 1000 нельзя, то хотябы на 100 умножить. Vladimir Karputov 2016.08.15 17:44 #52 prostotrader: А я не сам хочу изменить, прошу Вас :)Ну если на 1000 нельзя, то хотябы на 100 умножить.Низзя. Не положено. Невозможно. prostotrader 2016.08.15 17:45 #53 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 ); } Vladimir Karputov 2016.08.15 17:53 #54 prostotrader: Забудьте про сделки, скажу Вам по-секрету, что про сделки можно узнать из истории,когда пришла историческая транзакция. С помощью этой простой функции:Вы невнимательны: ...Забудьте про ордера, пока не прошла транзакция с типом TRADE_TRANSACTION_DEAL_ADD. Почему "забудьте"? Потому что это НЕПРАВИЛЬНО. Потом про ордера можете вспоминать. prostotrader 2016.08.15 17:54 #55 Karputov Vladimir: Вы невнимательны: Потом про ордера можете вспоминать.Спасибо, я постораюсь не забыть :)Так что насчёт х 100? Добавлено:Только вот в чём беда:Истор. транзакция приходит первой, а как узнать, что он первая? Или наоборот Сделочная транзакция первая. Vladimir Karputov 2016.08.15 17:55 #56 prostotrader: Спасибо, я постораюсь не забыть :)Так что насчёт х 100? Я уже отвечал: Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий "Плавающая" ошибка PositionSelect() Karputov Vladimir, 2016.08.15 17:44 Низзя. Не положено. Невозможно. Vladimir Karputov 2016.08.15 18:00 #57 prostotrader: ...Добавлено:Только вот в чём беда:Истор. транзакция приходит первой, а как узнать, что он первая? Или наоборот Сделочная транзакция первая. Нужно подумать. Уточните, это в случае, когда срабатывает ордер объёмом более 1? prostotrader 2016.08.15 18:02 #58 Karputov Vladimir: Нужно подумать. Уточните, это в случае, когда срабатывает ордер объёмом более 1?Да не важно какой ордер и не важно какой объём prostotrader 2016.08.15 18:17 #59 Если бы всё работало как сказал MQ Alexander , тои никаких бы проблем небыло.А так, как есть, невозможно определить... :( Потому что сделка может уже быть в истории ещё до прихода Сделочной транзакции (Deals done: 1.0). А по словам Алексадра работало бы так ( и было бы правильно! ): При поступленни исторической транзакции: Volume initial - Volume current = Deals done - Сделочная транзакция уже пришлаНе ставим флаг и разбираемся с позициями и ордерами!-------------------------------- Volume initial - Volume current != Deals done - Сделочная транзакция - следующаяСтавим флаг, дожидаемся Сделочной транзакции и по флагу разбираемся с позициями и ордерами! Всё! ФОРТС. Вопросы по исполнению Очерёдность приходящих транзакций [Решено] [MQL5] События терминала prostotrader 2016.08.15 21:15 #60 Обновляется история сделок до прихода тразакции TRADE_TRANSACTION_DEAL_ADDНеобработана, Начата: 2016.08.15 18:43, #1537513 12345678 Новый комментарий
Цифири под Вашим аватаром Вам не принадлежат, поэтому Вы над ними не властны (Вы не можете по своему хотению изменять их).
А я не сам хочу изменить, прошу Вас :)
Ну если на 1000 нельзя, то хотябы на 100 умножить.
А я не сам хочу изменить, прошу Вас :)
Ну если на 1000 нельзя, то хотябы на 100 умножить.
Цифири под Вашим аватаром Вам не принадлежат, поэтому Вы над ними не властны (Вы не можете по своему хотению изменять их).
Добавлено.
Забудьте про ордера, пока не прошла транзакция с типом TRADE_TRANSACTION_DEAL_ADD. Почему "забудьте"? Потому что это НЕПРАВИЛЬНО.
Забудьте про сделки, скажу Вам по-секрету, что про сделки можно узнать из истории,
когда пришла историческая транзакция. Ордера нет, значит можно смотреть, что он "накрвырял"
С помощью этой простой функции:
Забудьте про сделки, скажу Вам по-секрету, что про сделки можно узнать из истории,
когда пришла историческая транзакция.
С помощью этой простой функции:
Вы невнимательны:
...
Забудьте про ордера, пока не прошла транзакция с типом TRADE_TRANSACTION_DEAL_ADD. Почему "забудьте"? Потому что это НЕПРАВИЛЬНО.
Потом про ордера можете вспоминать.
Вы невнимательны:
Потом про ордера можете вспоминать.
Спасибо, я постораюсь не забыть :)
Так что насчёт х 100?
Добавлено:
Только вот в чём беда:
Истор. транзакция приходит первой, а как узнать, что он первая?
Или наоборот Сделочная транзакция первая.
Спасибо, я постораюсь не забыть :)
Так что насчёт х 100?
Я уже отвечал:
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
"Плавающая" ошибка PositionSelect()
Karputov Vladimir, 2016.08.15 17:44
Низзя. Не положено. Невозможно....
Добавлено:
Только вот в чём беда:
Истор. транзакция приходит первой, а как узнать, что он первая?
Или наоборот Сделочная транзакция первая.
Нужно подумать. Уточните, это в случае, когда срабатывает ордер объёмом более 1?
Если бы всё работало как сказал MQ Alexander , то
и никаких бы проблем небыло.
А так, как есть, невозможно определить... :(
Потому что сделка может уже быть в истории ещё до прихода Сделочной транзакции (Deals done: 1.0).
А по словам Алексадра работало бы так ( и было бы правильно! ):
При поступленни исторической транзакции:
Volume initial - Volume current = Deals done - Сделочная транзакция уже пришла
Не ставим флаг и разбираемся с позициями и ордерами!
--------------------------------
Volume initial - Volume current != Deals done - Сделочная транзакция - следующая
Ставим флаг, дожидаемся Сделочной транзакции и по флагу разбираемся с позициями и ордерами!
Всё!