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

trade_history_v3.mq5

Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

Скрипт для платформы MetaTrader 5, предназначенный для экспорта истории торговых операций в CSV-файл. Скрипт обращается к историческим сделкам и позициям, собирает данные по каждой закрытой позиции и записывает их в текстовый файл с указанным разделителем. Результат сохраняется в каталог MQL5/Files терминала. Пользователь может ограничить выборку по инструменту, магическому номеру и диапазону дат.

Настройки программы

НастройкаОписание
OutputFileName Имя выходного файла — Задаёт имя файла, в который будет записан экспортированный отчёт
OnlySymbol Фильтр по символу — Если поле не пустое, в отчёт попадают только сделки указанного инструмента
MagicFilter Фильтр по магическому номеру — Если значение не равно -1, в отчёт включаются только позиции с соответствующим магическим номером
UseSemicolon Использовать точку с запятой — Определяет разделитель полей в выходном файле: точка с запятой или запятая
StartDate Дата начала — Начало периода, за который выполняется выборка исторических данных
EndDate Дата окончания — Конец периода выборки; ноль означает текущее время
Получить полный код

Поиск по коду файла

#property strict
#property script_show_inputs

input string   OutputFileName = "TradeHistory.csv";
input string   OnlySymbol     = "";
input int      MagicFilter    = -1;
input bool     UseSemicolon   = true;
input datetime StartDate      = D'2026.01.01 00:00';   // inizio intervallo
input datetime EndDate        = 0;                     // 0 = fino ad adesso

string D(double value)
{
   string s = DoubleToString(value, 2);
   StringReplace(s, ".", ",");
   return s;
}

string FormatDate(datetime t)
{
   MqlDateTime dt;
   TimeToStruct(t, dt);
   return StringFormat("%02d/%02d/%04d", dt.day, dt.mon, dt.year);
}

string FormatTime(datetime t)
{
   MqlDateTime dt;
   TimeToStruct(t, dt);
   return StringFormat("%02d:%02d", dt.hour, dt.min);
}

int CollectPositionIDs(long &posIDs[])
{
   int total = HistoryDealsTotal();
   int count = 0;
   ArrayResize(posIDs, 0);

   for(int i = 0; i < total; i++)
   {
      ulong dealTicket = HistoryDealGetTicket(i);
      if(dealTicket == 0) continue;

      long posID = HistoryDealGetInteger(dealTicket, DEAL_POSITION_ID);
      if(posID == 0) continue;

      bool found = false;
      for(int j = 0; j < count; j++)
      {
         if(posIDs[j] == posID) { found = true; break; }
      }
      if(!found)
      {
         ArrayResize(posIDs, count + 1);
         posIDs[count] = posID;
         count++;
      }
   }
   return count;
}

int OnStart()
{
      // код доступен только после оплаты
   }
   datetime endSel = (EndDate == 0) ? TimeCurrent() : EndDate;

   if(!HistorySelect(StartDate, endSel))
   {
      Print("Errore HistorySelect: ", GetLastError());
      return 0;
   }

   int handle = FileOpen(OutputFileName, FILE_WRITE | FILE_TXT | FILE_ANSI);
   if(handle == INVALID_HANDLE)
   {
      Print("Errore apertura file: ", GetLastError());
      return 0;
   }

   string sep = UseSemicolon ? ";" : ",";

   FileWriteString(handle, "Broker" + sep + AccountInfoString(ACCOUNT_SERVER) + "\r\n");
   FileWriteString(handle, "Account" + sep + IntegerToString((int)AccountInfoInteger(ACCOUNT_LOGIN)) + "\r\n");
   FileWriteString(handle, "Currency" + sep + AccountInfoString(ACCOUNT_CURRENCY) + "\r\n");
   FileWriteString(handle, "ExportDate" + sep + FormatDate(TimeCurrent()) + " " + FormatTime(TimeCurrent()) + "\r\n");
   FileWriteString(handle, "RangeFrom" + sep + FormatDate(StartDate) + " " + FormatTime(StartDate) + "\r\n");
   FileWriteString(handle, "RangeTo" + sep + FormatDate(endSel) + " " + FormatTime(endSel) + "\r\n");
   FileWriteString(handle, "\r\n");

   FileWriteString(handle,
      "Ticket" + sep + "Symbol" + sep + "Type" + sep + "Lots" + sep +
      "OpenDate" + sep + "OpenTime" + sep + "OpenPrice" + sep +
      "CloseDate" + sep + "CloseTime" + sep + "ClosePrice" + sep +
      "SL" + sep + "TP" + sep +
      "Profit" + sep + "Commission" + sep + "Swap" + sep +
      "NetProfit" + sep + "Magic" + sep + "Comment" + sep +
      "DurationMin\r\n"
   );

   long posIDs[];
   int posCount = CollectPositionIDs(posIDs);
   int exported = 0;

   for(int p = 0; p < posCount; p++)
   {
      long posID = posIDs[p];
      if(!HistorySelectByPosition(posID))
         continue;

      int dealsInPos = HistoryDealsTotal();
      if(dealsInPos <= 0) continue;

      datetime openTime = 0, closeTime = 0;
      double   openPrice = 0, closePrice = 

Показано первые 50% кода (символов: 4745)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
474,50₽ ≈ $5.80