Enfernuz / quik-lua-rpc

RPC-сервис для вызова API Lua-библиотеки торгового терминала QUIK (ARQA Technologies)
Apache License 2.0
103 stars 43 forks source link

Вызов datasource_T падает #69

Open dakuenjery opened 2 years ago

dakuenjery commented 2 years ago

Здравствуйте! Пытаюсь получать обновление OHLCV данных. Хотел заиспользовать datasource_SetUpdateCallback, думая что можно задать коллбек и мне будут эти данные приходить, но вместо коллбека нужно строкой вписать fCbDef. И совсем не понятно что там должно быть... В итоге для начала решил просто получить хоть какие-то данные. Имеется следующий код (kotlin):

ZmqTcpQluaRpcClient.newInstance(CONNECT_CONFIG).apply { open() }.use { client ->
    val createDataSourceArgs = CreateDataSource.Args.builder()
        .classCode("SPBFUT")
        .secCode("USDRUBF")
        .interval(INTERVAL_M1)
        .build()

    val ds = client.datasource_CreateDataSource(createDataSourceArgs)

    val upd = client.datasource_SetEmptyCallback(ds.datasourceUUID)

    val sizeArgs = Size.Args(ds.datasourceUUID)

    val size = client.datasource_Size(sizeArgs)
    println("DataSource size = $size")

    val index = size - 1
    val o = client.datasource_O(O.Args(ds.datasourceUUID, index))
    val h = client.datasource_H(H.Args(ds.datasourceUUID, index))
    val l = client.datasource_L(L.Args(ds.datasourceUUID, index))
    val c = client.datasource_C(C.Args(ds.datasourceUUID, index))
    val v = client.datasource_V(V.Args(ds.datasourceUUID, index))
    // падаем
    val t = client.datasource_T(T.Args(ds.datasourceUUID, index))

    println("T: $t\nO: $o\nH: $h\nL: $l\nC: $c\nV: $v")
}

ohlvc получаю (и даже корректные). Но при попытке запроса времени падаем, а квик ругается следующим сообщением об ошибке в скрипте: Ошибка в poller:start. Стек вызовов: stack traceback: C:\BCS_Work\QUIK_BCS\lua\quik-lua-rpc/service.lua:374: in metamethod '__newindex' ...ua\quik-lua-rpc/impl\protobuf_request_response_serde.lua:631: in function <...ua\quik-lua-rpc/impl\protobuf_request_response_serde.lua:625> ...ua\quik-lua-rpc/impl\protobuf_request_response_serde.lua:46: in function 'impl.protobuf_request_response_serde.serialize_response' C:\BCS_Work\QUIK_BCS\lua\quik-lua-rpc/service.lua:141: in function <C:\BCS_Work\QUIK_BCS\lua\quik-lua-rpc/service.lua:98> (...tail calls...) C:\BCS_Work\QUIK_BCS\lua\lzmq\poller.lua:80: in method 'poll' C:\BCS_Work\QUIK_BCS\lua\lzmq\poller.lua:88: in function <C:\BCS_Work\QUIK_BCS\lua\lzmq\poller.lua:85> (...tail calls...) [C]: in function 'xpcall' C:\BCS_Work\QUIK_BCS\lua\quik-lua-rpc/service.lua:369: in function 'service.start' [C]: in function 'pcall

Квик версии 9.5.0.42. Был бы очень благодарен, если бы вы сказали что нужно поправить, или подсказали бы другой способ получения OHLCVT данных (желательно в режиме реального времени по мере прихода этих данных в стакан).