forked from finsight/QUIKSharp
-
Notifications
You must be signed in to change notification settings - Fork 0
/
quiksharp_qlua_python_socket_client.py
51 lines (46 loc) · 2.05 KB
/
quiksharp_qlua_python_socket_client.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# -*- coding: utf-8 -*-
import socket
import json
CRLF = "\r\n\r\n"
host = '127.0.0.1'
port_requests = 34130
port_callbacks = 34131
sok_requests = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sok_callbacks = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sok_callbacks.connect((host , port_callbacks))
sok_requests.connect((host , port_requests))
request = {"data":"Ping","id":"1","cmd":"ping","t":"0"}
raw_data = json.dumps(request)
sok_requests.sendall((raw_data+CRLF).encode())
while(True):
response = sok_requests.recv(2048)
print(response)
# Пример Получение стакана котировок по классу и коду бумаги getQuoteLevel2 - Python socket client
# Функция getQuoteLevel2() принимает 2 параметра: Код класса и Код бумаги, а возвращает таблицу, которая имеет следующие поля:
# bid_count -- Количество котировок покупки (STRING)
# offer_count -- Количество котировок продажи (STRING)
# bid -- Котировки спроса (покупки) (TABLE)
# offer -- Котировки предложений (продажи) (TABLE)
# -- Таблицы «bid» и «offer» имеют следующую структуру:
# price -- Цена покупки / продажи (STRING)
# quantity -- Количество в лотах (STRING)
CRLF = "\r\n\r\n"
host = '127.0.0.1'
port_requests = 34130
port_callbacks = 34131
sok_requests = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sok_callbacks = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sok_callbacks.connect((host , port_callbacks))
sok_requests.connect((host , port_requests))
request = {"data":"SPBFUT|SiH0","id":"1","cmd":"getQuoteLevel2","t":""}
raw_data = json.dumps(request)
sok_requests.sendall((raw_data+CRLF).encode())
data = b""
bufsize = 1024
while(True):
packet = sok_requests.recv(bufsize)
data += packet
if len(packet) < bufsize:
break
data = json.loads(data.decode('cp1251'))
print(data)