Cálculo PPZ - ajuda para refinar - página 2

 
É um pouco pesado para um EA, mas é uma boa idéia. Talvez possamos torná-lo mais leve, mas duvido que faça muito para o comércio visual como análise adicional.
 
Quanto à otimização. Na minha opinião, você deve ordenar a matriz resultante Fr0[j] e depois dançar sobre ela, o resultado será apenas um passe.
 

Este código não conta para barras com dois fractais ao mesmo tempo:


j=0;
for(i = loopbegin; i > Nfirst; i--) {
f0 = -1.0;
f0 = iFractals(NULL,0,MODE_UPPER,i);
se (f0<=0,0 ) f0 = iFractals(NULL,0,MODE_LOWER,i);
se (f0>0.0) {
Fr0[j]=f0;
Ind0[j]=i;
j++;
}
}
Nmax = j;


E aqui você não precisa passar por todos os fractais, você não se importa se compara o fractal #1 com o #2 ou #2 com o #1.
A maneira de consertá-lo é esta:


for(i = 0; i < Nmax; i++) {
f0 = Fr0[i];
for(j = i+1; j < Nmax; j++) {
f1=Fr0[j];
if(MathAbs(Ind0[i]-Ind0[j])>minBars) {
for(k = j+1; k < Nmax; k++) {
f2 = Fr0[k];
if(MathAbs(Ind0[i]-Ind0[k])>minBars && MathAbs(Ind0[k]-Ind0[j])>minBars) {
for(l = k+1; l < Nmax; l+++) {
f3 = Fr0[l];
if (MathAbs(Ind0[i]-Ind0[l])>minBars && MathAbs(Ind0[j]-Ind0[l])>minBars && MathAbs(Ind0[k]-Ind0[l])>minBars) {
p0 = (f0+f1+f2+f3)/4.0;
s0 = (f0-p0)*(f0-p0)+(f1-p0)*(f1-p0)+(f2-p0)*(f2-p0)+(f2-p0)*(f2-p0);
se (s0<smin) {
smin=s0;
pmin=p0;
imin=i;
jmin=j;
kmin=k;
lmin=l;
}
}
}
}
}
}
}
}

E este código deve ser colocado na função e usado 4 vezes em vez de copiar o código. Os fractais na Fr0 devem ser zerados, para que eles não participem do próximo passe.



 

Por que passar por fractais a cada iteração? Não é mais fácil fazê-lo uma vez e depois analisá-lo mais tarde? Além disso, a comparação deve convergir para um triângulo, não para um quadrado (não faz sentido comparar fractal 1 e 2 duas vezes, e depois 2 e 1). Eu o fiz um pouco diferente - o indicador está seqüencialmente procurando divergência de 0 pips e acima até encontrar quatro níveis. Eu não limitei a distância entre os níveis:


Arquivos anexados:
 
Scriptong писал(а) >>

Por que passar por fractais a cada iteração? Não é mais fácil fazê-lo uma vez e depois analisá-lo mais tarde? Além disso, a comparação deve convergir para um triângulo, não para um quadrado (não faz sentido comparar fractal 1 e 2 duas vezes, e depois 2 e 1). Eu o fiz um pouco diferente - o indicador está seqüencialmente procurando divergência de 0 pips e acima até encontrar quatro níveis. Eu não limitei a distância entre os níveis:

Ótimo! A velocidade é totalmente diferente... :)

Posso também salvar os valores dos níveis recebidos nos tampões do indicador? A fim de processá-los mais tarde do Expert Advisor.

 

Eu mesmo vou fazer um especialista. Tenho algumas idéias. Mas talvez alguém tenha idéias mais interessantes? Vou fazer um e afixá-lo na Base de Código.

 
Scriptong писал(а) >>

Eu mesmo vou fazer um especialista. Tenho algumas idéias. Mas talvez alguém tenha idéias mais interessantes? Eu os farei e os afixarei na Base de Código.

Você pode tentar adicioná-lo desta forma:

if (period == 0) {period = WindowBarsPerChart();}
E exibir em algum lugar na tela o número de barras para calcular...

 
mikola2 >>:

if (period == 0) {period = WindowBarsPerChart();}
И выводить где-нибудь на экране количество баров для расчета...

Não foi isso que eu quis dizer :)

Idéias sobre o Expert Advisor. É claro que há muito mais a acrescentar ao próprio indicador

 
Qualquer idéia, torná-lo em uma função, quero dizer, a lógica do peru, você pode fazer isso?
 
qwerewq >>:
Идеи есть, сделайте его в виде функции, логику индюка имею в виду, сможете?


já está na forma de funções...