class SNReportInfo
Класс для хранения и представления информации о контракте: идентификатор контракта, символ, тип ставки, время открытия и завершения, котировки, сумма ставки, выплата и результат.
Сообщите нам, если считаете, что материал размещён без разрешения.
Обращение по товару «binaryteam.mqh» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
Библиотека binaryteam.mqh предназначена для работы с API сервиса binaryteam.ru из MetaTrader 4. Она обеспечивает взаимодействие с сервером через HTTP-запросы GET, получение данных о балансе, информации о контрактах и отправку сделок. Библиотека написана на языке MQL4 и реализована в виде двух классов.
Класс SNReportInfo служит контейнером для данных о контракте: идентификатор, символ, тип ставки, время, котировки, сумма и результат. Метод Print позволяет вывести эту информацию в виде форматированной строки.
Класс SNBinaryTeam реализует основной функционал: авторизацию по ключу API, получение баланса и процента, управление демо-режимом, отправку ордеров и получение информации о заказах. Внутренне используются HTTP-запросы к серверу и парсинг JSON-ответов.
Библиотека не содержит пользовательских настроек (input-параметров) и предназначена для подключения как include-файл в советники или скрипты MetaTrader 4.
Классов: 2 · методов: 16 · конструкторов: 0 · деструкторов: 0 · отдельных функций: 0
class SNReportInfo
Класс для хранения и представления информации о контракте: идентификатор контракта, символ, тип ставки, время открытия и завершения, котировки, сумма ставки, выплата и результат.
class SNBinaryTeam
Основной класс библиотеки для взаимодействия с API-сервисом binaryteam: управление ключом, балансом, режимом и отправка сделок.
string Print(bool bPrint)
Формирует строку с информацией о контракте и при необходимости выводит её в журнал.
void Key(const string skey)
Устанавливает ключ API для авторизации запросов.
string Key()
Возвращает текущий установленный ключ API.
string Currency()
Возвращает символ валюты для отображения (доллар при USD).
double Balance()
Возвращает текущий баланс, нормализованный до двух знаков после запятой.
double Procent()
Возвращает текущий процент изменения баланса, нормализованный до двух знаков после запятой.
int TimeOffset()
Возвращает смещение времени сервера относительно локального времени терминала в секундах.
int TimeOffsetTerminal()
Возвращает смещение времени сервера относительно текущего времени терминала в секундах.
bool Demo()
Возвращает текущий режим работы (демо или реальный).
void Demo(bool bDemo)
Устанавливает режим работы: демо или реальный счёт.
int GetError()
Возвращает код последней ошибки, произошедшей при выполнении операций.
int FormatOrderAnswer(string sAnswer,SNReportInfo &preport)
Парсит JSON-ответ сервера и заполняет объект SNReportInfo данными о контракте, включая результат и код ошибки.
bool GetBalance()
Запрашивает баланс и процент с сервера, обновляет внутренние данные о счёте и вычисляет смещения времени.
bool GET(string ssend,string &sBuffer)
Выполняет HTTP GET-запрос к серверу с указанным параметрами и возвращает ответ в виде строки.
string GetOrder(int iticket)
Запрашивает информацию о конкретном заказе по его тикету и возвращает JSON-ответ сервера.
int OrderSend(string ssymbol,int itype,int expiration,double ilot)
Отправляет ставку на сервер по указанному символу, типу и сроку экспирации, возвращает тикет ставки или код ошибки.
#ifndef __SOVETNIKOV_BINARYTEAM_21312423dfdsf
#define __SOVETNIKOV_BINARYTEAM_21312423dfdsf
#include "..\sovetnikovGUI\defines.mqh"
#include "..\sovetnikovGUI\Orders.mqh"
#include "..\sovetnikovGUI\json.mqh"
class SNReportInfo
{
public:
/*
contract_id - ID контракта с binary.com;
symbol - валютная пара;
bet - тип ставки;
time_start - время старта;
time_end - время завершения;
quote_start - котировка в момент старта;
quote_end - котировка в момент завершения;
amount - сумма ставки;
payout - сумма к выплате;
payout_perc - процент предложенный к выплате;
payment - реальная сумма по которой продан контракт;
result - результат контракта:
0 - ждем результатов
1 - победа
2 - проигрыш
3 - ошибка
4 - продано досрочно
*/
int contract_id;//контракт id с бинари.ком
string symbol;//символ
string bet;//тип ставки
datetime time_start; //время открытия, broker time
datetime time_end;//время завершения
double quote_start;//котировка открытия
double quote_end;//котировка закрытия
double amount;//сумма ставки
double payout;//сумма к выплате
double payout_perc;//процент к выплате
double payment;//реальная сумма по которой продан контракт
int result; //0-ждем, 1-профит, 2-минус, 3-ошибка,4 досрочно продан
string Print(bool bPrint)
{
string sinfo=StringFormat("contract_id: %d symbol: %s bet: %s time_start: %s time_end: %s quote_start: %f quote_end: %f amount: %f payout: %f payout_perc: %f payment: %f result: %d",
contract_id,
symbol,
bet,
TimeToString(time_start),
TimeToString(time_end),
quote_start,
quote_end,
amount,
payout,
payout_perc,
payment,
result);
if(bPrint) Print(sinfo);
return sinfo;
}
};
class SNBinaryTeam
{
private:
string m_key,m_url,m_currency;
double m_balance,m_procent;
int m_TimeOffset,m_TimeOffsetTerminal;
bool m_demo;
int m_ierror;
public:
SNBinaryTeam():m_url(""),m_TimeOffset(0),m_TimeOffsetTerminal(0),m_balance(0.0),m_procent(0.0),m_currency(""),m_key(""),m_demo(true),m_ierror(0){};
void Key(const string skey)
{
m_key=skey;
}
string Key()
{
return m_key;
}
string Currency()
{
if(m_currency=="USD") return "$";
return "";
}
double Balance()
{
return NormalizeDouble(m_balance,2);
}
double Procent()
{
return NormalizeDouble(m_procent,2);
}
int TimeOffset()
{
return m_TimeOffset;
}
int TimeOffsetTerminal()
{
return m_TimeOffsetTerminal;
}
bool Demo()
{
return m_demo;
}
void Demo(bool bDemo)
{
m_demo=bDemo;
}
int GetError()
{
return m_ierror;
}
virtual int FormatOrderAnswer(string sAnswer,SNReportInfo &preport)
{
/*
contract_id - ID контракта с binary.com;
symbol - валютная пара;
bet - тип ставки;
time_start - время старта;
time_end - время завершения;
quote_start - котировка в момент старта;
quote_end - котировка в момент завершения;
amount - сумма ставки;
payout - сумма к выплате;
payout_perc - процент предложенный к выплате;
payment - реальная сумма по которой продан контракт;
result - результат контракта:
0 - ждем результатов
1 - победа
2 - проигрыш
3 - ошибка
4 - продано досрочно
*/
int scode=-1;
/*
error: trader
{"request":"report",
"params":
{"key":"bf07e90aaa049276ceb03be96ebceb49","id":"9102937"},
"answer":
{"profile":"trader",
"contract_id":"21811187148",
"symbol":"frxEURUSD",
"bet":"PUT",
"is_signal":"0",
"time_start":"1516011480",
"time_end":"1516011780",
"quote_start":"1.22762",
"quote_end":"1.22732",
"amount":"1.3","payout":"2.29","payout_perc":"76","payment":"2.29",
"result":"1",
"result_code":"702",
"real":{"amount":"0.00","currency":"USD","percent":null},
"demo":{"amount":"9954.33","currency":"USD","percent":"-0.05"}},
"time":{"start":"2018-01-15 14:36:48","timeout":0.00084,"end":"2018-01-15 11:36:48"}}
*/
JSON js;
if(js.parse("answer",sAnswer))
{
string value=js.value();
double dprice=0;
datetime time_start=0;
if(js.parse("result",value))
{
scode=js.getInteger();
preport.result=scode;
}
if(js.parse("contract_id",value))
{
preport.contract_id=js.getInteger();
}
if(js.parse("bet",value))
{
preport.bet=js.value();
}
if(js.parse("symbol",value))
{
preport.symbol=js.value();
}
if(js.parse("time_start",value))
{
preport.time_start=js.getDatetime(); //точное время открытия
}
if(js.parse("quote_start",value))
{
preport.quote_start=js.getDouble(); //точная цена открытия
}
if(js.parse("quote_end",value))
{
preport.quote_end=js.getDouble(); //точная цена открытия
}
if(js.parse("amount",value))
{
preport.amount=js.getDouble(); //точная цена открытия
}
if(js.parse("payout",value))
{
preport.payout=js.getDouble(); //точная цена открытия
}
if(js.parse("payout_perc",value))
{
preport.payout_perc=NormalizeDouble(js.getDouble(),0); //точная цена открытия
}
if(js.parse("payment",value))
{
preport.payment=js.getПоказано первые 50% кода (символов: 8176)
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.