Особенности языка mql5, тонкости и приёмы работы - страница 43

Alexey Viktorov
24753
Alexey Viktorov  
fxsaber:
В таких случаях и без доп. скобок работать будет.
Скобки для себя. Так лучше вижу.
fxsaber
16256
fxsaber  
Когда утомляет выбирать нужную функцию под интересуемое свойство
double TerminalInfo( const ENUM_TERMINAL_INFO_DOUBLE Property )
{
  return(TerminalInfoDouble(Property));
}

long TerminalInfo( const ENUM_TERMINAL_INFO_INTEGER Property )
{
  return(TerminalInfoInteger(Property));
}

string TerminalInfo( const ENUM_TERMINAL_INFO_STRING Property )
{
  return(TerminalInfoString(Property));
}

void OnStart()
{
  Print(TerminalInfo(TERMINAL_COMMUNITY_BALANCE));
  Print(TerminalInfo(TERMINAL_LANGUAGE));
  Print(TerminalInfo(TERMINAL_BUILD));
}
fxsaber
16256
fxsaber  

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Библиотеки: TypeToBytes

fxsaber, 2017.06.13 16:01

string GetDirectory( const string FileName )
{
  int Pos = StringFind(FileName, "\\");
  int LastPos = Pos;
  
  while (Pos >= 0)
  {
    LastPos = Pos;
    
    Pos = StringFind(FileName, "\\", Pos + 1);
  }

  return((LastPos >= 0) ? StringSubstr(FileName, 0, LastPos + 1) : "");
}

// Возвращает список всех файлов по фильтру
int GetFileNames( string &FileNames[], int Pos = 0, string Filter = "*", const int Common_Flag = 0 )
{
  string FileName;
  const long handle = FileFindFirst(Filter, FileName, Common_Flag);

  if (handle != INVALID_HANDLE)
  {    
    const string Directory = GetDirectory(Filter);    
    Filter = StringSubstr(Filter, StringLen(Directory));
    
    do
    {
      const string TmpFileName = Directory + FileName;
      
      ArrayResize(FileNames, Pos + 1);      
      FileNames[Pos] = TmpFileName;      
      Pos++;
        
      if (!FileIsExist(TmpFileName, Common_Flag))
        Pos = GetFileNames(FileNames, Pos, TmpFileName + Filter, Common_Flag);
    }
    while (FileFindNext(handle, FileName));  
    
    FileFindClose(handle);
  }
  
  return(Pos);
}
RickD
1226
RickD  
Подскажите, в чем смысл функции HistoryDealSelect, когда в функциях HistoryDealGetInteger, HistoryDealGetDouble,
HistoryDealGetString снова нужно указывать ticket_number?
fxsaber
16256
fxsaber  
. ... Rick D. ... .:
Подскажите, в чем смысл функции HistoryDealSelect, когда в функциях HistoryDealGetInteger, HistoryDealGetDouble,
HistoryDealGetString снова нужно указывать ticket_number?

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Особенности языка mql5, тонкости и приёмы работы

fxsaber, 2017.06.07 22:20

Есть две текущие исторические таблицы, данные которых доступны через History-функции - Orders-таблица и Deals-таблица.

На их содержимое возможно повлиять только через HistorySelect-функции. И происходит это следующим образом

  • HistorySelect и HistorySelectByPosition - влияют одновременно на обе таблицы.
  • HistoryDealSelect влияет ТОЛЬКО на Deals-таблицу (никак не влияет на текущую Orders-историческую таблицу).
  • HistoryOrderSelect влияет ТОЛЬКО на Orders-таблицу (никак не влияет на текущую Deals-историческую таблицу).

Deal-таблица становится из одного элемента.
Konstantin
744
Konstantin  
Есть ли какие то ограничения на число размещаемых графических объектов на чарте ) Имеется в виду не пиксельная графика, а графические элементы - трендовые линии, прямоугольники и т.д. 
Vitaly Muzichenko
13627
Vitaly Muzichenko  
Konstantin:
Есть ли какие то ограничения на число размещаемых графических объектов на чарте ) Имеется в виду не пиксельная графика, а графические элементы - трендовые линии, прямоугольники и т.д. 
более 2000 пробовал - работало
Konstantin
744
Konstantin  
Vitaly Muzichenko:
более 2000 пробовал - работало

а как по ресурсам менее накладно будет, если нужно делать изменения на каждом тике:

1. использовать 2000 графических объектов

2. воспользоваться классом Canvas и создавать на каждом тике один рисунок содержащий те же 2000 прорисовок графических объектов

Vitaly Muzichenko
13627
Vitaly Muzichenko  
Konstantin:

а как по ресурсам менее накладно будет, если нужно делать изменения на каждом тике:

1. использовать 2000 графических объектов

2. воспользоваться классом Canvas и создавать на каждом тике один рисунок содержащий те же 2000 прорисовок графических объектов

Canvas будет в несколько раз производительнее, пробовал. 
Konstantin
744
Konstantin  
Vitaly Muzichenko:
Canvas будет в несколько раз производительнее, пробовал. 

не могу разобраться с Canvas, мне к примеру нужно отрисовать на чарте массив горизонтальных линий, можете кинуть пример кода?

упс )) оказывается на сайте справка более расширенная, кажется нашел что искал - класс CLineChart ))