Библиотеки: Библиотека, реализующая нечеткую логику

 

Библиотека, реализующая нечеткую логику:

Нечеткая логика - современная наука, которая активно используется в военном деле, в частности, для наведения ракет. Теперь она доступна трейдерам.

Для чего пригодна нечеткая логика? Как известно, есть системы, с которыми человек справляется хорошо, но которые очень трудно запрограммировать. Вот в этом случае на помощь приходит нечеткая логика. Она максимально приближена к логике человека. Первый раз и вполне успешно нечеткая логика была применена одним из японских банков. Система содержала 60 правил, и принесла банку более 70 миллионов долларов прибыли.

Файл содержит:

  • DLL, реализующую нечеткую логику,
  • mqh-файл для импорта функций dll с описанием функций,
  • Краткое описание языка нечеткого моделирования FLC.

Автор: Fox Rex

 

Хм... Очень интересно... =)

 
Есть какие-то материалы где можно больше узнать о принципах нечеткой логики?
 
slyusar:
Если не трудно, расскажите подробней о библиотеке..., может есть какие-то материалы где можно больше узнать о нечеткой логике.

Интернет нам в помощь - Нечёткая логика

PS

Интересная тема, стоит ей заняться плотней. А в виде библиотеки созданной разработчиками она была бы еще интересней...

Автору статьи респект.

 
Interesting:

Интернет нам в помощь - Нечёткая логика

PS

Интересная тема, стоит ей заняться плотней. А в виде библиотеки созданной разработчиками она была бы еще интересней...

Автору статьи респект.

Спасибо большое.
 
В коды пока не смотрел, но вопрос к специалистам(скорее, к автору) - а будет ли эта библиотека работать на MQL-4 и можно ли ожидать появления версии для 4-ки
 
Segun1966:
В коды пока не смотрел, но вопрос к специалистам(скорее, к автору) - а будет ли эта библиотека работать на MQL-4 и можно ли ожидать появления версии для 4-ки
Ну если она 32 битная то вполне, по крайней мере наверняка под MATLAB уже существует кучи всего для реализации нечеткой логики (осталось только найти все это)...
 
Будет работать на МТ4 без всякой переделки. Функции импорта на MQL4 и MQL5 одинаковы.
 
FoxRex:
Будет работать на МТ4 без всякой переделки. Функции импорта на MQL4 и MQL5 одинаковы.

по идее там где string параметр не будет работать. В mt4 char*, в mt5 wchar_t*

 

спасибо за библиотеку 

 

Это я не учел, но этот вопрос решаем.

ffll_get_msg_text

Prototypes:

Wide character version:
        const wchar_t* ffll_get_msg_textW(int model_idx)
ASCII character version:
        const char* ffll_get_msg_textA(int model_idx)

Purpose:

This function returns the text of the "current message" associated with the model index passsed in. The message may be an error or warning. This function should be called when an API function returns an error.

Parameters:

  • model_idx – Index of the model to load the file into.

Returns:

Text of the message, or NULL if no message

Notes:

While you are free to call either the wide character or ASCII version of this function explicitly, the version that's called by ffll_get_msg_text() depends on if _UNICODE is defined or not. If _UNICODE is defined when you compile your application, the wide character version is called, otherwise the ASCII version is called.

 

Для МТ4 использовать const char* ffll_get_msg_textA(int model_idx)

Для МТ5  const wchar_t* ffll_get_msg_textW(int model_idx)

Я использовал для МТ5 первую, будет работать не правильно заменить на вторую.

Я изначально теститл библиотеку в МТ4, работает прекрасно, только одно но, если при загрузке файла на FCL указать не верный путь происходит краш терминала. 

 

Если кто-то пользовал библиотеку в МТ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); // получить значение для выходной переменной 

Поделитесь опытом.