Смотри, как бесплатно скачать роботов
Ищи нас в Twitter!
Ставь лайки и следи за новостями
Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят
Понравился скрипт?
Оцени его работу в терминале MetaTrader 5
Библиотеки

HistoryPositionInfo version 2 - библиотека для MetaTrader 5

Просмотров:
2481
Рейтинг:
(31)
Опубликован:
2017.07.06 09:26
\MQL5\Include\HistorySelect_\
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

Версия 1.0: HistoryPositionInfo.

Новое в версии 2:

функция GetProfitInPoints осталась, но рекомендуется теперь использовать новую функцию GetProfit:

   bool              GetProfit(double &profit_in_points,
                               double &commission,
                               double &swap,
                               double &profit_in_money);

Функция GetProfit возвращает для восстановленной позиции, кроме прибыли в пунктах: комиссию, своп и прибыль в деньгах.

Класс CHistoryPositionInfo предназначен для получения прибыли позиции в пунктах, комиссии, свопа и прибыли в деньгах на основании торговой истории. 

Описание класса 

Класс CHistoryPositionInfo обеспечивает получение прибыли позиции в пунктах, комиссии, свопа и прибыли в деньгах на основании торговой истории. 

Декларация

class CHistoryPositionInfo : public CArrayObj

Заголовок

#include <HistorySelect_\HistoryPositionInfo.mqh>

Методы класса по группам

Инициализация
InitИнициализация идентификатором позиции
Доступ в результату вычислений  
GetProfitInPoints - устаревший метод. Рекомендуется использовать GetProfitПолучение прибыли позиции в пунктах
GetProfitПолучение прибыли позиции в пунктах, комиссии, свопа и прибыли в деньгах
Установка параметров 
LogErrorsВключение/выключение логирования ошибок
PrintDeals(const bool value) Включение/выключение режима вывода сделок
Вывод сделок 
PrintDeals(void)Вывод сделок, которые сформировали позицию

Пример работы с классом CHistoryPositionInfo: запросим торговую историю за пять дней, сформируем массив всех встречающихся идентификаторов позиций, затем в цикле по полученному массиву распечатываем прибыль позиции в пунктах, комиссии, своп и прибыль в деньгах на основании торговой истории:

//+------------------------------------------------------------------+
//|                                      TestHistoryPositionInfo.mq5 |
//|                              Copyright © 2017, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2017, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "2.000"
#property script_show_inputs
//---
input datetime from_date   = __DATE__-60*60*24*5;  // from date (current time - 5 days)
input datetime to_date     =__DATE__+60*60*24;     // to date (current time + 1 days)
input bool     log_errors  = true;                 // logging errors
input bool     print_deals = true;                 // print deals
#include <HistorySelect_\HistoryPositionInfo.mqh>
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   long arr_tickets[];
//--- request trade history 
   HistorySelect(from_date,to_date);
//---
   uint     total=HistoryDealsTotal();
   ulong    ticket=0;
   long     position_id=0;
//--- for all deals 
   for(uint i=0;i<total;i++)
     {
      //--- try to get deals ticket 
      if((ticket=HistoryDealGetTicket(i))>0)
        {
         //--- get deals properties 
         position_id=HistoryDealGetInteger(ticket,DEAL_POSITION_ID);

         int arr_size=ArraySize(arr_tickets);
         bool search=false;
         for(int ii=0;ii<arr_size;ii++)
           {
            if(arr_tickets[ii]==position_id)
              {
               search=true;
               continue;
              }
           }
         if(!search)
           {
            ArrayResize(arr_tickets,arr_size+1,100);
            arr_tickets[arr_size]=position_id;
           }
        }
     }
//---
   int arr_size=ArraySize(arr_tickets);
   for(int i=0;i<arr_size;i++)
     {
      Print("");
      Print("Search deals with POSITION_IDENTIFIER ",IntegerToString(arr_tickets[i]));

      CHistoryPositionInfo HistoryPositionInfo;
      //--- init position identifier
      HistoryPositionInfo.Init(arr_tickets[i]);
      //--- los errors
      HistoryPositionInfo.LogErrors(log_errors);
      //--- print deals
      HistoryPositionInfo.PrintDeals(print_deals);
      //---
      double profit_in_points=0.0;
      double commission=0.0;
      double swap=0.0;
      double profit=0.0;

      if(HistoryPositionInfo.GetProfit(profit_in_points,commission,swap,profit))
         Print("Profit in points ",DoubleToString(profit_in_points,1),
               ", commission ",DoubleToString(commission,2),
               ", swap ",DoubleToString(swap,2),
               ", profit ",DoubleToString(profit,2));
     }
  }
//+------------------------------------------------------------------+


CMqlParams CMqlParams

Класс-контейнер, который использует цепочку методов для быстрого добавления параметров и удаления строк кода.

Get_Rich_or_Die_Trying_GBP Get_Rich_or_Die_Trying_GBP

Торговля на PERIOD_M1 (M1). Подсчёт бычьих и медвежьих баров.

SaveTicks SaveTicks

Утилита для записи тиковых котировок в формате CSV и BIN, гибкий выбор набора символов для записи.

Omni_Trend Omni_Trend

Трендовый индикатор NRTR типа с использованием мувинга и ATR.