Самый быстрый и удобный способ передачи больших данных между MT5 и DLL - страница 2

 

Друзья. Да и нахрен не надо передавать целых 100000 баров из советника в ДЛЛ.

Такое количество баров - никак не может образоваться внутри советника, держу пари, что информация по этим барам известна еще до его запуска. Соответственно, разумно заранее загнать ее в файл, и ДЛЛ будет работать с этим файлом. А между советником и ДЛЛ - должны передаваться только данные, которые непосредственно формируются внутри советника, или ему нужны непосредственно в момент работы.

 
Фьючерсные объемы для МТ:
Зачем придумывать извраты если можно передавать массивом голый поток данных? Хоть структурированный, хоть нет.

как, ссылку на приблизительное описание можно?

George Merts ... нахрен не надо передавать целых 100000 баров из советника в ДЛЛ.
Для сбора статистики. Да и вообще, к чему спор, просто надо и все.
 
Art:

как, ссылку на приблизительное описание можно?

#import "some.dll"
void TransferData(int& data[], int size);
#import

void OnStart()
{
   int arr[];
   ArrayInitialize(0);
   int size = 100;
   ArrayResize(arr, 100);
   
   TransferData(arr, size);
}

// some.dll

void MT4EXPORT TransferData(int* data, int size)
{
   //...
}
 
Фьючерсные объемы для МТ:
вспомнил, почем отбросил этот вариант - нельзя ресайзить из DLL
 
Art:
вспомнил, почем отбросил этот вариант - нельзя ресайзить из DLL
Скопировать внутри DLL в свой массив и делать с этим массивом, что угодно.
 
Art:

через пайпы - да, можно, но к сожалению в MQL пайпы сделанны синхронно, т.е. если отправил что-то на сервер, в DLL, то выполнение скрипта блокируется до тех пор, пока сервер не вернет ответ ... неудобно

если через маппинг, то все равно ведь будет мини-парсинг, например, пишешь в файл строку цен через разделитель "0,90555:0,90444:0,90333", потом при получении и чтении переводишь в массив с помощью StringSplit, так если парсинг все равно будет, то почему бы не передать сразу всю информацию за раз, например :

EURUSD#

0,90555:0,90444:0,90333#

0,90123:0,90456:0,90678#

0,90528:0,90441:0,90785#

или я как-то неправильно понял фразу про "массив чисел"?

Что-то Вы напутали. Через FileMapping прекрасно можно передавать не только строки, но и все остальные типы данных.

ИМХО, этот вопрос года три назад уже возникал - не понятно откуда народ несуществующую проблему берет))

 
Art:
вспомнил, почем отбросил этот вариант - нельзя ресайзить из DLL
Легко решаемо.
 
Фьючерсные объемы для МТ:
Легко решаемо.

если не секрет, то как именно?

на всякий случай уточню, поресайзить и вернуть обратно в MQL, для большей реалистичности - пример задачи - синхронизация баров по времени