Comércio harmônico - página 308

 

Obrigado, poruchik. Aqui está o código necessário para ser modificado. Vou tentar modificá-lo.

if (ABCD && StringLen(vNamePattern)==0 && PotencialsLevels_retXD<2)

{

vBullBear = "";

vNamePattern = "";

AB=MathAbs(zz[aXABCD] - zz[aXABCD[A]]);

CD=MathAbs(zz[aXABCD[D]] - zz[aXABCD[C]]);

if (CD>AB*min_DeltaGartley && CD<AB*max_DeltaGartley)

{

vNamePattern=vABCD; // AB-CD

}

senão

{

para (int iABCD=0;iABCD<_ABCDsize;iABCD++)

{

if (CD>_ABCDtype*AB*min_DeltaGartley && CD<_ABCDtype*AB*max_DeltaGartley)

{

vNamePattern=_ABCDtypetxt+"*AB=CD";

intervalo;

}

}

}

 

Feito! Aqui está o código modificado. Agora ele verifica AC < AB * Fib(1.0) para AB=CD & (x) * AB=CD padrões

se (ABCD && StringLen(vNamePattern)==0 && PotencialsLevels_retXD<2)

{

vBullBear = "";

vNamePattern = "";

AB=MathAbs(zz[aXABCD] - zz[aXABCD[A]]);

CD=MathAbs(zz[aXABCD[D]] - zz[aXABCD[C]]);

if ( (CD>AB*min_DeltaGartley && CD zz[aXABCD] && zz[aXABCD[A]] > zz[aXABCD[C]] && zz[aXABCD[C]] > zz[aXABCD])

||

(CD>AB*min_DeltaGartley && CD<AB*max_DeltaGartley && zz[aXABCD[A]] < zz[aXABCD] && zz[aXABCD[A]] < zz[aXABCD[C]] && zz[aXABCD[C]] < zz[aXABCD])

)

{

vNamePattern=vABCD; // AB-CD

}

senão

{

para (int iABCD=0;iABCD<_ABCDsize;iABCD++)

{

if ( (CD>_ABCDtype*AB*min_DeltaGartley && CD zz[aXABCD] && zz[aXABCD[A]] > zz[aXABCD[C]] && zz[aXABCD[C]] > zz[aXABCD])

||

(CD>_ABCDtype*AB*min_DeltaGartley && CD<_ABCDtype*AB*max_DeltaGartley && zz[aXABCD[A]] < zz[aXABCD] && zz[aXABCD[A]] < zz[aXABCD[C]] && zz[aXABCD[C]] < zz[aXABCD[C]] < zz[aXABCD])

)

{

vNamePattern=_ABCDtypetxt+"*AB=CD";

intervalo;

}

}

}

 

obrigado mano

I mod 133 com seu código

mesmo bug?

Arquivos anexados:
 
poruchik:
obrigado mano

I mod 133 com seu código

mesmo bug?

Você é bem-vinda ao poruchik,

e para Real AB=CD , os rácios devem ser

AB= Padrão AB=CD

[.382/2.240]

[.500/2.000]

[.618/1.618]

[.707/1.414]

[.786/1.270]

[AB=CD]

Arquivos anexados:
image038.jpg  45 kb
 

Código modificado para verificação do Real AB=CD

O novo código agora verifica os rácios retAC , retBD

Com o novo código, o indicador encontra menos padrões AB=CD, mas eles serão muito precisos

se (ABCD && StringLen(vNamePattern)==0 && PotencialsLevels_retXD<2)

{

vBullBear = "";

vNamePattern = "";

AB=MathAbs(zz[aXABCD] - zz[aXABCD[A]]);

CD=MathAbs(zz[aXABCD[D]] - zz[aXABCD[C]]);

retAC = (zz[aXABCD[C]] - zz[aXABCD]) / (zz[aXABCD[A]] - zz[aXABCD] + vDelta0);

retBD = (zz[aXABCD[C]] - zz[aXABCD[D]]) / (zz[aXABCD[C]] - zz[aXABCD] + vDelta0);

if(

(retAC>=0,382*min_DeltaGartley) && (retAC=2,240*min_DeltaGartley) && (retBD<=2,240*max_DeltaGartley)

||

(retAC>=0.500*min_DeltaGartley) && (retAC=2.000*min_DeltaGartley) && (retBD<=2.000*max_DeltaGartley)

||

(retAC>=0,618*min_DeltaGartley) && (retAC=1,618*min_DeltaGartley) && (retBD<=1,618*max_DeltaGartley)

||

(retAC>=0,707*min_DeltaGartley) && (retAC=1,414*min_DeltaGartley) && (retBD<=1,414*max_DeltaGartley)

||

(retAC>=0,786*min_DeltaGartley) && (retAC=1,270*min_DeltaGartley) && (retBD<=1,270*max_DeltaGartley)

)

{

if ( (CD>AB*min_DeltaGartley && CD zz[aXABCD] && zz[aXABCD[A]] > zz[aXABCD[C]] && zz[aXABCD[C]] > zz[aXABCD])

||

(CD>AB*min_DeltaGartley && CD<AB*max_DeltaGartley && zz[aXABCD[A]] < zz[aXABCD] && zz[aXABCD[A]] < zz[aXABCD[C]] && zz[aXABCD[C]] < zz[aXABCD])

)

{

vNamePattern=vABCD; // AB-CD

}

}

senão

{

para (int iABCD=0;iABCD<_ABCDsize;iABCD++)

{

if ( (CD>_ABCDtype*AB*min_DeltaGartley && CD zz[aXABCD] && zz[aXABCD[A]] > zz[aXABCD[C]] && zz[aXABCD[C]] > zz[aXABCD])

||

(CD>_ABCDtype*AB*min_DeltaGartley && CD<_ABCDtype*AB*max_DeltaGartley && zz[aXABCD[A]] < zz[aXABCD] && zz[aXABCD[A]] < zz[aXABCD[C]] && zz[aXABCD[C]] < zz[aXABCD[C]] < zz[aXABCD])

)

{

vNamePattern=_ABCDtypetxt+"*AB=CD";

intervalo;

}

}

}

 
grandaevus:
Código modificado para verificação do Real AB=CD

O novo código agora verifica os rácios retAC , retBD

Com o novo código, o indicador encontra menos padrões AB=CD, mas eles serão muito precisos

se (ABCD && StringLen(vNamePattern)==0 && PotencialsLevels_retXD<2)

{

vBullBear = "";

vNamePattern = "";

AB=MathAbs(zz[aXABCD] - zz[aXABCD[A]]);

CD=MathAbs(zz[aXABCD[D]] - zz[aXABCD[C]]);

retAC = (zz[aXABCD[C]] - zz[aXABCD]) / (zz[aXABCD[A]] - zz[aXABCD] + vDelta0);

retBD = (zz[aXABCD[C]] - zz[aXABCD[D]]) / (zz[aXABCD[C]] - zz[aXABCD] + vDelta0);

if(

(retAC>=0,382*min_DeltaGartley) && (retAC=2,240*min_DeltaGartley) && (retBD<=2,240*max_DeltaGartley)

||

(retAC>=0.500*min_DeltaGartley) && (retAC=2.000*min_DeltaGartley) && (retBD<=2.000*max_DeltaGartley)

||

(retAC>=0,618*min_DeltaGartley) && (retAC=1,618*min_DeltaGartley) && (retBD<=1,618*max_DeltaGartley)

||

(retAC>=0,707*min_DeltaGartley) && (retAC=1,414*min_DeltaGartley) && (retBD<=1,414*max_DeltaGartley)

||

(retAC>=0,786*min_DeltaGartley) && (retAC=1,270*min_DeltaGartley) && (retBD<=1,270*max_DeltaGartley)

)

{

if ( (CD>AB*min_DeltaGartley && CD zz[aXABCD] && zz[aXABCD[A]] > zz[aXABCD[C]] && zz[aXABCD[C]] > zz[aXABCD])

||

(CD>AB*min_DeltaGartley && CD<AB*max_DeltaGartley && zz[aXABCD[A]] < zz[aXABCD] && zz[aXABCD[A]] < zz[aXABCD[C]] && zz[aXABCD[C]] < zz[aXABCD])

)

{

vNamePattern=vABCD; // AB-CD

}

}

senão

{

para (int iABCD=0;iABCD<_ABCDsize;iABCD++)

{

if ( (CD>_ABCDtype*AB*min_DeltaGartley && CD zz[aXABCD] && zz[aXABCD[A]] > zz[aXABCD[C]] && zz[aXABCD[C]] > zz[aXABCD])

||

(CD>_ABCDtype*AB*min_DeltaGartley && CD<_ABCDtype*AB*max_DeltaGartley && zz[aXABCD[A]] < zz[aXABCD] && zz[aXABCD[A]] < zz[aXABCD[C]] && zz[aXABCD[C]] < zz[aXABCD[C]] < zz[aXABCD])

)

{

vNamePattern=_ABCDtypetxt+"*AB=CD";

intervalo;

}

}

}

Fez algumas revisões(removeu parênteses desnecessários).

Código final

se (ABCD && StringLen(vNamePattern)==0 && PotencialsLevels_retXD<2)

{

vBullBear = "";

vNamePattern = "";

AB=MathAbs(zz[aXABCD] - zz[aXABCD[A]]);

CD=MathAbs(zz[aXABCD[D]] - zz[aXABCD[C]]);

retAC = (zz[aXABCD[C]] - zz[aXABCD]) / (zz[aXABCD[A]] - zz[aXABCD] + vDelta0);

retBD = (zz[aXABCD[C]] - zz[aXABCD[D]]) / (zz[aXABCD[C]] - zz[aXABCD] + vDelta0);

if(

(retAC>=0,382*min_DeltaGartley && retAC=2,240*min_DeltaGartley && retBD<=2,240*max_DeltaGartley)

||

(retAC>=0.500*min_DeltaGartley && retAC=2.000*min_DeltaGartley && retBD<=2.000*max_DeltaGartley)

||

(retAC>=0,618*min_DeltaGartley && retAC=1,618*min_DeltaGartley && retBD<=1,618*max_DeltaGartley)

||

(retAC>=0,707*min_DeltaGartley && retAC=1,414*min_DeltaGartley && retBD<=1,414*max_DeltaGartley)

||

(retAC>=0,786*min_DeltaGartley && retAC=1,270*min_DeltaGartley && retBD<=1,270*max_DeltaGartley)

)

{

if ( (CD>AB*min_DeltaGartley && CD zz[aXABCD] && zz[aXABCD[A]] > zz[aXABCD[C]] && zz[aXABCD[C]] > zz[aXABCD])

||

(CD>AB*min_DeltaGartley && CD<AB*max_DeltaGartley && zz[aXABCD[A]] < zz[aXABCD] && zz[aXABCD[A]] < zz[aXABCD[C]] && zz[aXABCD[C]] < zz[aXABCD])

)

{

vNamePattern=vABCD; // AB-CD

}

}

senão

{

para (int iABCD=0;iABCD<_ABCDsize;iABCD++)

{

if ( (CD>_ABCDtype*AB*min_DeltaGartley && CD zz[aXABCD] && zz[aXABCD[A]] > zz[aXABCD[C]] && zz[aXABCD[C]] > zz[aXABCD])

||

(CD>_ABCDtype*AB*min_DeltaGartley && CD<_ABCDtype*AB*max_DeltaGartley && zz[aXABCD[A]] < zz[aXABCD] && zz[aXABCD[A]] < zz[aXABCD[C]] && zz[aXABCD[C]] < zz[aXABCD[C]] < zz[aXABCD])

)

{

vNamePattern=_ABCDtypetxt+"*AB=CD";

intervalo;

}

}

}

 
grandaevus:
Poruchik , eu sei o que é "ExtDeltaGartley=0,09". Tanto quanto eu sei, este parâmetro controla o desvio máximo das fibras ideais.

Na zup130 há também ExtDeltaStrongGartley=0,07.

Qual é a diferença deste parâmetro em relação ao ExtDeltaGartley?

poruckic, eu sei, já perguntei antes, mas para esclarecer o assunto, deixe-me perguntar-lhe mais uma vez.

O que eu entendi é,

ExtDeltaGartley=0,09; verifica o comprimento das pernas.

Em AB=CD, o comprimento da perna AB deve ser igual ao comprimento da perna do CD

Se quisermos verificar se o comprimento das pernas está dentro dos limites, usamos o parâmetro ExtDeltaGartley

Entretanto, ExtDeltaStrongGartley verifica os rácios de Fibonacci de retração.

Por exemplo, se o retracement AC do AB for 0,3820 , o retracement BD da BC deve ser de 2,240.

Aqui ExtDeltaStrongGartley verifica as taxas de fibras dentro de limites e não ExtDeltaGartley.

Eu estou certo?

 

Eu acrescento .886-1.13

.382-2.618 (não 2.24)

Arquivos anexados:
 

ExtDeltaStrongGartley - para padrões fortes (padrões exatos), ele=0,07 (7%)

varStrongPatterns - opções de algoritmo de busca de padrões exatos |

// | = 0 busca de padrões exatos de cinco pontos no algoritmo, |

// | existente até 122 versões, inclusive. O padrão foi considerado |

// | encontrado se a retransmissão de XD-XB-AC-BD chegou às fronteiras |

// | admissão. |

// | |

// | = 1 pela busca de padrões nos limites da admissão têm de |

// | para obter apenas a retransmissão XB-AC-BD. |

// | Retorno de XD neste caso é considerado spravochno, |

// | participa apenas para o cálculo da fronteira de desenvolvimento de um ponto do padrão D

 
poruchik:
ExtDeltaStrongGartley - para padrões fortes (padrões exatos), ele=0,07 (7%)

varStrongPatterns - opções de algoritmo de busca de padrões exatos |

// | = 0 busca de padrões exatos de cinco pontos no algoritmo, |

// | existente até 122 versões, inclusive. O padrão foi considerado |

// | encontrado se a retransmissão de XD-XB-AC-BD chegou às fronteiras |

// | admissão. |

// | |

// | = 1 pela busca de padrões nos limites da admissão têm de |

// | para obter apenas a retransmissão XB-AC-BD. |

// | Retorno de XD neste caso é considerado spravochno, |

// | participa apenas para o cálculo da fronteira de desenvolvimento de um ponto do padrão D

Então ExtDeltaStrongGartley é para padrões de 5 pontos como Bat, Gartley, ButterFly & Crab.

e ExtDeltaGartley é para outros (AB=CD , Alternate AB=CD, etc)

Certo?