elelel / qluacpp-tutorial

Tutorial for Qluacpp library (C++ interface for Quik trading terminal)
28 stars 13 forks source link

Ошибка при компиляции l2q_spread_bot #22

Closed dima-gf closed 4 years ago

dima-gf commented 4 years ago

Здравствуйте. Еще раз спасибо за такую хорошую библиотеку.

При компиляции примера l2q_spreadbot в функции, приведенной ниже, регистрируется ошибка b.state->on_order(order().trans_id(), order().order_num(), <- констатируется ошибка - ожидается int, а передается string ...)

Подскажите, пожалуйста выход из этой ситуации (я не рискую изменять определения) Спасибо

void bot::on_order(const lua::state& l, ::lua::entity<::lua::typepolicy<::qlua::table::orders>> order) { std::cout << "OnOrder" << std::endl; auto& b = bot::instance(); b.state->set_luastate(l); b.state->on_order(order().trans_id(), order().order_num(), <- констатируется ошибка - ожидается int, а передается string order().flags(), order().qty(), order().balance(), order().price()); b.updatestatus = true; b.cv.notify_one(); std::cout << "OnOrder done" << std::endl; }

elelel commented 4 years ago

В примере номер заявки следует изменить на std::string. Номера заявок были int32_t, потом на срочном рынке ММВБ их сделали не помещающимися в него, и они были переведены на строки. Библиотека обновлена, но пример обновлен не был. Имейте так же в виду. что этот пример может быть не совсем работоспособным из-за того как в Quik устроена многопоточность.

dima-gf commented 4 years ago

Да, спасибо. Сейчас попробую заменить. По поводу взаимоблокировок я читал вашу ветку на форуме QUIK. Там был предложен хороший выход (на мой взгляд) - это просто в обратных вызовах только сохранять нужные данные в стеках (векторах, мапах и т.п.), а потом в основном потоке (main) их обрабатывать. По опыту работы я сам применяю такой финт (в наших программах крутится сотни потоков и взаимоблокировки встречаются). Спасибо за ответ.

dima-gf commented 4 years ago

В догонку - Ваш пример бота мне нужен только для изучения вопроса взаимодействия с QUIK. Все равно все будет писаться с нуля.

dima-gf commented 4 years ago

Ох - да там многовато конечно исправлений. Ну может и хорошо - пока буду исправлять может лучше и код изучу. Но Вы уж как-нибудь потом (для других) подправьте этот момент.