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


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

Теги:


Спасибо:




31 Ответов
1 2  >
VassilSanych

Фотография
Дата: 26.03.2013
Ответить


Карма Cool
Спасибо:

VassilSanych

Фотография
Дата: 26.03.2013
Ответить


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

qpile

Фотография
Дата: 27.03.2013
Ответить


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

VassilSanych

Фотография
Дата: 27.03.2013
Ответить


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

В StockSharp ошибки ходят самыми разными путями:
- обычно
- в фоновых потоках
- событиями
Возможно вы какой-то пропустили.

Спасибо:

qpile

Фотография
Дата: 27.03.2013
Ответить


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

VassilSanych

Фотография
Дата: 27.03.2013
Ответить


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

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

Спасибо:

esper

Фотография
Программист
Дата: 27.03.2013
Ответить


Здесь искали?
Спасибо:

VassilSanych

Фотография
Дата: 27.03.2013
Ответить


esper Перейти
Здесь искали?

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

Спасибо:

esper

Фотография
Программист
Дата: 27.03.2013
Ответить


VassilSanych Перейти
И что, это у них молчком происходит?

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

qpile

Фотография
Дата: 27.03.2013
Ответить


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

ra81

Фотография
Дата: 28.03.2013
Ответить


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

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

qpile

Фотография
Дата: 28.03.2013
Ответить


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

ra81

Фотография
Дата: 28.03.2013
Ответить


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


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

qpile

Фотография
Дата: 28.03.2013
Ответить


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

ra81

Фотография
Дата: 28.03.2013
Ответить


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


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

qpile

Фотография
Дата: 28.03.2013
Ответить


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

ra81

Фотография
Дата: 28.03.2013
Ответить


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

В текущих версиях коннекторов нет.
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 28.03.2013
Ответить


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


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

ra81

Фотография
Дата: 28.03.2013
Ответить


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


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


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

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

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 28.03.2013
Ответить


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


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

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


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

qpile

Фотография
Дата: 28.03.2013
Ответить


Собственно вот,
Код
 
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

Фотография
Дата: 28.03.2013
Ответить


Код
// подписываемся на событие о неудачной регистрации заявок
						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

Фотография
Автор статей Программист Трейдер
Дата: 28.03.2013
Ответить


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

qpile

Фотография
Дата: 28.03.2013
Ответить


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

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 28.03.2013
Ответить


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


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

Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy