Slepoy
|
Дата: 06.07.2017
|
|
|
|
На каком-то этапе работы с СтокШарпом, тебе откроется одна простая истина - что всё надо переписывать под себя. Создаёшь в боте отдельную либу, в которую постепенно переписываешь все методы, которые тебе необходимы. К примеру, твой метод ReRegisterOrder(order, price, vol). На него есть исходники, которые ты просто копируешь в свою либу и правишь под свои нужды. К примеру, в твоём методе, после создания клона заявки вызывается метод ReRegisterOrder(oldOrder, order) в котором обнаружишь нижеприведённый участок, где показано как они перерегистрируют стопы: if (oldOrder.Type == OrderTypes.Conditional) { this.CancelOrder(oldOrder); this.RegisterOrder(newOrder); } То есть, тупо проверяют тип ордера, если он условный(т.е. стоп заявка) то просто отменяют старую и тут же регают новую. Код банален и работает. С обычными заявками, там код иной, гораздо сложнее. С простыми заявками они создают там сообщение на переристрацию и т.п. Кстати, насколько мне известно, далеко не все биржевые площадки нативно поддерживают механизм переригистрации заявок. Вот этот сложный код и не робит ))). Нужен ли тебе сложный код который не робит? Я думаю, что нет. Так делай точно также как сделано со стопами, т.е. просто выпили проверку на тип заявки, т.е. выпили блок if и введи проверку на снятие заявки: 1. Делаешь клон заявки, тупо скопируй строчку из их же метода: Order order = oldOrder.ReRegisterClone(new decimal?(price), new decimal?(volume)); 2. Снимаешь старую заявку: this.CancelOrder(oldOrder); 3. Тут нужна проверка, о том что заявка снята, т.е. нужно подписаться на событие снятия и проверить снят ордер или нет 4. Если проверка прошла успешно, то регаешь новый ордер: this.RegisterOrder(newOrder);
Тут четыре строки кода и это будет работать. Да, желательно всё это дело обезопасить в конструкции try-catch, но это необязательно. Всё будет робить и так. Вот такие дела. По-другому тут не выжить, ибо разработчики постоянно видоизменяют API и с каждым новым релизом API, у твоего бота будет что-то отваливаться. Надо всё переписывать под себя, ковыряясь в их исходинках ты сразу поймёшь насколько их код избыточен, запутан и сложен. Там такие цепочки связей и зависимостей, что мозг закипает. Неудивительно, что они раз за разом попадают на баги ))). Сами виноваты, правда расплачиваемся за это мы - простые пользователи.
|