← Zurück

Одновременно выставление заявок

Попытался выставить 3 заявки одновременно. Выставляется, то одна, то две в систему. С чем это связано?

War dieses Thema hilfreich?

Thema teilen

Kommentare (31)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

VassilSanych
VassilSanych

Карма 😎

VassilSanych
VassilSanych

А если серьёзно, ставьте try/catch, подписывайтесь на события об ошибках и смотрите сами, с чем связано.

qpile
qpile Autor

Ошибок не приходит. Но что интересно- если ставить паузу между выставлением заявки в 1 секунду, то все заявки выставляются верно. Так что думаю, что проблема не в коде

VassilSanych
VassilSanych

qpile: Ошибок не приходит. Но что интересно- если ставить паузу между выставлением заявки в 1 секунду, то все заявки выставляются верно. Так что думаю, что проблема не в коде В StockSharp ошибки ходят самыми разными путями:

  • обычно
  • в фоновых потоках
  • событиями Возможно вы какой-то пропустили.
qpile
qpile Autor

Вообще обычно и в событиях не приходит почему то. А как в фоновых потоках посмотреть? Может следует сначала проверять зарегестирован ли ордер, прежде чем посылать следующий?

VassilSanych
VassilSanych

qpile: Вообще обычно и в событиях не приходит почему то. А как в фоновых потоках посмотреть? Может следует сначала проверять зарегестирован ли ордер, прежде чем посылать следующий? Не обязательно. Попробуйте сначала просто lock на секцию выставления заявки. Может она у вас в слишком глобальной переменной хранится и теряется при параллельных запусках?

esper
esper

Здесь искали?

VassilSanych
VassilSanych

esper: Здесь искали? И что, это у них молчком происходит? Я когда на квике пытался тестировать скорость параллельного выставления заявок, меня честно тыкали носом в SQL FLOOD :)

esper
esper

VassilSanych: И что, это у них молчком происходит? Сложно сказать, т.к. сам через альфу не торгую, но о такой проблеме слышал и раньше. Надо смотреть как реализован коннектор.

qpile
qpile Autor

Да уж...Придется просто тупо задержку между ордерами вводить что ли...

ra81
ra81

Альфа не дает ставить больше 1 заявки в полсекунды гдето. Это проверено. После 120 заявок подряд без задержек она отрубает от сервера.

Ваша проблема решается просто, ставите заявку, ловите событие Error, если оно было выдерживаете чуток времени и посылаете снова. Или посылаете сразу же. Но надо быть осторожным иначе при массовых заявках просто отрубит от сервера :)

qpile
qpile Autor

Самый проблема в том, что в событие ничего не приходит. Хотя обработчик есть // подписываемся на событие о неудачной регистрации заявок Trader.OrdersRegisterFailed += OrdersFailed;

ra81
ra81

qpile: Самый проблема в том, что в событие ничего не приходит. Хотя обработчик есть // подписываемся на событие о неудачной регистрации заявок Trader.OrdersRegisterFailed += OrdersFailed;

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

Mikhail Sukhov
Mikhail Sukhov

ra81: Ну это проблема "официального" коннектора. Не поддерживаю его. Тот кто поддерживал уже не в команде врядли чего скажет.

Э-э-э о чем речь идет? Если вы нашли ошибку, пишите про ее. Будем править. Только небылицы давайте не писать. S# поддерживает все коннекторы, которые создал. Кто там ушел и куда ушел - не понятно. Все программисты, кто работает над S# и всегда работал - все остались.

ra81
ra81

Mikhail Sukhov:

ra81: Ну это проблема "официального" коннектора. Не поддерживаю его. Тот кто поддерживал уже не в команде врядли чего скажет.

Э-э-э о чем речь идет? Если вы нашли ошибку, пишите про ее. Будем править. Только небылицы давайте не писать. S# поддерживает все коннекторы, которые создал. Кто там ушел и куда ушел - не понятно. Все программисты, кто работает над S# и всегда работал - все остались.

Михаил, я всего лишь сказал что разработчик коннектора врядли сможет ответить. А остальные члены если и ответят то не факт что сразу. Ибо разобораться все же надо. ХОтябы в том как альфа работает и ее нюансах.

Ошибку написали выше. Не стреляет событие по ошибке регистрации ордера. Детали выясняй у топикстартера, если они необходимы.

Mikhail Sukhov
Mikhail Sukhov

ra81: Михаил, я всего лишь сказал что разработчик коннектора врядли сможет ответить.

Еще как сможет. Еще раз, разработчиком коннекторов для S# является только S#. Сторонние коннекторы мы выделяем особым образом, как твой. Он есть, любой может его взять, но в официальные дистрибутивы он не попадает.

ra81: Ошибку написали выше. Не стреляет событие по ошибке регистрации ордера. Детали выясняй у топикстартера, если они необходимы.

Собственно, вопрос к нему тогда. Мини код, воспроизводящий проблему.

qpile
qpile Autor

А где же взять не официальную версию?

ra81
ra81

qpile: А где же взять не официальную версию?

с кодеплекс. AlfaPlus. http://stocksharp.codeplex.com/SourceControl/changeset/view/23281 Вообще вроде в офисияльной версии все было ок с этим тоже. почему не работает странно даже. Помню с Сергеем мы котирование завели на обоих версиях.

qpile
qpile Autor

А можно как то в Альфе заявки посылать в синхронном режиме?что бы ответ сразу получить?

ra81
ra81

qpile: А можно как то в Альфе заявки посылать в синхронном режиме?что бы ответ сразу получить? В текущих версиях коннекторов нет.

qpile
qpile Autor

Собственно вот,

 
if (StartLevel > FinishLevel)
                {
                    double level = StartLevel;
                    while (level > FinishLevel)
                    {
                        
                        long id = buyAtLimit(level, LotToTrade, "");
                        level = level - StepSize;

                    }

                }
..............


    private long buyAtLimit(double price, int lot, string signal)
        {
           
            var order = new Order
            {
                Portfolio = Account,
                Volume = Math.Abs(lot),
                Price = (decimal)price,
                Security = security,
                Direction = OrderDirections.Buy,
            };
             System.Threading.Thread.Sleep(2000);
            MainWindow.Instance.Trader.RegisterOrder(order);
          
         
            return order.TransactionId;
          
        }


qpile
qpile Autor
// подписываемся на событие о неудачной регистрации заявок
						Trader.OrdersRegisterFailed += OrdersFailed;
                        
						// подписываемся на событие о неудачном снятии заявок
						Trader.OrdersCancelFailed += OrdersFailed;
                      
						// подписываемся на событие о неудачной регистрации стоп-заявок
						Trader.StopOrdersRegisterFailed += OrdersFailed;
						// подписываемся на событие о неудачном снятии стоп-заявок
						Trader.StopOrdersCancelFailed += OrdersFailed;
..............




		private void OrdersFailed(IEnumerable<OrderFail> fails)
		{
			this.GuiAsync(() =>
			{
				foreach (var fail in fails)
					Log.Instance.Add( fail.Error.ToString());
			});
		}


Mikhail Sukhov
Mikhail Sukhov

Я так понимаю, проверить это можно через быстрое выставление заявок? Тоесть выставляем 100 сразу, выставляется 10, по 90 вообще никаких событий, так?

qpile
qpile Autor

Я пробовал выставлять 6. Выставлялась только одна. В OrderFailed пусто :(

Mikhail Sukhov
Mikhail Sukhov

qpile: Я пробовал выставлять 6. Выставлялась только одна

Понял. Поставил в план (или завтра или в начала след недели). Пропишите в свой профиль скайп, чтобы можно было в случае вопросов/тестирования/проверки с вами связаться.

qpile
qpile Autor

И что самое интересное-походу отваливается библиотека сама, поскольку потом при выключении робота и при перезагрузке терминала пишет, что библиотека уже присоединена. Как с этим бороться? Пробую все это на ММВБ. Может на ФОРТС такого нет

esper
esper

Напишите как с вами связаться.

qpile
qpile Autor

Сейчас пользуюсь временно адресом жены: didenckoolya собака yandex.ru

qpile
qpile Autor

Странно. Сегодня снимает и ставит нормально. Мистика какая то

qpile
qpile Autor

Теперь опять глючит. Мистика какая то

Mikhail Sukhov
Mikhail Sukhov

qpile: Теперь опять глючит. Мистика какая то

Добавьтесь в скайп, я думаю проще будет. Если вы кбробот, то вроде бы я когда-то вас добавлял.