Esto es asombroso... Lo implementé con algunas pequeñas adiciones (como complementar las reglas según lo sugerido por el autor) en un triple canal' estrategia de reversión a la media y mejoró su rendimiento a la luna... gracias por compartir.
Tengo el siguiente código que comenzó con su ejemplo de un sistema difuso
double CalculateMamdani()
{
// buffers y arrays normalizadosCopyBuffer(hnd1,0,0,1,arr1);
NormalizeArrays(arr1);
CopyBuffer(hnd2,0,0,1,arr2);
NormalizeArrays(arr2);
CopyBuffer(hnd3,0,0,1,arr3);
NormalizeArrays(arr3);
CopyBuffer(hnd4,0,0,1,arr4);
NormalizeArrays(arr4);
CopyBuffer(hnd5,0,0,1,arr5);
NormalizeArrays(arr5);
CopyBuffer(hnd6,0,0,1,arr6);
NormalizeArrays(arr6);
CopyBuffer(hnd7,0,0,1,arr7);
NormalizeArrays(arr7);
CopyBuffer(hnd8,0,0,1,arr8);
NormalizeArrays(arr8);
CopyBuffer(hnd9,0,0,1,arr9);
NormalizeArrays(arr9);
// entradas - primer sistema difuso [RSI]
firstTerm.SetAll(firstInput,arr1[0]);
secondTerm.SetAll(secondInput,arr2[0]);
thirdTerm.SetAll(thirdInput,arr2[0]);
// entradas - segundo sistema difuso [CCI]]
fourthTerm.SetAll(fourthInput,arr4[0]);
fifthTerm.SetAll(fifthInput,arr5[0]);
sixthTerm.SetAll(sixthInput,arr6[0]);
// entradas - tercer sistema difuso [Estocástico]]
seventhTerm.SetAll(seventhInput,arr7[0]);
eighthTerm.SetAll(eighthInput,arr8[0]);
ninthTerm.SetAll(ninthInput,arr9[0]);
Inputs.Clear();
// añadir términos - primer sistema difuso [RSI]]
Inputs.Add(firstTerm);
Inputs.Add(secondTerm);
Inputs.Add(thirdTerm);
// añadir términos - segundo sistema difuso [CCI}
Inputs.Add(fourthTerm);
Inputs.Add(fifthTerm);
Inputs.Add(sixthTerm);
// añadir términos - tercer sistema difuso [Stockastic]
Inputs.Add(seventhTerm);
Inputs.Add(eighthTerm);
Inputs.Add(ninthTerm);
CList *FuzzResult=OurFuzzy.Calculate(Inputs);
Output=FuzzResult.GetNodeAtIndex(0); ¡¡¡¡¡¡¡¡// necesita actualizarse para tener en cuenta tres salidas y no una !!!!!!!!double res = Output.Value();
// añadir código para el método de agregación en tres salidas utilizando pesosdelete FuzzResult;
return(res);
}
Estoy recodificando para que pueda manejar tres sistemas difusos separados
Claramente necesito considerar las salidas de los tres sistemas difusos
Hola, puedes leer aquí https://www.mql5.com/es/articles/3856
también nuevo artículo pronto tal vez, tal vez no ..
hola maxim
gracias por tus fantasticas muestras
cuando depuro este ea
Fuzzy_logic_for_fuzzy_algotraders_Anywhere_v02.mq5
u otras muestras de lógica difusa
mql error de retorno
incorrecta fundición de punteros en RuleParser.mqh línea 712
por favor ayude a solucionar este error
mi versión del compilador es
Versión 5 build 2340 21 Feb 2020
muchas gracias
Tengo el siguiente código que comenzó con su ejemplo de un sistema difuso
Estoy recodificando para que pueda manejar tres sistemas difusos separados
Claramente necesito considerar las salidas de los tres sistemas difusos
Me gustaría agregar las tres salidas usando pesos
Sugerencias para completar el código bienvenidas
Bob M
Dunedin
Nueva Zelanda