При работе с Нейрошелл 2 падает терминал

 

Коллеги, помогите пожалуйста.

Сделал индикатор из нескольких нейросеток, последовательно соединённых между собой. Т.е. одна сетка передаёт результаты в следующую, та в следующую и так несколько раз. Результаты интересные- с торговой точки зрения.

Но вот техническая проблема, которую никак не могу решить. Если я ставлю индикатор на одно окно- работает. Если на несколько окон- терминал вылетает с криком о критической ошибке.

Проблема, насколько я понял, возникает, когда происходит одновременное обращение к одному и тому же файлу def.

def я импортирую в MQL способом, который придумал  klot:

#import "NS2-32.dll"
int OpenNet(string defpath, int& netnumber[1], int& n_input[1], int& n_out[1]);
int FireNet(int& netnumber[1], double& inarray[], double& outarray[]);
int CloseNet(int& netnumber[1]);
#import

............................

//------------------------------------------------------------------+
int ret;
int netnumber[1], N_in[1], N_out[1];
double inarray[],outarray[];
string defpath="C:NeuroShell 2EXAMPLESTest2FFT_test.def";
//------------------------------------------------------------------+
................................

int init()
{

..........................................

ret=OpenNet(defpath, netnumber, N_in, N_out);

Подскажите, пожалуйста, как можно это обойти? Очень уж не хочется создавать для каждой валютной пары свою сетку.

 
nicdevis >>:

Коллеги, помогите пожалуйста.

Проблема, насколько я понял, возникает, когда происходит одновременное обращение к одному и тому же файлу def.

Подскажите, пожалуйста, как можно это обойти? Очень уж не хочется создавать для каждой валютной пары свою сетку.

Проблема в том, что в Вашей дллке не предусмотрено одновременное обращение нескольких пользователей, поэтому в итоге возникает конфликт размеров или что-то типа.


Варианты решения:

1. Простой -- каждому ТФ и Символу -- свою дллку

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

 
TheXpert >>:

Проблема в том, что в Вашей дллке не предусмотрено одновременное обращение нескольких пользователей, поэтому в итоге возникает конфликт размеров или что-то типа.


Варианты решения:

1. Простой -- каждому ТФ и Символу -- свою дллку

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

То есть, не создавать всякий раз новую сетку и файл def, а создавать вместо этого отдельные копии NS2-32.dll ? Типа, NS2-321.dll, NS2-322.dll и т.д. И из каждого индикатора вызывать свою. Я правильно понял?

 
nicdevis >>:

То есть, не создавать всякий раз новую сетку и файл def, а создавать вместо этого отдельные копии NS2-32.dll ? Типа, NS2-321.dll, NS2-322.dll и т.д. Я правильно понял?

Да. Должно помочь.

 
TheXpert >>:

Да. Должно помочь.

Спасибо. А вот такая идея возникла: что, если создать копии длл по названиям волютных пар? Что-то вроде NS2-32_EURUSD.dll, NS2-32_USDJPY.dll, и т.д.? И пусть индикатор перед импортом сам проверяет, для какой пары его сейчас вызвали. А если длл для этой пары не существует, пусть идикатор не загружается вовсе.

Вот только не знаю, можно ли организовать проверку имени   перед  импортом? MQL позволяет такое?

 
nicdevis >>:

Спасибо. А вот такая идея возникла: что, если создать копии длл по названиям волютных пар? Что-то вроде NS2-32_EURUSD.dll, NS2-32_USDJPY.dll, и т.д.? И пусть индикатор перед импортом сам проверяет, для какой пары его сейчас вызвали. А если длл для этой пары не существует, пусть идикатор не загружается вовсе.

Вот только не знаю, можно ли организовать проверку имени перед импортом? MQL позволяет такое?

Если стоят два советника на одной и той же паре с разными настройками -- им тоже нужны будут разные длл.

Если длл нету, советник работать не будет, ЕМНИП.

 
TheXpert >>:

Если стоят два советника на одной и той же паре с разными настройками -- им тоже нужны будут разные длл.

Это понятно. А можно ли вообще вместо

#import "NS2-32.dll"

делать

#import <такой-то стринг>  ?

MQL позволяет такое? 



Если длл нету, советник работать не будет, ЕМНИП.

Это я проверю.

 

TheXpert, переименование дллки работает. Огромное спасибо.

А вот #import <такой-то стринг> не работает. Видимо, придётся ручками делать индикаторы для каждой пары.

 
nicdevis >>:

А вот #import <такой-то стринг> не работает. Видимо, придётся ручками делать индикаторы для каждой пары.

А, вот что Вы имели в виду -- да, руками.

 
Выручайте, господа!
 Я сделал для каждой пары по экземпляру, для них NS2-32_USDJPY.DLL, NS2-32_EURUSD.DLL и т.д.
Вдруг перестал работать работать индикатор с этими длл. Пишет, ошибка 126
Кажется, это началось после обновления билда МТ, но я не уверен.
 
Эксперт тоже с ними не работает, проверил.
Причина обращения: