Проблема при работе с лотом, больше чем одна заявка.~/topic/1175/problema-pri-rabote-s-lotom-bolshe-chem-odna-zayavka_/Copyright @ StockSharp Platform LLC 2010 - 20242024-03-28T23:45:33Zhttps://stocksharp.ru/images/logo.pnghttps://stocksharp.ru/posts/m/4241/ я выставил заявку и она могла либо ВЫПОЛНИТСЯ полностью, либо быть снята мной. в обоих случаях буде...2010-10-16T22:04:10Z2010-10-16T22:04:10ZMikhail Sukhovhttps://stocksharp.ru/users/201/info@stocksharp.ru<div class="quote"><span class="quotetitle">pave111</span><div class="innerquote"><br />я выставил заявку и она могла либо ВЫПОЛНИТСЯ полностью, либо быть снята мной. в обоих случаях будет state Done Заявка больше не активна на бирже (была полностью удовлетворена или снята из программы).<br />чтобы узнать что именно с ней произошло нужно посмотреть balance (продалась или отменена) ордера, так? это будет правильнее, чем получать позицию из квика?</div></div><br /><br />1. order.IsMatched() order.IsCanceled()<br />2. это будет правильнее, потому что позиция обновляется с запозданием + так будет проще, потому что позиция - это совокупность исполненных частей заявок.<br />Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/4240/большое спасибо, этот вариант как раз не пробывал. разрешите один вопрос - я выставил заявку и она м...2010-10-16T10:45:31Z2010-10-16T10:45:31Zpave111https://stocksharp.ru/users/28442/info@stocksharp.ruбольшое спасибо, этот вариант как раз не пробывал.<br />разрешите один вопрос -<br />я выставил заявку и она могла либо ВЫПОЛНИТСЯ полностью, либо быть снята мной. в обоих случаях будет state Done Заявка больше не активна на бирже (была полностью удовлетворена или снята из программы).<br />чтобы узнать что именно с ней произошло нужно посмотреть balance (продалась или отменена) ордера, так? это будет правильнее, чем получать позицию из квика?<br /><br />хотел сказать Вам огромное спасибо за библиотеку, она сэкономила кучу времени и сил.Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/4238/Здравствуйте. Попробовал очевидное решение - добавил в обработчик проверку foreach (MyTrade mt in Ne...2010-10-16T09:36:06Z2010-10-16T09:36:06ZMikhail Sukhovhttps://stocksharp.ru/users/201/info@stocksharp.ru<div class="quote"><span class="quotetitle">pave111</span><div class="innerquote">Здравствуйте. <br />Попробовал очевидное решение - добавил в обработчик проверку <br />foreach (MyTrade mt in NewMyTrades)<br />{<br />if (mt.Order.IsMatched())<br />{<br /> выполнилось все, сделать действие<br />}<br />} <br /></div></div><br /><br />Добавьте обработчик не на NewMyTrades а на OrdersChanged.<br />Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/4237/да, я понимаю, все что писалось выше делалось внутри стратегии. все же не знаете чем могли быть вызв...2010-10-16T08:03:22Z2010-10-16T08:03:22Zpave111https://stocksharp.ru/users/28442/info@stocksharp.ruда, я понимаю, все что писалось выше делалось внутри стратегии.<br /><br />все же не знаете чем могли быть вызванны ошибки выше?<br /><br />сейчас переделал на PositionManager, буду тестировать. почему раньше не всегда работало не понятноCopyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/4226/Информацию о сделках получает из таблицы квик "мои сделки". Вы привели пример регистрации заявки, но...2010-10-15T04:27:39Z2010-10-15T04:31:05Zartemoxhttps://stocksharp.ru/users/490/info@stocksharp.ruИнформацию о сделках получает из таблицы квик "мои сделки". <br />Вы привели пример регистрации заявки, но в расчете позиции сами заявки по идее не участвуют.<br />Чтобы Strategy.PositionManager.Position считала позицию по исполненным заявкам, заявку необходимо регистрировать из стратегии.Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/4224/спасибо. а информацию о сделках он как получает? orderReverse = new Order { Portfolio = Portfolio, P...2010-10-14T19:07:45Z2010-10-14T19:07:45Zpave111https://stocksharp.ru/users/28442/info@stocksharp.ruспасибо. а информацию о сделках он как получает? <br /><br /> orderReverse = new Order<br /> {<br /> Portfolio = Portfolio,<br /> Price = price,<br /> Security = Security,<br /> Volume = vol,<br /> Direction = dir,<br /> };<br /> QTrader.RegisterOrder(orderReverse);<br /><br />отправил заявку и без какой-либо дополнительной обработки, я могу быть уверен, что Strategy.PositionManager.Position вернет верное, реальное значение?Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/4222/Насколько мне известно: PositionManager считает позицию по сделкам, совершенным в рамках стратегии. ...2010-10-14T18:22:05Z2010-10-14T18:22:05Zartemoxhttps://stocksharp.ru/users/490/info@stocksharp.ruНасколько мне известно:<br />PositionManager считает позицию по сделкам, совершенным в рамках стратегии.<br />GetPosition получает позицию из таблиц квика.<br />Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/4221/спасибо, попробую. до этого также пробывал подход position = QTrader.GetPosition(Portfolio, Security...2010-10-14T18:14:32Z2010-10-14T18:14:32Zpave111https://stocksharp.ru/users/28442/info@stocksharp.ruспасибо, попробую.<br /><br />до этого также пробывал подход<br />position = QTrader.GetPosition(Portfolio, Security);<br />position.CurrentValue<br /><br />с аналогичным результатом - работало, но не всегда.<br /><br />не подскажите, в чем отличие Strategy.PositionManager.Position от данного варианта и в чем могла быть ошибка в моих прошлых вариантах?<br /><br /><br /><br /><br />Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/4220/Посмотрите в сторону Strategy.PositionManager.Position2010-10-14T17:50:55Z2010-10-14T17:50:55Zartemoxhttps://stocksharp.ru/users/490/info@stocksharp.ruПосмотрите в сторону Strategy.PositionManager.PositionCopyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/4219/Здравствуйте. Реализовал стратегию, которая работала с одним лотом и все было хорошо. Как приходило ...2010-10-14T17:29:15Z2010-10-14T17:29:15Zpave111https://stocksharp.ru/users/28442/info@stocksharp.ruЗдравствуйте. <br />Реализовал стратегию, которая работала с одним лотом и все было хорошо. Как приходило событие NewMyTrades я понимал, что произошла сделка и делал действия необходимые в моей стратегии.<br />Сейчас попробовал реализовать аналогичное с числом лотов равным 2 и потерпел неудачу.<br />Мне нужно производить действия когда заявка полностью исчерпана, т.е куплены или проданы ВСЕ 2 лота.<br />Попробовал очевидное решение - добавил в обработчик проверку <br />foreach (MyTrade mt in NewMyTrades)<br />{<br />if (mt.Order.IsMatched())<br />{<br /> выполнилось все, сделать действие<br />}<br />} <br /><br />но почему-то такое срабатывает не всегда. иногда заявка оказывалась полностью выполненной (в квике), а робот считал, что еще нет.<br /><br />Тогда попытался обрабатывать событие QTrader.PositionsChanged, и при появлении этого события сравнивать position.CurrentValue с 0 или 2. если вдруг стало 0, то можно сказать, что сделка закрылась. если 2, то сделка полностью открылось. но столкнулся с аналогичными проблемами - в большинстве случаев работает, но не всегда. проблема как и раньше.<br /><br />Есть какие либо идеи?<br />Очень благодарен за ваш труд. <br /><br />Copyright @ StockSharp Platform LLC 2010 - 2024