Новая версия платформы MetaTrader 5 build 2360: Расширение интеграции с SQLite

 

В пятницу 6 марта 2020 года будет выпущена обновленная версия платформы MetaTrader 5. Обновление содержит следующие изменения:

  1. MQL5: Ошибки работы с базами данных SQLite теперь можно анализировать стандартными средствами MQL5. Для этого в язык добавлены следующие коды ошибок:

    • ERR_DATABASE_ERROR — общая ошибка.
    • ERR_DATABASE_INTERNAL — ошибка внутренней логики SQLite.
    • ERR_DATABASE_PERM — отказано в доступе.
    • ERR_DATABASE_BUSY — файл базы данных заблокирован.
    • ERR_DATABASE_LOCKED — таблица в базе данных заблокирована.
    • ERR_DATABASE_NOMEM — для завершения операции недостаточно памяти.
    • ERR_DATABASE_READONLY — попытка записи в базу данных, доступной только для чтения.
    • ERR_DATABASE_IOERR — ошибка дискового ввода-вывода.
    • ERR_DATABASE_CORRUPT — образ диска базы данных испорчен.
    • ERR_DATABASE_FULL — ошибка вставки, так как база данных заполнена.
    • ERR_DATABASE_CANTOPEN — невозможно открыть файл базы данных.
    • ERR_DATABASE_PROTOCOL — ошибка протокола блокировки базы данных.
    • ERR_DATABASE_SCHEMA — схема базы данных изменена.
    • ERR_DATABASE_TOOBIG — строка или BLOB превышает ограничение по размеру.
    • ERR_DATABASE_CONSTRAINT — прервано из-за нарушения ограничения.
    • ERR_DATABASE_MISMATCH — несоответствие типов данных.
    • ERR_DATABASE_MISUSE — ошибка неправильного использования библиотеки.
    • ERR_DATABASE_AUTH — отказано в авторизации.
    • ERR_DATABASE_RANGE — ошибка применения параметра, неверный индекс.
    • ERR_DATABASE_NOTADB — открытый файл не является файлом базы данных.

  2. MQL5: Исправлена работа функции DatabaseImport, позволяющей импортировать информацию из файла в таблицу базы данных.
  3. MetaEditor: Исправлен вывод в журнал строк длиной более 32Кб.
  4. MetaEditor: Исправлена ошибка, связанная с использованием неверной кодировки при выводе сообщений из консоли Python (stdout, stderr) в раздел "Ошибки" редактора.
  5. Обновлена документация.

Обновление будет доступно через систему LiveUpdate.
 

Я не могу понять как будет храниться база данных ?

Внутри эксперта или индикатора, или это внешний файл ?

Что будет быстрее: 

Построить индикатор по данным из базы или по данным из терминала ?

 

Неправильные названия в коде

https://www.mql5.com/ru/docs/directx/dxcontextcreate

https://www.mql5.com/ru/docs/directx/dxcontextgetsize

 
Vladimir Pastushak:

Я не могу понять как будет храниться база данных ?

Внутри эксперта или индикатора, или это внешний файл ?

Это файл, и в анонсе даже было показано, как открывать из ME.

Vladimir Pastushak:

Что будет быстрее: 

Построить индикатор по данным из базы или по данным из терминала ?

Строить из тиков, хранящихся в БД? Уверен, это совсем не эффективно. БД предназначена для другого, в ней удобно хранить стат данные, например. Большие массивы данных, которые потом можно отбирать и анализировать в разных разрезах.

 
Rorschach:

Неправильные названия в коде

https://www.mql5.com/ru/docs/directx/dxcontextcreate

https://www.mql5.com/ru/docs/directx/dxcontextgetsize

Спасибо за сообщение, исправили

 

билд 2361 , Вин10-64

что то не так с кастомными символами, вчера в тестере в 2360 билде периодически тестер заменял свойства кастомного символа - пока еще не смог воспроизвести этот баг

а сегодня в 2361 сделал так: символы - создать символ - DEURUSD - формула 1.0/EURUSD

затем ОК-ОК.. и открыл чарт DEURUSD , в логе очень много сообщений в течении 2-х минут - зачем? , ладно, ну а почему каждую секунду в журнал пишется

2020.03.08 16:51:01.636 Synthetic Symbol DEURUSD: there is data from 1971.01.05 to 2020.03.06 (7612854 M1 bars from 1976.09.24 00:00 to 2020.03.06 23:55)

2020.03.08 16:51:01.636 Synthetic Symbol DEURUSD: M1 bars processing finished

лог приатачил, с тестером чуть позже попробую баг воспроизвести


UPD:

запустил тестер, дык и вот уже "поломанный" кастомный символ, который только что создал


счет - демо, сервер Метаквотес, валюта депо USD, почему мой кастомный символ имеет такие настройки? 


вот скрин как создавал кастомный символ


т.е. и 2360 билд через тестер портит свойства кастомного символа - вчера видел такую ситуацию
Файлы:
20200308.zip  25 kb
 
Igor Makanu:
т.е. и 2360 билд через тестер портит свойства кастомного символа - вчера видел такую ситуацию

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

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

fxsaber, 2019.09.15 22:30

Решение проблемы автоматического изменения валют кастомного символа после перезагрузки Терминала.

// Сервис корректирует валюты всех кастомных символов.
#property service

bool CorrectCurrency( const string Symb, const string Currency )
{  
  return(SymbolInfoInteger(Symb, SYMBOL_CUSTOM) && 
         CustomSymbolSetString(Symb, SYMBOL_CURRENCY_BASE, Currency) &&
         CustomSymbolSetString(Symb, SYMBOL_CURRENCY_MARGIN, Currency) &&
         CustomSymbolSetString(Symb, SYMBOL_CURRENCY_PROFIT, Currency));
}

void CorrectSymbols( void )
{
  const string Currency = AccountInfoString(ACCOUNT_CURRENCY);
  
  for (int i = SymbolsTotal(false) - 1; i >= 0; i--)
    CorrectCurrency(SymbolName(i, false), Currency);
    
  return;
}

void OnStart()
{
  CorrectSymbols();
}
 
fxsaber:

да, этот код  работает

спасибо!

 
Комментарии, не относящиеся к этой теме, были перенесены в "Вопросы от начинающих MQL5 MT5 MetaTrader 5".
 

Во время визуального теста советника на EUR/USD М5 в интервале 9-10 марта 2020, он останавливается после первой сделки по причине "Конец теста" (см вложение), а за любое другое число все нормально. В чем может быть причина и что можно сделать для исправления?

2020.03.10 12:00:19.971 Startup MetaTester 5 build 2361 (08 Mar 2020)
2020.03.10 12:00:19.994 Server  MetaTester 5 started on 127.0.0.1:3000
2020.03.10 12:00:19.995 Startup initialization finished
2020.03.10 12:00:20.111 127.0.0.1       login (build 2361)
2020.03.10 12:00:20.151 Network 4340 bytes of account info loaded
2020.03.10 12:00:20.151 Network 1474 bytes of tester parameters loaded
2020.03.10 12:00:20.151 Network 9908 bytes of input parameters loaded
2020.03.10 12:00:20.151 Network 340 bytes of symbols list loaded (24 symbols)
2020.03.10 12:00:20.152 Tester  expert file added: Experts\1.ex5. 296339 bytes loaded
2020.03.10 12:00:20.162 Tester  initial deposit 1000000.00 RUB, leverage 1:40
2020.03.10 12:00:20.172 Tester  successfully initialized
2020.03.10 12:00:20.172 Network 291 Kb of total initialization data received
2020.03.10 12:00:20.183 Tester  Intel Core2 Duo  T8300 @ 2.40GHz, 2012 MB
2020.03.10 12:00:20.640 Symbols EURUSD: symbol to be synchronized
2020.03.10 12:00:20.640 Symbols EURUSD: symbol synchronized, 3960 bytes of symbol info received
2020.03.10 12:00:20.641 History EURUSD: history synchronization started
2020.03.10 12:00:20.651 History EURUSD: load 27 bytes of history data to synchronize in 0:00:00.006
2020.03.10 12:00:20.651 History EURUSD: history synchronized from 2009.01.02 to 2020.03.09
2020.03.10 12:00:21.303 History EURUSD,M5: history cache allocated for 88714 bars and contains 88097 bars from 2019.01.01 10:00 to 2020.03.06 23:55
2020.03.10 12:00:21.303 History EURUSD,M5: history begins from 2019.01.01 10:00
2020.03.10 12:00:21.306 Tester  EURUSD,M5 (VTBForex-MetaTrader5): every tick generating
2020.03.10 12:00:21.306 Tester  testing with execution delay 34 milliseconds
2020.03.10 12:00:21.307 Tester  EURUSD,M5: testing of Experts\1.ex5 from 2020.03.09 00:00 to 2020.03.10 00:00 started with inputs:
2020.03.10 12:00:21.307 Tester    Expert_Title=1
2020.03.10 12:00:21.307 Tester    Signal_ThresholdOpen=50
2020.03.10 12:00:21.307 Tester    Signal_ThresholdClose=50
2020.03.10 12:00:21.307 Tester    Signal_PriceLevel=0.0
2020.03.10 12:00:21.307 Tester    Signal_StopLevel=0
2020.03.10 12:00:21.307 Tester    Signal_TakeLevel=0
2020.03.10 12:00:21.307 Tester    Signal_Expiration=4
2020.03.10 12:00:21.307 Tester    Signal_BarSize_BarSize=20
2020.03.10 12:00:21.307 Tester    Signal_BarSize_Trade=0
2020.03.10 12:00:21.307 Tester    Signal_BarSize_Weight=1.0
2020.03.10 12:00:21.307 Tester    Signal_MA_PeriodMA=12
2020.03.10 12:00:21.307 Tester    Signal_MA_Shift=0
2020.03.10 12:00:21.307 Tester    Signal_MA_Method=0
2020.03.10 12:00:21.307 Tester    Signal_MA_Applied=1
2020.03.10 12:00:21.307 Tester    Signal_MA_Weight=1.0
2020.03.10 12:00:21.307 Tester    Trailing_BreakEven_Profit=2
2020.03.10 12:00:21.307 Tester    Trailing_BreakEven_StopLevel=0
2020.03.10 12:00:21.307 Tester    Money_FixLot_Percent=0.0
2020.03.10 12:00:21.307 Tester    Money_FixLot_Lots=0.5
2020.03.10 12:00:21.429 Symbols USDRUB: symbol to be synchronized
2020.03.10 12:00:21.431 Symbols USDRUB: symbol synchronized, 3640 bytes of symbol info received
2020.03.10 12:00:21.431 History USDRUB: history synchronization started
2020.03.10 12:00:21.441 History USDRUB: load 156 bytes of history data to synchronize in 0:00:00.006
2020.03.10 12:00:21.441 History USDRUB: history synchronized from 2011.08.12 to 2020.03.06
2020.03.10 12:00:21.688 Symbols EURRUB: symbol to be synchronized
2020.03.10 12:00:21.689 Symbols EURRUB: symbol synchronized, 3640 bytes of symbol info received
2020.03.10 12:00:21.690 History EURRUB: history synchronization started
2020.03.10 12:00:21.695 History EURRUB: load 156 bytes of history data to synchronize in 0:00:00.003
2020.03.10 12:00:21.695 History EURRUB: history synchronized from 2015.01.05 to 2020.03.06
2020.03.10 12:00:21.699 Trade   2020.03.09 00:35:00   instant buy 0.50 EURUSD at 1.13405 (1.13385 / 1.13405 / 1.13385)
2020.03.10 12:00:21.699 Trades  2020.03.09 00:35:00   deal #2 buy 0.50 EURUSD at 1.13405 done (based on order #2)
2020.03.10 12:00:21.699 Trade   2020.03.09 00:35:00   deal performed [#2 buy 0.50 EURUSD at 1.13405]
2020.03.10 12:00:21.699 Trade   2020.03.09 00:35:00   order performed buy 0.50 at 1.13405 [#2 buy 0.50 EURUSD at 1.13405]
2020.03.10 12:00:21.712 1 (EURUSD,M5)   2020.03.09 00:35:00   CTrade::OrderSend: instant buy 0.50 EURUSD at 1.13405 [done at 1.13405]
2020.03.10 12:00:21.712 Trade   2020.03.09 00:35:00   position closed due end of test at 1.13385 [#2 buy 0.50 EURUSD 1.13405]
2020.03.10 12:00:21.712 Trades  2020.03.09 00:35:00   deal #3 sell 0.50 EURUSD at 1.13385 done (based on order #3)
2020.03.10 12:00:21.712 Trade   2020.03.09 00:35:00   deal performed [#3 sell 0.50 EURUSD at 1.13385]
2020.03.10 12:00:21.712 Trade   2020.03.09 00:35:00   order performed sell 0.50 at 1.13385 [#3 sell 0.50 EURUSD at 1.13385]
2020.03.10 12:00:21.712 Tester  final balance 999314.12 RUB
2020.03.10 12:00:21.721 Tester  EURUSD,M5: 772 ticks, 8 bars generated. Environment synchronized in 0:00:00.479. Test passed in 0:00:01.132 (including ticks preprocessing 0:00:00.078).
2020.03.10 12:00:21.721 Tester  EURUSD,M5: total time from login to stop testing 0:00:01.611 (including 0:00:00.488 for history data synchronization)
2020.03.10 12:00:21.721 Tester  255 Mb memory used including 5 Mb of history data, 32 Mb of tick data
2020.03.10 12:00:21.721 Tester  log file "C:\Users\Андрей\AppData\Roaming\MetaQuotes\Tester\0144DF5563B1CBFFFE69DE52CC09B7C7\Agent-127.0.0.1-3000\logs\20200310.log" written
2020.03.10 12:00:21.722         test Experts\1.ex5 on EURUSD,M5 thread finished
2020.03.10 12:00:22.280 127.0.0.1       prepare for shutdown
2020.03.10 12:00:24.225 Tester  close visual tester window
2020.03.10 12:00:24.452 Server  MetaTester 5 stopped
 
Andy:

Во время визуального теста советника на EUR/USD М5 в интервале 9-10 марта 2020, он останавливается после первой сделки по причине "Конец теста", а за любое другое число все нормально (см вложение). В чем может быть причина и что можно сделать для исправления?

текущий день не работает в тестере. а остальные версии без кода эксперта не проверить.

Причина обращения: