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) | |
Просмотров: 732 | Теги: |
Всего комментариев: 0 | |