Buenas tardes.. alguien sabria programar un CCI en 30 peridos con cambio de color en zonas de – 100 y – 200 y viceversa e indicador de divergencia en dichas zonas de un numero determinado de barras.. no se. 20 40..60..he porbado esta estrategia en dow dax y es bastante rentable con apertura de posición por encima de la, ema 8 y cierre al llehar a niveles de – 100 y 100..tanto en cokpra, coko en venta. la idea ea elaborar una EA con esos parámetros. . alguien me puede ayudar??
Buenas tardes Osupero
Aqui tienes un codigo con la nomencladura en frances , creo que eso te va a convenir , tu cambias los parametros a tu gusto ///
Un saludo desde Cadiz
// DIV CCI/Prix
REM Cet indicateur détecte les divergences baissières et haussièresentre les prix et le CCI
REM Si une divergence baissière est détectée, il renvoie -1
REM Si aucune divergence n'est détectée, l'indicateur reste à 0
REM Si une divergence haussière est détectée, cet indicateur renvoie 1
REM Rappel : Une divergence baissière est un des signaux de vente les plus forts de l'analyse technique
REM Rappel : Une divergence haussière est un des signaux d'achat les plus forts de l'analyse technique
//**********************************************
// CALCUL DE L'INDICATEUR
//**********************************************
indicator=CCI[perCCI](TypicalPrice)
//**********************************************
//** DETECTION DES SOMMETS ET CREUX
//**********************************************
REM On détecte tout d'abord les creux en dessous du seuil bas ainsi que les sommets au dessus du seuil haut.
IF BarIndex > perCCI+1 THEN
// Pour détecter un creux, on regarde trois barres: la barre actuelle et les deux barres précédentes
// Si la valeur de l'oscillateur sur la barre précédente est plus basse que les valeurs sur les autres barres, il s'agit d'un creux
// Pour cette raison le creux est détecté avec une barre de retard
IF indicator >= indicator[1] AND indicator[1] <= indicator[2] AND indicator[1] < seuilbas THEN
output = indicator[1]
// Ici on détecte les sommets : on regarde la barre actuelle ainsi que les deux barres précédentes
// Si la valeur de l'oscillateur sur la barre précédente est plus haute que les deux autres, il s'agit d'un sommet
// On a donc là aussi une barre de retard
ELSIF indicator <= indicator[1] AND indicator[1] >= indicator[2] AND indicator[1] > seuilhaut THEN
output = indicator[1]
ELSE
output = (seuilbas+seuilhaut)/2
ENDIF
ELSE
output = undefined
ENDIF
signal = 0
IF BarIndex > (perCCI+N) THEN
//*****************************************
//** DETECTION DES DIVERGENCES HAUSSIERES
//*****************************************
IF output < seuilbas THEN
extremum2 = output // La valeur actuelle de l'indicateur correspond à un creux
extremum1 = LOWEST[N](output) // On cherche le creux le plus bas parmis les N barres précédentes
cpt = 0
indice = 0
indiceextremum1 = 0
valid = 0
coeffdirprix=0
IF extremum1 < seuilbas AND extremum1<extremum2 THEN // On s'assure que le creux le plus éloigné dans le temps est bien plus bas que le creux actuel
REM Cette boucle permet de compter le nombre de creux présents entre le creux actuel et le creux le plus bas parmis les N dernières barres
REM On récupère également les indices de ces creux
FOR i=1 TO N
IF (output[i] < extremum2) THEN
IF (output[i] > extremum1) THEN
indice = indice*100 + i
cpt = cpt +1
ELSIF output[i] = extremum1 THEN
indiceextremum1 = i
BREAK
ENDIF
ENDIF
NEXT
REM Si des creux ont été détectés entre le creux actuel et le creux le plus bas parmis les N barres précédentes, on vérifie qu'ils ne croisent pas la droite tracée entre les deux creux extrêmes
REM Si un creux dépasse, la divergence est invalidée
IF cpt <> 0 THEN
FOR i=cpt DOWNTO 1
ind = indice MOD 100
IF output[ind] < (extremum2 + ind*((extremum1-extremum2)/indiceextremum1)) THEN
valid = 1
ENDIF
indice = (indice-ind)/100
NEXT
ENDIF
REM Calcul du coefficient directeur de la droite reliant les 2 creux
coeffdircci=(extremum2-extremum1)/(indiceextremum1)
REM Calcul de l'angle de la pente de la droite reliant les 2 creux
anglecci= ROUND(ATAN(abs(extremum2-extremum1)/(indiceextremum1)))
//*********************************************
//** COMPARAISON AVEC LES PRIX
//*********************************************
monplusBas=Lowest[N](low)
FOR k=0 TO 5
IF(low[k]=monplusBas) THEN
REM Calcul du coefficient directeur de la droite reliant les 2 prix
coeffdirprix=(low[k]-low[indiceextremum1])/(indiceextremum1+1-k)
ENDIF
NEXT
filtre=close-open<0.5 //filtre les faux signaux d'achat
REM Si aucun des creux ne dépassent la droite en question, alors on valide la divergence
IF(valid=0 AND coeffdirprix<0 AND coeffdircci>0 AND anglecci>angle AND filtre) THEN
signal = 20 //1
ENDIF
ENDIF
//*****************************************
//** DETECTION DES DIVERGENCES BAISSIERES
//*****************************************
ELSIF output > seuilhaut THEN
extremum2 = output // La valeur actuelle de l'indicateur correspond à un sommet
extremum1 = HIGHEST[N](output) // On cherche le sommet le plus haut parmis les N barres précédentes
cpt = 0
indice = 0
indiceextremum1 = 0
valid = 0
coeffdirprix=0
IF extremum1 > seuilhaut AND extremum1>extremum2 THEN // On s'assure que le sommet le plus éloigné dans le temps est bien plus haut que le sommet actuel
REM Cette boucle permet de compter le nombre de sommets présents entre le sommet actuel et le sommet le plus haut parmis les N dernières barres
REM On récupère également les indices de ces sommets
FOR i=1 TO N
IF (output[i] > extremum2) THEN
IF (output[i] < extremum1) THEN
indice = indice*100 + i
cpt = cpt +1
ELSIF output[i] = extremum1 THEN
indiceextremum1 = i
BREAK
ENDIF
ENDIF
NEXT
REM Si des sommets ont été détectés entre le sommet actuel et le sommet le plus haut parmis les N barres précédentes, on vérifie qu'ils ne croisent pas la droite tracée entre les deux sommets extrêmes
REM Si un sommet dépasse, la divergence est invalidée
IF cpt <> 0 THEN
FOR i=cpt DOWNTO 1
ind = indice MOD 100
IF output[ind] > (extremum2 + ind*((extremum1-extremum2)/indiceextremum1)) THEN
valid = 1
ENDIF
indice = (indice-ind)/100
NEXT
ENDIF
REM Calcul du coefficient directeur de la droite reliant les 2 sommets
coeffdircci=(extremum2-extremum1)/(indiceextremum1)
REM Calcul de l'angle de la pente de la droite reliant les 2 sommets
anglecci = ROUND(ATAN(abs(extremum2-extremum1)/(indiceextremum1)))
//*********************************************
//** COMPARAISON AVEC LES PRIX
//*********************************************
monplusHaut=Highest[N](high)
FOR k=0 TO 5
IF(high[k]=monplusHaut) THEN
REM Calcul du coefficient directeur de la droite reliant les 2 prix
coeffdirprix=(high[k]-high[indiceextremum1])/(indiceextremum1+1-k)
ENDIF
NEXT
REM Si aucun des sommets ne dépassent la droite en question, alors on valide la divergence
IF(valid=0 AND coeffdirprix>0 AND coeffdircci<0 AND anglecci>angle) THEN
Signal = -20 //-1
ENDIF
ENDIF
ENDIF
ENDIF
RETURN signal AS "Divergence" , 0 as " zero "
// Variables :
// Nombre de périodes (N = 30)
// seuilhaut (seuilhaut = 100)
// seuilbas (seuilbas = -100)
// angle (angle = 0)
// Période du CCI (perCCI = 20)
Fabuloso supertiti… lo pruebo y comparto impresiones . perfect supertiti
Hola Supertiti.
Estoy buscando un screener para detectar divergencias del indicador “Fuerza Indice” con el precio, en diario y/o en semanal y lo más parecido que me he encontrado es este aporte tuyo, pero lo copio e intento ejecutarlo en mi PRT y no me funciona. Me devuelve pantallas con errores. ¿podrías ayudarme con esto porfa?
Muchas Gracias.