Commercio armonico - pagina 308

 

Grazie poruchik. Ecco il codice da modificare. Proverò a 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]]);

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

{

vNamePattern=vABCD; // AB-CD

}

else

{

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

{

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

{

vNamePattern=_ABCDtypetxt+"*AB=CD";

break;

}

}

}

 

Fatto! Ecco il codice modificato. Ora controlla AC < AB * Fib(1.0) per i pattern 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";

pausa;

}

}

}

 

grazie fratello

Ho mod 133 con il tuo codice

stesso bug?

File:
 
poruchik:
grazie fratello

Io mod 133 con il tuo codice

stesso bug?

Sei il benvenuto Poruchik,

e per Real AB=CD , i rapporti dovrebbero essere

AB=CD Modello

[.382/2.240]

[.500/2.000]

[.618/1.618]

[.707/1.414]

[.786/1.270]

[AB=CD]

File:
image038.jpg  45 kb
 

Codice modificato per il controllo di AB=CD reale

Il nuovo codice ora controlla i rapporti retAC , retBD

Con il nuovo codice, l'indicatore trova meno pattern AB=CD ma sarà molto accurato

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

se(

(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

}

}

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

pausa;

}

}

}

 
grandaevus:
Codice modificato per controllare AB=CD reale

Il nuovo codice ora controlla i rapporti retAC , retBD

Con il nuovo codice, l'indicatore trova meno pattern AB=CD ma sarà molto preciso

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

se(

(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

}

}

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

pausa;

}

}

}

Ho fatto alcune revisioni(rimosso le parentesi non necessarie).

Codice finale

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

se(

(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

}

}

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

pausa;

}

}

}

 
grandaevus:
poruchik , so cos'è "ExtDeltaGartley=0.09". Per quanto ne so, questo parametro controlla la deviazione massima dai fibos ideali.

In zup130 c'è anche ExtDeltaStrongGartley=0,07.

Qual è la differenza di questo parametro da ExtDeltaGartley?

poruckic, lo so, l'ho già chiesto prima ma per chiarire l'argomento te lo chiedo ancora una volta.

Quello che ho capito è,

ExtDeltaGartley=0.09 ; controlla le lunghezze delle gambe.

Voglio dire che nello schema AB=CD la lunghezza della gamba AB dovrebbe essere uguale alla lunghezza della gamba CD

Se vogliamo controllare se le lunghezze delle gambe sono nei limiti, usiamo il parametro ExtDeltaGartley

Tuttavia ExtDeltaStrongGartley controlla i rapporti di Fibonacci del ritracciamento.

Ad esempio, se il ritracciamento AC di AB è 0,3820, il ritracciamento fib BD di BC dovrebbe essere 2,240.

ExtDeltaStrongGartley qui controlla i rapporti fib entro i limiti non ExtDeltaGartley.

Ho ragione?

 

Aggiungo .886-1.13

.382-2.618 (non 2.24)

 

ExtDeltaStrongGartley - per modelli forti (modelli esatti), it=0.07 (7%)

varStrongPatterns - opzioni dell'algoritmo di ricerca dei modelli esatti |

// | = 0 ricerca di modelli esatti a cinque punti nell'algoritmo, |

| | esistente fino a 122 versioni comprese. Il pattern è stato considerato | //

// | trovato se il ritorno di XD-XB-AC-BD è arrivato ai confini | //

// | ammissione. |

// | |

// | = 1 per ricerca di pattern nei limiti dell'ammissione devono | //

// | | per ottenere solo il ritorno di XB-AC-BD. |

// | | Ritirata di XD in questo caso è considerata spravochno, |

// | partecipa solo per il calcolo del confine di sviluppo di un punto del modello D

 
poruchik:
ExtDeltaStrongGartley - per i pattern forti (pattern esatti), è=0.07 (7%)

varStrongPatterns - opzioni dell'algoritmo di ricerca di modelli esatti |

// | = 0 ricerca di modelli esatti a cinque punti nell'algoritmo, |

| | esistente fino a 122 versioni comprese. Il pattern è stato considerato | //

// | trovato se il ritorno di XD-XB-AC-BD è arrivato ai confini | //

// | ammissione. |

// | |

// | = 1 per ricerca di pattern nei limiti dell'ammissione devono | //

// | | per ottenere solo il ritorno di XB-AC-BD. |

// | | Retresment di XD in questo caso è considerato spravochno, |

// partecipa solo per il calcolo del confine di sviluppo di un punto del modello D

Poi ExtDeltaStrongGartley è per 5 modelli di punti come Bat, Gartley, ButterFly & Crab.

e ExtDeltaGartley è per gli altri (AB=CD, Alternate AB=CD, ecc.)

Giusto?