Получить консультацию
+7(499)940-52-58
Моя корзина
Ваша корзина пуста
Корзина пуста!

Оформить заказ Очистить

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()

После того, как написан код программы, пришло время ее испытать на демо-счете.

Автор:

Категория: Разработка | Добавил: lugovtsov7 (29.09.2020)
Просмотров: 47 | Теги: exante api
Всего комментариев: 0
avatar