Ошибки, баги, вопросы - страница 2152

 
Itum:

Как можно сравнить два массива?

Нужно вычислить каких элементов нет в массиве array2 в сравнении с array1

Результат должен быть: 6 и 7


Об этом речь и подымалась - есть возможности языка но нету "инфраструктуры" по решению элементарных алгоритмических задач.
Вот сколько усилий занимает решение поставленной задачи на Python:

set1 = set([1,2,3,4,5,6,7])
set2 = set([1,2,3,4,5])
result = set1-set2

print(result)
Out[1]: {6, 7}


А сколько нужно, что бы решить на MQL?
Стандартная библиотека как-то помочь может, или нет?

[Удален]  

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

я делаю на MQL4 ... нужно сделать все как можно проще.

 
Itum:

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

я делаю на MQL4 ... нужно сделать все как можно проще.

Полистал стандартную библиотеку - посмотрите в сторону CSortedSet и его метода ExceptWith, может поможет.

https://www.mql5.com/ru/docs/standardlibrary/generic/csortedset/csortedsetexceptwith

[Удален]  
Sergey Dzyublik:

Полистал стандартную библиотеку - посмотрите в сторону CSortedSet и его метода ExceptWith, может поможет.

https://www.mql5.com/ru/docs/standardlibrary/generic/csortedset/csortedsetexceptwith

Спасибо большое !

Было решено намного проще 
   char array1[]={"1", "2", "3", "4", "5", "6", "7"};
   char array2[]={"1", "2", "3", "4", "5"};

   for(int a=0; a<ArraySize(array1); a++){
      string items = array1[a];
     
      int rez = ArrayBsearch(array2,items,WHOLE_ARRAY,0,MODE_ASCEND);  
      if(array2[rez]==items) {
         Print("ТАКОЕ ЗНАЧЕНИЕ ЕСТЬ в массиве: ", items);
      } else {
         Print("НЕТ ТАКОГО ЗНАЧЕНИЯ в массиве: ", items);
      }
   }
 

Нет сообщения об ошибке

typedef void (*fn)( void * );
void f1 ( void * ) {}
class A {};
void OnStart()
{
        fn f2 = f1;
        const A *a;
//      f1( a ); //Error: 'a' - cannot convert from const pointer to nonconst pointer
        f2( a ); //нет сообщения об ошибке ???
}

при том что нарушена константность

 

такой вопрос:

как узнать во сколько закрываются торги по символу форекс?

 
В Журнале Оптимизатора запись на русском языке
2018.03.03 15:48:04.722 Tester  Вы можете ускорить оптимизацию в сотни раз с помощью MQL5 Cloud Network
 
Andrii Djola:

как узнать во сколько закрываются торги по символу форекс?

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

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

fxsaber, 2017.02.25 16:39

ENUM_DAY_OF_WEEK GetDayOfWeek( const datetime time )
{
  MqlDateTime sTime = {0};

  ::TimeToStruct(time, sTime);

  return((ENUM_DAY_OF_WEEK)sTime.day_of_week);
}

// true - находимся в торговой сессии
bool SessionTrade( const string Symb )
{
  datetime TimeNow = ::TimeTradeServer();

  const ENUM_DAY_OF_WEEK DayOfWeek = GetDayOfWeek(TimeNow);

  TimeNow %= 24 * 60 * 60;

  bool Res = false;
  datetime From, To;

  for (int i = 0; (!Res) && ::SymbolInfoSessionTrade(Symb, DayOfWeek, i, From, To); i++)
    Res = ((From <= TimeNow) && (TimeNow < To));

  return(Res);
}

// Возвращает true, если символ торгуемый. Иначе - false.
bool SymbolTrade( const string Symb )
{
  MqlTick Tick;

  return(::SymbolInfoTick(Symb, Tick) ? ((Tick.bid != 0) && (Tick.ask != 0) && SessionTrade(Symb) /* &&
         ((ENUM_SYMBOL_TRADE_MODE)::SymbolInfoInteger(Symb, SYMBOL_TRADE_MODE) == SYMBOL_TRADE_MODE_FULL) */
) : false);
}

Применение

if (OrderCheck(Request, CheckResult) && SymbolTrade(Request.symbol))
  OrderSend(Request, Result);
 
fxsaber:

Очень неприятный баг с кастомными символами. Тиковая история кастомных символов может полностью пропасть.

Несколько десятков часов шла Оптимизация по реальным тикам кастомного символа. К компу никто не подходил и ничего не делал.

Через 15 часов после Оптимизации подошел посмотреть результаты. Воспользоваться пунктом меню "Запустить одиночное тестирование" на любом проходе не получается - Тестер начинает и сразу заканчивает.

Лог такой

2018.03.03 15:48:04.696 Tester  file cache used 3010 times
2018.03.03 15:48:04.698 Tester  optimization finished, total passes 352000
2018.03.03 15:48:04.708 Statistics      optimization done in 41 hours 32 minutes 37 seconds
2018.03.03 15:48:04.708 Statistics      local 348990 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
2018.03.03 15:48:04.708 Core 1  connection closed
2018.03.03 15:48:04.709 Core 2  connection closed
2018.03.03 15:48:04.710 Core 3  connection closed
2018.03.03 15:48:04.710 Core 4  connection closed
2018.03.03 15:48:04.711 Core 5  connection closed
2018.03.03 15:48:04.711 Core 6  connection closed
2018.03.03 15:48:04.712 Core 7  connection closed
2018.03.03 15:48:04.714 Core 8  connection closed
2018.03.03 15:48:04.716 Tester  348990 records written to file cache C:\Program Files\Alpari Limited MT5\tester\cache\Test.TESTER_EURUSD.M1.4.xml
2018.03.03 15:48:04.722 Tester  Вы можете ускорить оптимизацию в сотни раз с помощью MQL5 Cloud Network
2018.03.04 08:26:30.933 Tester  single pass 297022 started
2018.03.04 08:26:31.000 Tester  TESTER_EURUSD: history data begins from 2018.02.06 00:00
2018.03.04 08:27:36.409 Tester  single pass 297022 started
2018.03.04 08:27:36.491 Tester  TESTER_EURUSD: history data begins from 2018.02.06 00:00
2018.03.04 14:05:10.940 Tester  single pass 297022 started
2018.03.04 14:05:11.007 Tester  TESTER_EURUSD: history data begins from 2018.02.06 00:00

Обнаружил, что тики всех кастомных символов удалены.

 
После Оптимизации этот текстовый файл
2018.03.03 15:48:04.716 Tester  348990 records written to file cache C:\Program Files\Alpari Limited MT5\tester\cache\Test.TESTER_EURUSD.M1.4.xml
занимает 1 Гб. 7z жмет его в 100 раз. Для чего выбран столь неэффективный способ хранения кеша?