Comercio armónico - página 308

 

Gracias poruchik. Aquí está el código que hay que modificar. Intentaré modificarlo.

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]]);

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

{

vNamePattern=vABCD; // AB-CD

}

si no

{

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

{

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

{

vNamePattern=_ABCDtypetxt+"*AB=CD";

romper;

}

}

}

 

Ya está hecho. Aquí está el código modificado. Ahora comprueba AC < AB * Fib(1.0) para los patrones AB=CD & (x) * AB=CD

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 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

}

else

{

for (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])

)

{

vNamePattern=_ABCDtypetxt+"*AB=CD";

romper;

}

}

}

 

gracias hermano

Yo mod 133 con su código

¿el mismo error?

Archivos adjuntos:
 
poruchik:
gracias hermano

Yo mod 133 con su código

¿el mismo error?

Te felicito poruchik,

y para Real AB=CD , los ratios deberían ser

Patrón AB=CD

[.382/2.240]

[.500/2.000]

[.618/1.618]

[.707/1.414]

[.786/1.270]

[AB=CD]

Archivos adjuntos:
image038.jpg  45 kb
 

Código modificado para comprobar Real AB=CD

El nuevo código ahora comprueba las relaciones retAC , retBD

Con el nuevo código, el indicador encuentra menos patrones AB=CD pero serán muy precisos

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]]);

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);

si(

(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

}

}

si no

{

for (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])

)

{

vNamePattern=_ABCDtypetxt+"*AB=CD";

romper;

}

}

}

 
grandaevus:
Código modificado para comprobar Real AB=CD

El nuevo código ahora comprueba las relaciones retAC , retBD

Con el nuevo código, el indicador encuentra menos patrones AB=CD pero serán muy precisos

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]]);

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);

si(

(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

}

}

si no

{

for (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])

)

{

vNamePattern=_ABCDtypetxt+"*AB=CD";

romper;

}

}

}

Hice algunas revisiones(eliminé los paréntesis innecesarios).

Código final

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]]);

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);

si(

(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

}

}

si no

{

for (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])

)

{

vNamePattern=_ABCDtypetxt+"*AB=CD";

romper;

}

}

}

 
grandaevus:
poruchik , sé lo que es "ExtDeltaGartley=0.09" . Por lo que sé, este parámetro controla la desviación máxima de los fibos ideales.

En zup130 también hay ExtDeltaStrongGartley=0,07.

¿Cuál es la diferencia entre este parámetro y ExtDeltaGartley?

poruckic, lo sé , ya lo he preguntado antes pero para aclarar el tema déjame preguntarte una vez más.

Lo que he entendido es

ExtDeltaGartley=0.09 ; comprueba las longitudes de los tramos.

Quiero decir que en el patrón AB=CD la longitud del cateto AB debe ser igual a la longitud del cateto CD

Si queremos comprobar si las longitudes de los catetos están dentro de los límites, utilizamos el parámetro ExtDeltaGartley

Sin embargo, ExtDeltaStrongGartley comprueba los ratios de Fibonacci de retroceso.

Por ejemplo, si el retroceso AC de AB es 0.3820, el retroceso fib BD de BC debería ser 2.240.

ExtDeltaStrongGartley aquí comprueba los ratios de fib dentro de los límites no ExtDeltaGartley.

¿Estoy en lo cierto?

 

Sumo 0,886-1,13

.382-2.618 (no 2.24)

Archivos adjuntos:
 

ExtDeltaStrongGartley - para patrones fuertes (patrones exactos), it=0.07 (7%)

varStrongPatterns - opciones del algoritmo de búsqueda de patrones exactos |

// | = 0 búsqueda de patrones exactos de cinco puntos en el algoritmo, | |.

// | existentes hasta 122 versiones inclusive. El patrón se consideraba | // | encontrado si el

// | encontrado si el retorno de XD-XB-AC-BD llegó a los bordes | // | de las fronteras.

// | admisión.

// | |

// | = 1 por la búsqueda de patrones en los límites de la admisión tienen que | // |.

// | para obtener sólo XB-AC-BD retresment. |

// | Retresment de XD en este caso se considera spravochno, | |

// | participa sólo para el cálculo de la frontera de desarrollo de un punto del patrón D

 
poruchik:
ExtDeltaStrongGartley - para patrones fuertes (patrones exactos), es=0.07 (7%)

varStrongPatterns - opciones del algoritmo de búsqueda de patrones exactos |

// | = 0 búsqueda de patrones exactos de cinco puntos en el algoritmo, | |.

// | existentes hasta 122 versiones inclusive. El patrón se consideraba | // | encontrado si el

// | encontrado si el retorno de XD-XB-AC-BD llegó a los bordes | // | de admisión.

// | admisión.

// | |

// | = 1 por la búsqueda de patrones en los límites de la admisión tienen que | // |.

// | para obtener sólo XB-AC-BD retresment. |

// | Retresment de XD en este caso se considera spravochno, |

// | participa sólo para el cálculo de la frontera de desarrollo de un punto del patrón D

Entonces ExtDeltaStrongGartley es para patrones de 5 puntos como Bat, Gartley, ButterFly y Crab.

y ExtDeltaGartley es para otros.(AB=CD , Alternate AB=CD, etc)

¿Correcto?