← К каталогу
Исходный код · ID 3537

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: управление ключом, балансом, режимом и отправка сделок.

Методы и конструкторы
Метод · SNReportInfo string Print(bool bPrint)

Формирует строку с информацией о контракте и при необходимости выводит её в журнал.

Метод · SNBinaryTeam void Key(const string skey)

Устанавливает ключ API для авторизации запросов.

Метод · SNBinaryTeam string Key()

Возвращает текущий установленный ключ API.

Метод · SNBinaryTeam string Currency()

Возвращает символ валюты для отображения (доллар при USD).

Метод · SNBinaryTeam double Balance()

Возвращает текущий баланс, нормализованный до двух знаков после запятой.

Метод · SNBinaryTeam double Procent()

Возвращает текущий процент изменения баланса, нормализованный до двух знаков после запятой.

Метод · SNBinaryTeam int TimeOffset()

Возвращает смещение времени сервера относительно локального времени терминала в секундах.

Метод · SNBinaryTeam int TimeOffsetTerminal()

Возвращает смещение времени сервера относительно текущего времени терминала в секундах.

Метод · SNBinaryTeam bool Demo()

Возвращает текущий режим работы (демо или реальный).

Метод · SNBinaryTeam void Demo(bool bDemo)

Устанавливает режим работы: демо или реальный счёт.

Метод · SNBinaryTeam int GetError()

Возвращает код последней ошибки, произошедшей при выполнении операций.

Метод · SNBinaryTeam int FormatOrderAnswer(string sAnswer,SNReportInfo &preport)

Парсит JSON-ответ сервера и заполняет объект SNReportInfo данными о контракте, включая результат и код ошибки.

Метод · SNBinaryTeam bool GetBalance()

Запрашивает баланс и процент с сервера, обновляет внутренние данные о счёте и вычисляет смещения времени.

Метод · SNBinaryTeam bool GET(string ssend,string &sBuffer)

Выполняет HTTP GET-запрос к серверу с указанным параметрами и возвращает ответ в виде строки.

Метод · SNBinaryTeam string GetOrder(int iticket)

Запрашивает информацию о конкретном заказе по его тикету и возвращает JSON-ответ сервера.

Метод · SNBinaryTeam 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 и перейдите к оплате.

Стоимость полного кода
817,60₽ ≈ $9.99