Аутентификация
Рабочий пример с описанием:
var ute_ws; // Тут храним подключение
function connect_ws_js() // Создадим функцию подключения к ute.limited
{
var api_user_id = '123';
var token_user = '1QWEqwe21QWEqwe21QWEqwe21QWEqwe2'; // Ваш API токен
ute_ws = new WebSocket("wss://ute.limited:101/?userId="+api_user_id+"&token="+token_user);
ute_ws.onopen = function() {
console.log("Соединение установлено");
};
ute_ws.onmessage = function(event)
{
console.log("Есть сообщение от сервера WebSocket: "+event.data);
}
ute_ws.onclose = function(event)
{
if (event.wasClean)
{
console.log('Соединение закрыто'); // В случае если сервером закрыто соединение
}
else
{
setTimeout(function() { connect_ws_js(); }, 3000); // Восстановить подключение в случае обрыва связи (Например пропал интернет)
}
}
}
connect_ws_js();
// Функция для открытия опциона
function ute_open_option(w_pairname="EURUSD",w_updn="up",w_type_account="demo",w_sum_option="10",w_ver_percent_par="1",w_type_exp="2",exp_time_H="00",exp_time_M="05",exp_time_S="20")
{
ute_ws.send("option_send:"+w_pairname+":"+w_updn+":lifetime:"+w_type_account+":"+w_sum_option+":"+w_ver_percent_par+":"+w_type_exp+":"+exp_time_H+":"+exp_time_M+":"+exp_time_S+":"0":"+name_signal+"");
}
// ute_open_option("USDJPY","up","demo","20.00","5","2","00","05","30");
// Открыть опцион на счёте демо, пара USDJPY, опцион up, сумма 20$, вернуть 5% в случае убытка, 2й тип экспирации, длительность опциона 00 часов 05 минут 30 секунд
Для подключения к API Token доступно 1 единовременное покдлючение.
Также существует
ограничение в 20 запросов в секунду, в противном случае ожидается блокировка токена на 5 минут.
Далее смотрите
ute.limited -> Справочный центр -> Трейдинг -> Лимиты
Ошибки которые вы можете встретить:
{"Error 01":"invalid request"} - Введенная сумма инвестиции превышает торговый баланс
{"Error 02":"invalid request"} - Введенная сумма инвестиции превышает максимально допустимую
{"Error 03":"invalid request"} - Выбранный актив недоступен
{"Error 04":"invalid request"} - Введенная сумма инвестиции ниже минимальной
{"Error 12":"invalid request"} - Запрещено использовать реальный счёт
{"Error 20":"invalid request"} - Неверный тип счёта или превышено кол-во открытых опционов
{"Error 21":"invalid request"} - Актив в данный момент недоступен!
{"Error 32":"invalid request"} - Неверное время экспирации
Баланс аккаунта отправляется клиенту:
1. При подключении к серверу WS
2. При открытии опциона
3. При закрытии опциона
Просто проверяем массив "i_balance" на состояние "ok"
"i_balance":"ok" // Значит есть обновленная информация о балансе
{"i_balance":"ok","m_dollar":"124.273","m_dollar_bonus":"0.00","m_rub":"1038415.76","m_rub_bonus":"0.00","m_demo":"9811.335","u_vip":"NO","partner_id":"777-100"}
После закрытия опциона мы получаем массив с обновленным балансом и результатом ОДНОГО опциона:
{"finish_option":"ok","i_balance":"ok","m_dollar":"124.273","m_dollar_bonus":"0.000","m_rub":"1038415.76","m_rub_bonus":"0.00","m_demo":"9801.635",
"info_finish_option":[{"option_id":121044,"type_balance":"demo","symbol":"EURUSD OTC",
"sum":"5.000","sum_pay":"9.450","wait_profit":"4.450","unix_open":"1699725083","time_open":"11 November 20:51:23",
"unix_close":1699725113,"time_close":"11 November 20:51:53","price_open":"1.23857","finish_current_result":"win","finish_current_result_sum":"4.450","close_price":"1.23859"}]}
Разберем полученные данные:
{
"finish_option":"ok", // Опцион завершен
"i_balance":"ok" // Получен обновленный баланс
"m_dollar":"124.273" // Баланс счёта доллар
"m_dollar_bonus":"0.000" // Баланс бонусов счёта доллар
"m_rub":"1038415.76" // Баланс счёта рубль
"m_rub_bonus":"0.00" // Баланс бонусов счёта рубль
"m_demo":"9801.635" // Баланс счёта демо
"info_finish_option":[{"option_id":121044,
"type_balance":"demo",
"symbol":"EURUSD OTC",
"sum":"5.000",
"sum_pay":"9.450",
"wait_profit":"4.450",
"unix_open":"1699725083",
"time_open":"11 November 20:51:23",
"unix_close":1699725113,
"time_close":"11 November 20:51:53",
"price_open":"1.23857",
"finish_current_result":"win", // "win" опцион закрыт в прибыль, "loss" опцион закрыт в убыток, "=" опцион закрыт в возврат,
// "-1" опцион закрыт в -1 пункт с возвратом 50%(Стандарт) или 90%(VIP)
"finish_current_result_sum":"4.450", // Итоговый результат закрытия опциона
"close_price":"1.23859"}] // Цена закрытия опциона
}
После открытия опциона мы получаем массив с итоговым балансом:
{"i_balance":"ok","m_dollar":"124.273","m_dollar_bonus":"0.00","m_rub":"1038415.76","m_rub_bonus":"0.00","m_demo":"9811.335","u_vip":"NO"}
Далее получаем 1 массив с информацией по всем открытым опционам отдельно "api_massive_option":
{"info_open_option":"ok","api_massive_option":[{"option_id":"121038","type_balance":"demo","symbol":"EURUSD OTC","sum":"5.000","sum_pay":"9.450","wait_profit":"4.450","unix_open":1699712113,"time_open":"11 Nov 17:15:13","unix_close":1699712413,"time_close":"11 Nov 17:20:13","price_open":"1.22154","current_result":"4.450","close_price":"1.22171","seconds_finish":234,0,"name_signal":"test_signal"}]}
Разберем полученные данные:
"option_id":"121038" // ID опциона
"type_balance":"demo" // Тип счёта ( 'real_dollar' - Счёт доллар 'real_rub' - Счёт рубль)
"symbol":"EURUSD OTC" // Символ (например "symbol":"EURUSD")
"sum":"5.000" // Объем опциона
"sum_pay":"9.450" // Ожидаемый желаемый результат
"wait_profit":"4.450" // Ожидаемая желаемая прибыль (sum_pay-sum)
"unix_open":1699712113 // Время открытия в формате UNIX
"time_open":"11 Nov 17:15:13" // Дата открытия (UTC+3)
"unix_close":1699712413 // Время закрытия в формате UNIX
"time_close":"11 Nov 17:20:13" // Дата закрытия (UTC+3)
"price_open":"1.22154" // Цена открытия
"current_result":"4.450" // Результат опциона в режиме реального времени
"close_price":"1.22171" // Цена закрытия (Текущая цена актива)
"seconds_finish":234 // Секунд до закрытия опциона
"name_signal":"test_signal"; // Имя сигнала
Для того чтобы открыть опцион, достаточно отправить простую строку WS серверу типа:
option_send:EURUSD:up:lifetime:demo:5:0:2:00:05:00:0:test_signal
Для примера JS запрос будет выглядеть так:
ute_ws.send("option_send:"+w_pairname+":"+w_updn+":lifetime:"+w_type_account+":"+w_sum_option+":"+w_ver_percent_par+":"+w_type_exp+":"+exp_time_H+":"+exp_time_M+":"+exp_time_S+":"0":"+name_signal+"");
Давайте разберем более подробно
//'option_send' // Открыть опцион
w_pairname = "EURUSD"; // Пара для открытия опциона
w_updn = 'up'; // Опцион вверх ( 'dn' - опцион вниз )
//'lifetime' // Открыть опцион в режиме реального времени
w_type_account = "demo"; // Тип счёта ( 'real_dollar' - Счёт доллар 'real_rub' - Счёт рубль)
w_sum_option = "100"; // Сумма сделки (Счёт доллар - мин 0.1 макс 2,000 \ Счёт рубль - мин 20 макс 200,000)
w_ver_percent_par = "5"; // Процент возврата средств (Счёт 'Стандарт' до 5% \ Счёт 'VIP' до 30%)
w_type_exp = "2"; // Тип экспирации ('2' Экспирация НА фиксированное время (пример 00:05:00 см далее) или
//'1' Экспирация ДО указанного времени (пример до 18:30:00))
exp_time_H = "01"; // Часы (Зависит от метода экспирации)
exp_time_M = "05"; // Минуты (Зависит от метода экспирации)
exp_time_S = "00"; // Секунды (Зависит от метода экспирации)
0 ---
name_signal = "test_signal"; // Имя сигнала отправителя (Указывается отправителем) максимальная длинна в байтах 63.
Если мы хотим открыть опцион на конкретное время (Например на 15 минут) в данном примере длительность опциона будет ровно 15 минут.
w_pairname = "EURUSD";
w_updn = 'up';
w_type_account = "demo";
w_sum_option = "100";
w_ver_percent_par = "5";
w_type_exp = "2"; // Тип экспирации '2' Экспирация НА фиксированное время (пример 00:15:00)
exp_time_H = "00"; // Часы
exp_time_M = "15"; // Минуты
exp_time_S = "00"; // Секунды
ute_ws.send("option_send:"+w_pairname+":"+w_updn+":lifetime:"+w_type_account+":"+w_sum_option+":"+w_ver_percent_par+":"+w_type_exp+":"+exp_time_H+":"+exp_time_M+":"+exp_time_S+"");
Если мы хотим открыть опцион до указанного времени (Например до 14:30:00) в данном примере опцион будет закрыт в 14:30:00 по времени сервера платформы (UTC+3)
w_pairname = "EURUSD";
w_updn = 'up';
w_type_account = "demo";
w_sum_option = "100";
w_ver_percent_par = "5";
w_type_exp = "1"; // Тип экспирации '1' Экспирация ДО указанного времени (пример до 14:30:00)
exp_time_H = "14"; // Часы
exp_time_M = "30"; // Минуты
exp_time_S = "00"; // Секунды
ute_ws.send("option_send:"+w_pairname+":"+w_updn+":lifetime:"+w_type_account+":"+w_sum_option+":"+w_ver_percent_par+":"+w_type_exp+":"+exp_time_H+":"+exp_time_M+":"+exp_time_S+"");
После подключения к серверу, для успешной работы желательно учитывать список доступных пар.
Для этого отправьте серверу простой текст типа:
ute_ws.send("only_pair_list");
Результатом будет список доступных пар (пара,доходность и кол-во знаков после точки) в виде многомерного массива массива "pair_list":
{"only_pair_list":"ok","pair_list":{"GBPAUD":{"percent":80,"float":5},"USDJPY":{"percent":80,"float":3},"USDCHF":{"percent":80,"float":5},"USDCAD":{"percent":80,"float":5},"NZDCAD":{"percent":80,"float":5},"EURJPY":{"percent":80,"float":3},"EURCAD":{"percent":80,"float":5},"EURAUD":{"percent":80,"float":5},"AUDCAD":{"percent":80,"float":5},"AUDCHF":{"percent":80,"float":5},"AUDJPY":{"percent":80,"float":3},"CADJPY":{"percent":80,"float":3},"AUDNZD":{"percent":80,"float":5},"EURUSD":{"percent":80,"float":5},"NZDUSD":{"percent":79,"float":5},"GBPUSD":{"percent":78,"float":5}}}
Если в списке нет какой-либо пары, значит она недоступна.
Далее просто учитывайте данный список доступных пар при открытии опциона.
Как правило мы не отключаем валютные пары в течение дня и не изменяем процент доходности.
Для соединения клиента с платформой ute.limited нужно получить
API token в разделе безопасноти аккаунта.
Документация ниже будет основана на примере подключения к брокеру через мост WebSocket на языке JavaScript.
Пример подключения к
Websocket серверу на языке JavaScript будет выглядеть примерно вот так:
var api_user_id = '123';
var token_user = '1QWEqwe21QWEqwe21QWEqwe21QWEqwe2'; // Ваш API токен
var ute_ws = new WebSocket("wss://ute.limited:101/?userId="+api_user_id+"&token="+token_user);
Далее добавим функцию для чтения результата подлкючения из переменной ute_ws:
ute_ws.onopen = function() {
console.log("Соединение установлено");
};
После добавим функцию для чтения полученных ответов от сервера Websocket:
ute_ws.onmessage = function(event)
{
console.log("Есть сообщение от сервера WebSocket: "+event.data);
}
И добавим event сообщение на случай закрытия соединения с сервером Websocket:
ute_ws.onclose = function(event)
{
console.log(event.data); // Сообщение о закрытии соединения
}
// Итоговый результат примера Аутентификации c Websocket сервером ute.limited на языке JavaScript //
var api_user_id = '123';
var token_user = '1QWEqwe21QWEqwe21QWEqwe21QWEqwe2'; // Ваш API токен
var ute_ws = new WebSocket("wss://ute.limited:101/?userId="+api_user_id+"&token="+token_user);
ute_ws.onopen = function() {
console.log("Соединение установлено");
};
ute_ws.onmessage = function(event)
{
console.log("Есть сообщение от сервера WebSocket: "+event.data);
}
ute_ws.onclose = function(event) {
console.log(event.data);
}
// Добавили вариант кода на случай обрыва соединения. Попытка снова установить связь //
var ute_ws;
function connect_ws_js()
{
var api_user_id = '123';
var token_user = '1QWEqwe21QWEqwe21QWEqwe21QWEqwe2'; // Ваш API токен
ute_ws = new WebSocket("wss://ute.limited:101/?userId="+api_user_id+"&token="+token_user);
ute_ws.onopen = function() {
console.log("Соединение установлено");
};
ute_ws.onmessage = function(event)
{
console.log("Есть сообщение от сервера WebSocket: "+event.data);
}
ute_ws.onclose = function(event)
{
if (event.wasClean)
{
alert('Соединение закрыто');
}
else
{
setTimeout(function() { connect_ws_js(); }, 3000);
}
}
}
connect_ws_js();