Discussão do artigo "Lógica Difusa nas estratégias de negociação" - página 6

 
Maxim Dmitrievsky:

Olá, você pode ler aqui https://www.mql5.com/pt/articles/3856

Também há um novo artigo em breve, talvez sim ou talvez não...

oi maxim

obrigado por suas amostras fantásticas

Quando eu depuro este EA


Fuzzy_logic_for_fuzzy_algotraders_Anywhere_v02.mq5

ou outras amostras de lógica fuzzy

erro de retorno de mql

conversão incorreta de ponteiros na linha 712 do RuleParser.mqh

Por favor, ajude a corrigir esse erro

Minha versão do compilador é

Versão 5 build 2340 21 de fevereiro de 2020

Muito obrigado a você

 
Isso é incrível... Eu o implementei com algumas pequenas adições (como complementar as regras sugeridas pelo autor) em uma estratégia de reversão à média de "canal triplo" e melhorei seu desempenho até a lua... obrigado por compartilhar.
 
Olá, obrigado por seus artigos, você me ensinou muito, obrigado Maxim!
 

Tenho o seguinte código que começou com seu exemplo de um sistema fuzzy

double CalculateMamdani()
{
// buffers e matrizes normalizados
 CopyBuffer(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 - primeiro sistema fuzzy [RSI] 
 firstTerm.SetAll(firstInput,arr1[0]);
 secondTerm.SetAll(secondInput,arr2[0]);
 thirdTerm.SetAll(thirdInput,arr2[0]);
 // entradas - segundo sistema fuzzy [CCI]]
 fourthTerm.SetAll(fourthInput,arr4[0]);
 fifthTerm.SetAll(fifthInput,arr5[0]);
 sixthTerm.SetAll(sixthInput,arr6[0]);
 // entradas - terceiro sistema fuzzy [Estocástico]]
 seventhTerm.SetAll(seventhInput,arr7[0]);
 eighthTerm.SetAll(eighthInput,arr8[0]);
 ninthTerm.SetAll(ninthInput,arr9[0]);
 
 Inputs.Clear();
 // adicionar termos - primeiro sistema fuzzy [RSI]]
 Inputs.Add(firstTerm);
 Inputs.Add(secondTerm);
 Inputs.Add(thirdTerm);
// adicionar termos - segundo sistema fuzzy [CCI} 
 Inputs.Add(fourthTerm);
 Inputs.Add(fifthTerm);
 Inputs.Add(sixthTerm);
 // adicionar termos - terceiro sistema fuzzy [Stockastic]
 Inputs.Add(seventhTerm);
 Inputs.Add(eighthTerm);
 Inputs.Add(ninthTerm);
 
 CList *FuzzResult=OurFuzzy.Calculate(Inputs);

 Output=FuzzResult.GetNodeAtIndex(0); // precisa ser atualizado para considerar três saídas e não uma !!!!!!!!
 
double res = Output.Value();

// adicionar código para o método de agregação em três saídas usando pesos

delete FuzzResult;

 return(res);
}

Estou recodificando para que ele possa lidar com três sistemas fuzzy separados

Claramente, preciso considerar as saídas dos três sistemas fuzzy

Gostaria de agregar as três saídas usando pesos

Sugestões para completar o código são muito bem-vindas

Bob M

Dunedin

Nova Zelândia