Glebarius
Glebarius

 
Уровень 4


Группа "Стол заказов MQL"

Рейтинг 2146



РЕКОМЕНДУЮ



Скрипт история инструмента MT4

Андрей, добрый день!*hi* 

Прошу написать скрипт, который будет отображаться на графике в левом верхнем углу (по возможности в виде прозрачной таблицы), историю последних пяти закрытых сделок инструмента на график которого он установлен.

История содержит:
1.дата и время открытия
2.дата и время закрытия
3.объём
4.профит или убыток в пунктах
5.профит или убыток в валюте счёта (если есть возможность с учётом свопа и комиссий)

Желательно чтоб список истории обновлялся автоматически при запуске и как только закрылся крайний ордер на инструменте.

P.S. Если уже есть что-то подобное, скиньте плиз ссылку
*hi* 
  • +1
  • Просмотров: 2015
  • 3 июля 2020, 08:07
  • Glebarius
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
Следующая запись в группе  
Дописать в СОВЕТНИК ММ
02 июля 2020
03 июля 2020

Брокер для ваших роботов, 15 лет на рынке

Комментарии (16)

+
0
на 7-е
avatar

  35  AM2 Сообщений: 16250 - Андрей

  • 3 июля 2020, 10:53
+
0
avatar

  35  AM2 Сообщений: 16250 - Андрей

  • 4 июля 2020, 10:34
+
0
Спасибо! То что надо!*good* 
avatar

  4  Glebarius Автор Сообщений: 24 - Glebarius

  • 4 июля 2020, 14:10
+
0
Андрей приветствую!*hi*  Оч полезный скрипт, но сильно грузит терминал, виснет жёстко… Можно ли это как-то исправить?
avatar

  4  Glebarius Автор Сообщений: 24 - Glebarius

  • 17 июля 2020, 01:03
+
0
Попробуйте этот вариант (это советник
/*
Мой вариант: добавил  OnTimer()

http://zakaz.opentraders.ru/55090.html#comment153103
Прошу написать скрипт, который будет отображаться на графике в левом верхнем углу 
(по возможности в виде прозрачной таблицы), историю последних пяти закрытых сделок инструмента на 
график которого он установлен.

История содержит:
1.дата и время открытия
2.дата и время закрытия
3.объём
4.профит или убыток в пунктах
5.профит или убыток в валюте счёта (если есть возможность с учётом свопа и комиссий)

Желательно чтоб список истории обновлялся автоматически при запуске и как только закрылся крайний ордер на инструменте.

готово: www.opentraders.ru/downloads/2718/

---Оч полезный скрипт, но сильно грузит терминал, виснет жёстко… Можно ли это как-то исправить?
*/
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
#property strict

input int count=5;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   //--- создадим таймер с периодом в 1 секунду
   EventSetTimer(1);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   //--- уничтожим таймер при завершении работы
   EventKillTimer();
   Comment("");
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   OnTimer();
  }
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnTimer()
  {
   int k=0;
   string s="";
  
      for(int i=OrdersHistoryTotal()-1; i>0; i--)
        {
         if(k<count)
           {
            if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
              {
               if(OrderSymbol()==_Symbol)
                 {
                  s+="\n Open Time: "+(string)OrderOpenTime()+" Close Time: "+(string)OrderCloseTime()
                  +" Lot: "+(string)OrderLots()+" Profit: "+(string)OrderProfit()
                  +" All Profit: "+(string)(OrderProfit()+OrderSwap()+OrderCommission());
                  k++;
                 }
              }
           }       
      Comment(s);
     }
  }
//+------------------------------------------------------------------+
):
avatar

  16  ssg Сообщений: 817

  • 17 июля 2020, 12:33
+
0
*hi*  Спасибо! Как советник, работает как надо, без зависаний терминала. Но нужен скрипт. Можно ли этот советник конвертировать в скрипт?
avatar

  4  Glebarius Автор Сообщений: 24 - Glebarius

  • 4 августа 2020, 02:34
+
0
Скрипт обычно исполняется 1 раз.Правда некоторые можно зациклить, т.е. выполнение его функций происходит постоянно «по кругу», а если в скрипте много вычислений вот тогда он сильно загружает процессор.
А почему именно скрипт?
avatar

  16  ssg Сообщений: 817

  • 4 августа 2020, 04:30
+
0
Чтобы работал с советником в одном рабочем окне. Есть какие либо варианты решения этого? Может быть как индикатор возможно? Обновления необязательно 1сек. можно увеличить для разгрузки процессора
avatar

  4  Glebarius Автор Сообщений: 24 - Glebarius

  • 4 августа 2020, 05:48
+
0
В одном окне одновременная работа советников или (и) скриптов не возможна.
Можно доработать ваш советник, что бы он выводил эту информацию на экран.
avatar

  16  ssg Сообщений: 817

  • 4 августа 2020, 08:23
+
0
Делаю по Вашему образцу, выдаёт 2 ошибки, что может быть не так?

'OnTimer' — function not defined
'OnTimer' — function declarations are allowed on global, namespace or class scope only
avatar

  4  Glebarius Автор Сообщений: 24 - Glebarius

  • 4 августа 2020, 13:31
+
0
А что именно нужно добавить и в какой блок?
avatar

  4  Glebarius Автор Сообщений: 24 - Glebarius

  • 4 августа 2020, 12:00
комментарий был удален 2020-08-04 13:31:02 Glebarius

+
0
К сожалению (счастью) я не телепат.Дайте весь код вашего советника.
avatar

  16  ssg Сообщений: 817

  • 4 августа 2020, 13:35
+
0
К сожалению не могу, пользовательское соглашение не позволяет:) . Буду пробовать дальше, подвижки есть, но медленно… *wall*  Думал мож подскажете по ошибкам, в каком направлении двигаться
avatar

  4  Glebarius Автор Сообщений: 24 - Glebarius

  • 4 августа 2020, 13:59
+
0
Пробуйте сделать функцию

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void comment()
  {
   int k=0;
   string s="";
  
      for(int i=OrdersHistoryTotal()-1; i>0; i--)
        {
         if(k<count)
           {
            if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
              {
               if(OrderSymbol()==_Symbol)
                 {
                  s+="\n Open Time: "+(string)OrderOpenTime()+" Close Time: "+(string)OrderCloseTime()
                  +" Lot: "+(string)OrderLots()+" Profit: "+(string)OrderProfit()
                  +" All Profit: "+(string)(OrderProfit()+OrderSwap()+OrderCommission());
                  k++;
                 }
              }
           }       
      Comment(s);
     }
  }
//+------------------------------------------------------------------+
):

и добавте в старт эту функцию
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   comment();
  }
avatar

  16  ssg Сообщений: 817

  • 4 августа 2020, 14:23
+
0
Ок, спасибо, попробую<img src='http://opentraders.ru/templates/skin/g6h/images/smilies/002.gif' alt=' :) '>&nbsp; 
Редактирован: 4 августа 2020, 15:04
avatar

  4  Glebarius Автор Сообщений: 24 - Glebarius

  • 4 августа 2020, 15:04

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий