Exante API. Отправка приказов на сервер. Часть 5
Exante API. Отправка приказов на сервер. Часть 5После получения необходимой информации с сервера, в соответствии с алгоритмом, формируются сигналы на открытие или закрытие позиций. Отправка приказа на серверПриказы на совершение сделок оформляются запросами requests типа post. При этом в теле запроса передается необходимая информация в виде словаря. функция для установки рыночного ордера может выглядеть так:
# установка ордера
def set_order(self, accid: str, symbid: str, direction: str, volume: float, ord_type: str):
name_class = 'MainClass:'
name_func = 'set_order: '
# формирование словаря для запроса
payload = {'account': accid, 'instrument': symbid, 'side': direction,
'quantity': str(abs(volume)), 'orderType': ord_type, 'duration': self.duration_order}
# формирование url для запроса
url_requests = self.server + "/trade/1.0/orders"
try:
response = requests.post(url_requests, json=payload, auth=(self.appl_name, self.appl_key),
timeout=self.timeout_).json()
return response
except Timeout:
print(name_class + name_func + "Сервер по адресу: ", url_requests, " не отвечает. TimeoutError")
return False
except ConnectionError:
print(name_class + name_func + "Сервер по адресу: ", url_requests,
" не отвечает, ошибка в имени. ConnectionError")
return False
except HTTPError:
print(name_class + name_func + "Сервер по адресу: ", url_requests, " не отвечает. HTTPError")
return False
except TooManyRedirects:
print(name_class + name_func + "Сервер по адресу: ", url_requests, " не отвечает. TooManyRedirects")
return False
except JSONDecodeError:
print(name_class + name_func + "Ошибка декодирования запроса. JSONDecodeError")
return False
Обработка ответа сервераОтвет сервера 200 не означает, что все прошло успешно. После отправки приказа нужно убедиться, что ордер установлен или позиция открылась. Для этого используется запрос состояния счета: url_requests = self.server + "/md/1.0/summary/" + acc_id + '/' + self.currency response = requests.get(url_requests, auth=(self.appl_name, self.appl_key), timeout=self.timeout_).json() После того, как написан код программы, пришло время ее испытать на демо-счете.
Автор: Lug77 | |
| Категория: Разработка | Добавил: lugovtsov7 (29.09.2020) | |
| Просмотров: 924 | Теги: |
| Всего комментариев: 0 | |