Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Если кто-то пользовал библиотеку в МТ4 подскажите с каким расширением должен быть файл программы FCL и куда его положить.
Написал индикатор. Последовательность как в статье.
1. создаем модель (ошибку не выдает)
IDm=ffll_new_model(); // сoздает модель возвращает индекс модели
if(IDm<0){
string txt=ffll_get_msg_textA(IDm); // получить сообщение об ошибке.
Alert("Не создалась модель"+txt);return(0);}
2.Грузим файл с программой (выдает ошибку). Файл лежит в дир. \Expert\File . Пробовал с расширением .fcl .txt.
h=ffll_load_fcl_file(IDm,"Histo.txt"); // загружает программу на языке нечеткого моделирования
if(h<0){
txt=ffll_get_msg_textA(IDm); // получить сообщение об ошибке.
Alert("Не загрузился файл программы"+txt);return(0);}
3.Создаем дочку.
ID1=ffll_new_child(IDm); // создает дочернюю модель для заданной возвращает индекс модели
if(ID1<0){
txt=ffll_get_msg_textA(IDm); // получить сообщение об ошибке.
Alert("Не создалась дочка"+txt);return(0);}
4.Подаем входные данные поштучно. Т.е.
IN=ffll_set_value(IDm,ID1,0,Х); // устанавливает значение для первой входной переменной
IN=ffll_set_value(IDm,ID1,1,Y); // устанавливает значение для второй входной переменной
ну и т.д.
5. Получаем выход.
Res=ffll_get_output_value(IDm,ID1); // получить значение для выходной переменной
Поделитесь опытом.
Аналогичная проблема в MT5. Не открывает файл. Пример кода:
#property tester_file "model.fcl"
int OnInit()
{
string filename = "model.fcl";
// Считываю строку из файла и убеждаюсь, что его можно открыть.
int filehandle = FileOpen(filename,FILE_READ|FILE_ANSI);
if(filehandle < 0)
{
Print("Error code ",GetLastError());
Print(filename);
}
else
{
Print("Open success");
Print(FileReadString(filehandle));
FileClose(filehandle);
}
// FFCL
int model = ffll_new_model();
if(model < 0)
{
Print("Ошибка создания модели!");
}
int ret_val = ffll_load_fcl_file(model,filename);
if(ret_val < 0)
{
string txt = ffll_get_msg_textW(model);
Print("Ошибка: " + txt);
}
ffll_close_model(model);
return(0);
}
void OnDeinit(const int reason){}
void OnTick(){}
Получаю следующий вывод:
FUNCTION_BLOCK
Open success
Почему выдает ошибку? Как я понимаю проблема в передаче параметра в функцию ffll_load_fcl_file. (наверное что-то с кодировками или с приведением типов)
Большая просьба к тем, кто работал с этой библиотекой, ответьте пожалуйста.
Может быть связано со структурой файла .fcl/ Я так и не нашел программу которой можно было бы проверить правильность её. Ссылка в тексте нерабочая. Может кто уже проходил эти грабли отпишитесь.
Библиотека в принципе очень интересна (а если ещё и рабочая ). Автор к сожалению мелькнул и исчез. На вопросы отвечать не желает. Не понятная таинственность(или занятость).
TO: SergeyVP/ Дочерную модель не создавали и переменные не вводили. Так понимаю проверяли возможность загрузки?
обменяемся программами для проверки?
С библиотекой разбираться, больше времени уйдет, нежели самостоятельно в коде прописать три элементарные функции нечеткой логики:
Ну не только. Функции принадлежности, дефазификация и т.д. Не легче.
Не совсем так. Функция возвращает -1, это говорит о том, что она не находит файла. Думал проблема в самой библиотеке, проверил на C++ с dll - все работает. Код примера и модель брал из примера на сайте (в загрузках sample). Что касается структуры файла fcl, то если есть ошибка в логике, модель не будет загружена и будет что-то вроде critical error. По крайней мере на С++, если я задавал модель с явной ошибкой, то программа падала, выдав:
what(): basic_string::_S_construct null not valid
TO: SergeyVP/ Дочерную модель не создавали и переменные не вводили. Так понимаю проверяли возможность загрузки?
Да, пока только загрузку. Смысла нету создавать дочерную, если модель не загружена.
обменяемся программами для проверки?
С библиотекой разбираться, больше времени уйдет, нежели самостоятельно в коде прописать три элементарные функции нечеткой логики:
Не совсем так. Функция возвращает -1, это говорит о том, что она не находит файла. Думал проблема в самой библиотеке, проверил на C++ с dll - все работает. Код примера и модель брал из примера на сайте (в загрузках sample). Что касается структуры файла fcl, то если есть ошибка в логике, модель не будет загружена и будет что-то вроде critical error. По крайней мере на С++, если я задавал модель с явной ошибкой, то программа падала, выдав:
what(): basic_string::_S_construct null not valid
Да, пока только загрузку. Смысла нету создавать дочерную, если модель не загружена.
Я на правильность модель fcl никак не проверяю. Делаю модель в MATLAB, получаю fis файл. Дальше делаю конверт fis в fcl с помощью программы fuzzylite.К сожалению, похоже все так и будет. Придется самому писать..
Понял. Благодарю.
"Код примера и модель брал из примера на сайте (в загрузках sample)".
Тут не понял, с какого сайта? Ткните плз.
Ну может легче связать МАТЛАБ с МТ4/МТ5? Тем более решения уже предлагались.
Наверное буду двигаться в этом направлении, если не заработает эта библиотека.
Тут не понял, с какого сайта? Ткните плз.
С оф сайта библиотеки - ffll.sourceforge.net.
Точнее: http://ffll.sourceforge.net/downloads.htm -> Download a sample application that uses FFLL.
Там код на С++ и простая fcl модель.
Ну может легче связать МАТЛАБ с МТ4/МТ5? Тем более решения уже предлагались.
С оф сайта библиотеки - ffll.sourceforge.net.
Точнее: http://ffll.sourceforge.net/downloads.htm -> Download a sample application that uses FFLL.
Там код на С++ и простая fcl модель.
Это где почитать?Хотелось бы всетаки услышать "начальника транспортного цеха" объявившего эту тему и писавшего о том, что у него всё чудесно работало в МТ4.
Проблема- не грузится файл .fcl.
Попутно: библиотека не полностью поддерживает стандарт. Есть исключения, ограничения и т.п. Да и выход - только одноэлементные множества.