Проблема следующая, при перерегистрации заявки на фортсе объём не меняется, только цена. Код такой (дня начинающего пойдёт :)):
OptSumOrder = 20; OptSumAll = 100; OptSumCurrent = 0;
if (size > 0) { newOrder = new Order ; // проверяем объём if (size >= OptSumOrder) else { newOrder.Volume = OptSumAll - OptSumCurrent; } // если заявка ещё активна (не отменена), то перерегистрировать заявку if (!(order.State == OrderStates.Done)) { this.Trader.ReRegisterOrder(order, newOrder); orderIdList.Add(newOrder.Id); // добавить ID в список для отслеживания сделок } else // если заявки нет (её полностью исполнили), то зарегистрировать новую { this.Trader.RegisterOrder(newOrder); orderIdList.Add(newOrder.Id); } order = newOrder;
Comentários (10)
Entrar ou Criar conta, Faça login ou cadastre-se para deixar um comentário
Ещё раз, опишу проблему, при перестановке заявки объём остаётся старый, хотя в новой заявке я объём меняю.
QuikTrader? Какие транзакции выдает QuikTrader.GetTransactions(newOrder)? Посмотреть текст транзакции можно через TransactionBuilder.ToString.
Вывожу через this.Trader.GetTransactions(newOrder).First().ToString()) В сообщении: FIRST_ORDER_NEW_QUANTITY=20, хотя до этого часть заявки съели и переставляется только остаток. Такое ощущение что это поле игнорируется. А как через TransactionBuilder.ToString выводить?
foreach (var t in this.Trader.GetTransactions(newOrder)) t.ToString()
И да, если в теле транзакции указано неверное значение, то неверное значение неправильно передается в QuikTrader.ReRegisterOrder. Вы точно уверены, что в коде робота новое значение правильно выставляется?
óÄÅÌÁÌ ÔÁË: if (!(order.State == OrderStates.Done)) { this.Trader.ReRegisterOrder(order, newOrder); foreach (TransactionBuilder tb in this.Trader.GetTransactions(newOrder)) { System.IO.File.AppendAllText("D:\TestFile.txt", tb.ToString()
÷ ÆÁÊÌÅ: ACTION=MOVE_ORDERS; TRANS_ID=48258208; CLASSCODE=SPBOPT; SECCODE=RI155000BI0; MODE=0; FIRST_ORDER_NUMBER=2041538286; FIRST_ORDER_NEW_PRICE=4530; FIRST_ORDER_NEW_QUANTITY=20;
ACTION=MOVE_ORDERS; TRANS_ID=48258209; CLASSCODE=SPBOPT; SECCODE=RI155000BI0; MODE=0; FIRST_ORDER_NUMBER=2041538521; FIRST_ORDER_NEW_PRICE=4525; FIRST_ORDER_NEW_QUANTITY=20;
ACTION=MOVE_ORDERS; TRANS_ID=48258210; CLASSCODE=SPBOPT; SECCODE=RI155000BI0; MODE=0; FIRST_ORDER_NUMBER=2041539084; FIRST_ORDER_NEW_PRICE=4520; FIRST_ORDER_NEW_QUANTITY=20;
÷ ÔÏ ×ÒÅÍÑ ËÁË ÄÏ ÜÔÏÇÏ 1 ÌÏÔ ÂÙÌ "ÏÔËÕÛÅÎ" É ÐÅÒÅÓÔÁ×ÌÑÅÔÓÑ 19 ÌÏÔÏ×. ãÅÎÁ ÍÅÎÑÅÔÓÑ ×ÅÒÎÏ, ÏÂß£Í - ÎÅÔ :((( ðÏÞÅÍÕ ÍÏÖÅÔ ÔÁË ÂÙÔØ?
Ничего не понял из-за неправильной кодировки.
óÄÅÌÁÌ ÔÁË: if (!(order.State == OrderStates.Done)) { this.Trader.ReRegisterOrder(order, newOrder); foreach (TransactionBuilder tb in this.Trader.GetTransactions(newOrder)) { System.IO.File.AppendAllText("D:\TestFile.txt", tb.ToString()
÷ ÆÁÊÌÅ: ACTION=MOVE_ORDERS; TRANS_ID=48258208; CLASSCODE=SPBOPT; SECCODE=RI155000BI0; MODE=0; FIRST_ORDER_NUMBER=2041538286; FIRST_ORDER_NEW_PRICE=4530; FIRST_ORDER_NEW_QUANTITY=20;
ACTION=MOVE_ORDERS; TRANS_ID=48258209; CLASSCODE=SPBOPT; SECCODE=RI155000BI0; MODE=0; FIRST_ORDER_NUMBER=2041538521; FIRST_ORDER_NEW_PRICE=4525; FIRST_ORDER_NEW_QUANTITY=20;
ACTION=MOVE_ORDERS; TRANS_ID=48258210; CLASSCODE=SPBOPT; SECCODE=RI155000BI0; MODE=0; FIRST_ORDER_NUMBER=2041539084; FIRST_ORDER_NEW_PRICE=4520; FIRST_ORDER_NEW_QUANTITY=20;
÷ ÒÅÁÌØÎÏÓÔÉ 1 ÌÏÔ ÂÙÌ "ÏÔËÕÛÅÎ" É ÐÅÒÅÓÔÁ×ÌÑÅÔÓÑ 19 ÌÏÔÏ×. ãÅÎÁ ÍÅÎÑÅÔÓÑ ×ÅÒÎÏ, ÏÂß£Í - ÎÅÔ :((( ðÏÞÅÍÕ ÍÏÖÅÔ ÔÁË ÂÙÔØ?
Вы можете еще сделать вывод объема перед изменением заявки?
File.AppendAllText(newOrder.Volume); ReRegister
Не понимаю что тут с кодировкой... У меня после отправки отображается нормально, а на след. день портится. Объём попробую вывести.