Nous souhaitons attirer l'attention des contributeurs de nos forums que la législation française requiert que vous indiquiez si vous avez une position ouverte dans un instrument sur lequel vous émettez une opinion. Veuillez respecter cette recommandation faite par l’AMF (Autorité des Marchés Financiers) . Pour plus d'information : lire ce PDF.
Ta règle statistique est bien utile pour prolonger l'étude que j'avais postée sur la recherche de l'anticipation des croisements éventuels de 2 moyennes mobiles arithmétiques.
Je rappelle qu'il est possible d'utiliser la même démarche avec des moyennes exponentielles ou encore des DEMA. Les formules à employer sont sur le forum.
Merci pour ta contribution.
Bonsoir Xavier,
Normalement, comme l'indique la doc de Mlog, une règle statistique s'applique au jour de l'historique indiqué dans la case "date" située en haut de la fenêtre "Statistiques". Il faut évidemment que les actions du groupe sur lequel on souhaite appliquer la statistique soient définies ce jour là (çà ne marche pas le samedi, ni le dimanche...).
D'autre part, il n'est pas interdit d'utiliser les valeurs de ces actions sur des périodes antérieures dans les calculs et comparaisons qu'effectue le programme statistique, autrement dit il est possible d'y utiliser des variables historisées.
Afin de contourner la limitation due au jour unique où la stat s'applique, on peut inclure une boucle POUR qui balaiera le nombre de périodes antérieures que l'on souhaite et ainsi de pouvoir connaître les autres périodes où la stat s'appliquait, nous l'avons déjà fait ici même.
Peut-être pourrais-tu nous faire part plus précisément des problèmes que tu rencontres?
Ceci dit Xavier, le terme de "génie" que tu emploies me paraît être largement disproportionné pour qualifier les nombreux intervenants de cette file.
Restons modestes...<img src='http://www.pro-at.com/style/images/icones/icon_smile_blush.gif' border='0' alt='' title='' align='middle' />...
bonjour smallcaps90
quand je dis "génie" il faut bien sûr relativiser,la référence en la matière étant mon(très faible) niveau en programmation,un bambin de 3 ans jouant avec la télécommande du téléviseur familial fait déjà figure de "cador" comparé à moi...........<img src='http://www.pro-at.com/style/images/icones/icon_smile_tongue.gif' border='0' alt='' title='' align='middle' />
Plus sérieusement pour ce qui est de mon problème je vais essayer d'être plus clair;j'ai défini des indicateurs perso fonctionnant avec des variables historisées dans leur calcul(du genre oscillateur indic(0)/indic(N)) et qui fonctionnent très bien sur mes graphiques.Quand je crée une règle statistique en incluant leur script dans la règle,quand je lance un contrôle le soft répond qu'il n'y a pas d'erreur,puis si je lance l'éxecution le soft ne détecte aucune valeur remplissant les conditions alors que graphiquement certaines valeurs remplissent les conditions.
Puis si je retire de la règle statistique mes scripts "historisés" en ne laissant que les scripts portant sur le jour de la détection tout se passe bien.
Alors comment faire pour qu'un indic utilisant des variables historisées dans son script puisse être utilisé??
xavier
J'avais bien compris ton problème. Mais as-tu vraiment besoin d'inclure la totalité de ta règle indicateur qui fonctionne bien dans ta règle statistique?
Il suffit pour faire le scan d'un groupe de faire référence dans la stat concernée aux variables utiles (historisées ou non) sous la forme classique : <b>NOM INDICATEUR. NOM VARIABLE </b>, associées vraisemblement à des tests de validation de conditions d'achat ou de vente ou de simple sélection.
Tiens je te propose de regarder cet exemple qui me semble plus simple, même pour un béotien en informatique, que la manipulation de la télécommande de ton téléviseur familial (<img src='http://www.pro-at.com/style/images/icones/icon_smile_wink.gif' border='0' alt='' title='' align='middle' />....
Il s'agit de la stat d'achat/vente sur le CCI qui utilise la règle indic RCCI livrée par Mlog.
Une règle indicateur de nom RCCI calcule pour chaque chaque période le CCI (nommé aussi RCCI ici) .
La règle stat "Stat RCCI" utilise cette variable unique RCCI comme suit :
----------------------------------------------
//Statistique d'achat/vente sur le CCI
//On utilise la règle RCCI, pas l'indicateur CCI de GrapheAT
//
Si CROISE(RCCI.RCCI,-100)<0 Alors SelectionVente
----------------------------------------------
On ne fait qu'afficher la valeur précédente (donc historisée)du CCI en Colonne1 sous la forme <b>RCCI.RCCI(1)</b>, c'est à dire : NOM INDICATEUR. NOM VARIABLE.
Puis en Colonne2, on affiche la valeur actuelle <b>RCCI.RCCI</b>.
Ensuite deux tests de croisements avec les lignes horizontales 100 et -100 de la valeur actuelle permettent de sélectionner, éventuellement, l'action scannée à l'achat ou à la vente.
On aurait très bien pu aussi, si cela avait été nécessaire, faire des calculs incluant valeur actuelle et valeur précédente...
Je suppose que le pb que tu rencontres peut venir du fait que tu n'utilises peut-être pas la bonne notation pour récupérer tes variables dans la stat...NOM INDICATEUR.NOM VARIABLE...
Cordialement.
smallcaps90,
mon problème vient quand sur des critères déjà existants et opérationnels dans la règle je veux ajouter un test sur le bandwidth calculé ainsi:
<font color="blue">bandwidth(0)=((uboll-lboll)/mboll)*100</font id="blue">
<font color="blue">test(0)=bandwidth(0)/bandwidth(10)</font id="blue">
et que j'inclue un test du style
<font color="blue">SI test(0)<test(1) ALORS SELECTIONACHAT</font id="blue">
si tu peux me dire comment faire pour que ce put.. de test apparemment simple marche dans la règle statistique je t'en serais reconnaissant.
xavier
SI TEST(0)<TEST(1) ALORS ACHAT=1
---------------------
pour visualiser les variables TEST et ACHAT.
<center><img src='http://images.pro-at.com/200509/b/propri%e9t%e9s_test.gif' alt='' /></center>
Voici ce que cela donnait hier avec Schneider :
<center><img src='http://images.pro-at.com/200509/b/schneider.gif' alt='' /></center>
J'ai créé une stat qui reprend la variable TEST dans la comparaison que tu fais et qui scanne le CAC 40 :
--------------------
//Stat de test pour Xavier
//le 09/09/2005
//
SI <b>TEST_XAVIER.TEST(0)<TEST_XAVIER.TEST(1)</b>
ALORS
SELECTIONACHAT
FINSI
--------------------
<center><img src='http://images.pro-at.com/200509/b/prop_stat_test.gif' alt='' /></center>
Et voici ce que cela donnait hier avec le CAC40 :
Groupe : cac40 Date : 08/09/2005
Sélection des actions dont TEST(0)<TEST(1)
ACHAT Accor
ACHAT AGF
ACHAT Air Liquide
ACHAT Alcatel
ACHAT Arcelor
ACHAT AXA
ACHAT Bnp Paribas
ACHAT Carrefour
ACHAT Casino Guichard
ACHAT Credit agricole
ACHAT Dexia
ACHAT France Telecom
ACHAT Lagardere
ACHAT Michelin
ACHAT Peugeot
ACHAT Pinault Printemps Redoute
ACHAT Publicis Group
ACHAT Renault
ACHAT Saint Gobain
ACHAT Schneider
ACHAT Societe Generale
ACHAT Suez
ACHAT TF1
ACHAT Thomson
ACHAT Vivendi universal
Comme tu le vois j'ai récupéré dans la règle stat la variable TEST calculée par la règle indic sous la forme :
<b>TEST_XAVIER.TEST(0)</b> ou encore <b>TEST_XAVIER.TEST(1).</b>
Elle est bien historisée...
smallcaps90,
une fois de plus tu m'as "ébouriffé".........,et de plus ton explication semble claire,même à moi........ la télécommande de la télé familiale n'a plus qu'à bien se tenir <img src='http://www.pro-at.com/style/images/icones/icon_smile_evil.gif' border='0' alt='' title='' align='middle' />
Je te remercie et il me tarde de rentrer ce soir à la maison pour récupérer ton script et le faire tourner sur mon soft.
cordialement
xavier
Allons allons Xavier...il n'y a pas de vent aujourd'hui...donc pas de quoi se faire ébouriffer pour si peu! Laisse donc la télécommande de ta télé à ton gamin...nos gosses sont bien plus doués que nous dans ce domaine là!...
Une dernière chose, sérieuse : vérifie que la date située en haut de la fenêtre dans laquelle tu lances l'exécution de la stat correspond bien à des cotations qui existent dans ta base de données.
Bonne fin de semaine.
Comme promis l'autre jour, je poste les programmes indicateurs de recherche des divergences positives et négatives entre les cours et le Répulse d'Anaphrais qui t'intéressent. J'ai repris la même approche que pour la détermination des divergences cours/MACD, RSI, STOCH postée plus haut dans cette file.
Les stats correspondantes viendront un peu plus tard...
<b>DIVERGENCES POSITIVES :</b>
Il faut respecter la structure suivante pour cela fonctionne sans pb :
<center><img src='http://images.pro-at.com/200509/b/structure_pos.gif' alt='' /></center>
Programme de recherche :
------------------------------------
<font size="1">//DIV_POS_REPULSE
//
//RECHERCHER LA DIVERGENCE POSITIVE EVENTUELLE
//LA PLUS RECENTE ENTRE LES COURS ET LE REPULSE
//DANS LES LIMITES DEFINIES PAR P1, P2, P3, P4 et P5
//V 1.0 du 07/09/2005
//
//----------------------------------------------
//DEFINITION DES ROLES DES PARAMETRES P1 à P5 :
//
//LA DIVERGENCE POTENTIELLE EVENTUELLE DEVRA
//SE TROUVER P4 PERIODES AU MOINS AVANT LA FINHISTO.
//
//LE 1ER CREUX SUR LE REPULSE DEVRA SE TROUVER
//DANS LES P1 PERIODES PRECEDANT FINHISTO-P4.
//
//LE 2EME CREUX SUR LE REPULSE DEVRA SE TROUVER
//DANS LES P2 PERIODES PRECEDANT LE 1ER.
//
//CHAQUE CREUX SUR LES COURS POURRA SE TROUVER
//DANS LES P3 PERIODES PRECEDANT LES SOMMETS
//CORRESPONDANTS SUR LE REPULSE.
//
//P5=0 ACCEPTE LES DIVERGENCES DONT LES DROITES
//PRESENTENT DES INTERSECTIONS AVEC LES COURS
//ET/OU LE REPULSE.
//P5=1 NE LES ACCEPTE PAS.
//----------------------------------------------
SI RANGHISTO=FINHISTO-P4 //On explore jusqu'à P4 périodes avant la FINHISTO
ALORS
//Chercher un 1er creux (CI1) et sa date (DATE_CI1) sur l'indicateur
//
I=0
CI1=MINI
TANTQUE I<=P1 FAIRE
SI INDIC(I+1)<0
ALORS
SI INDIC(I+2)>INDIC(I+1) ET INDIC(I+1)<INDIC(I)
ALORS
SI INDIC(I+1)<=CI1
ALORS
CI1=INDIC(I+1)
DATE_CI1=FINHISTO-P4-(I+1)
D1=I+1
FINSI
FINSI
FINSI
I=I+1
FINTANTQUE
SI D1=0
ALORS
AFFICHER "=========PAS DE 1ER CREUX RECENT SUR LE REPULSE========"
AFFICHER "================MODIFIEZ P1 ET/OU P4 =================="
STOP
FINSI
//Chercher un 1er creux (CC1) et sa date (DATE_CC1)
//sur les cours avec une tolérance de P3 périodes avant
//le 1er creux trouvé sur l'indicateur
//
CC1=BAS(FINHISTO-P4-DATE_CI1)
DATE_CC1=DATE_CI1
K=FINHISTO-P4-DATE_CI1+1
TANTQUE K<=FINHISTO-P4-DATE_CI1+P3 FAIRE
SI BAS(K)<=CC1
ALORS
CC1=BAS(K)
DATE_CC1=FINHISTO-K-P4
FINSI
K=K+1
FINTANTQUE
//Chercher un 2ème creux (CI2) plus ancien
//et sa date (DATE_CI2) sur l'indicateur
//
J=D1+1
CI2=CI1
TANTQUE J<=P2+D1 FAIRE
SI INDIC(J+2)>INDIC(J+1) ET INDIC(J+1)<INDIC(J)
ALORS
SI INDIC(J+1)<=CI2
ALORS
CI2=INDIC(J+1)
DATE_CI2=FINHISTO-P4-(J+1)
D2=1
FINSI
FINSI
SI D2=1 //CI2 est un creux possible sur l'indicateur
ALORS
SI P5=1 //On veut que la droite CI1--CI2 reste sous l'indicateur
ALORS
PENTE_I=(CI1-CI2)/(DATE_CI1-DATE_CI2)
POUR (FINHISTO-P4-DATE_CI2+1) COURS
POINT_I(0)= PENTE_I*(RANGPOUR-1)+CI2
SI POINT_I>INDIC
ALORS
N=1
BREAK
FINSI
SI RANGPOUR>(DATE_CI1-DATE_CI2) ALORS BREAK
FINPOUR
FINSI
SI N=0 //Droite de divergence CI1--CI2 correcte
ALORS
//Chercher le 2ème creux (CC2) et sa date (DATE_CC2)
//sur les cours avec une tolérance de P3 périodes
//avant le 2ème creux sur l'indicateur
//
CC2=BAS(FINHISTO-P4-DATE_CI2)
DATE_CC2=DATE_CI2
K=FINHISTO-P4-DATE_CI2+1
TANTQUE K<FINHISTO-P4-DATE_CI2+P3 FAIRE
SI BAS(K)<=CC2
ALORS
CC2=BAS(K)
DATE_CC2=FINHISTO-K-P4
FINSI
K=K+1
FINTANTQUE
SI CC2>=CC1 //CC2 est un creux possible sur les cours
ALORS
SI P5=1 //On veut que la droite CC1--CC2 reste sous les cours
ALORS
PENTE_C=(CC1-CC2)/(DATE_CC1-DATE_CC2)
POUR (FINHISTO-P4-DATE_CC2+1) COURS
POINT_C(0)=PENTE_C*(RANGPOUR-1)+CC2
SI POINT_C>BAS
ALORS
M=1
BREAK
FINSI
SI RANGPOUR>(DATE_CC1-DATE_CC2) ALORS BREAK
FINPOUR
FINSI
SI M=0 //Droite de divergence CC1--CC2 correcte
ALORS
J=P2+D1+1
SINON
D2=0
FINSI
SINON
D2=0
FINSI
SINON
D2=0
FINSI
FINSI
N=0
M=0
J=J+1
FINTANTQUE
SI D1<>0 ET D2=0 OU CC2=0
ALORS
AFFICHER "============PAS DE DIVERGENCE POTENTIELLE============="
AFFICHER "======AVEC LES VALEURS ACTUELLES DES PARAMETRES======="
AFFICHER "=MAIS IL Y A UN 1ER CREUX SUR LE REPULSE ET LES COURS="
AFFICHER "==============MODIFIEZ EVENTUELLEMENT P2=============="
STOP
FINSI
//Déterminer les points des segments de la divergence potentielle trouvée
//s'ils peuvent être tracés sur l'indicateur et sur les cours
//
SI DATE_CC1-DATE_CC2<2 //La valeur 2 peut être modifiée
ALORS
AFFICHER "=============DIVERGENCE POTENTIELLE============"
AFFICHER "==========TROP PETITE POUR ETRE TRACEE========="
AFFICHER "===========MODIFIEZ EVENTUELLEMENT P4=========="
SINON
PENTE_I=(CI1-CI2)/(DATE_CI1-DATE_CI2)
POUR (FINHISTO-P4-DATE_CI2+1) COURS
SEG_P_I(0)=PENTE_I*(RANGPOUR-1)+CI2
SI RANGPOUR>(DATE_CI1-DATE_CI2) ALORS BREAK
FINPOUR
PENTE_C=(CC1-CC2)/(DATE_CC1-DATE_CC2)
POUR (FINHISTO-P4-DATE_CC2+1) COURS
SEG_P_C(0)=PENTE_C*(RANGPOUR-1)+CC2
SI RANGPOUR>(DATE_CC1-DATE_CC2) ALORS BREAK
FINPOUR
FINSI
//RECHERCHER LA DIVERGENCE NEGATIVE EVENTUELLE
//LA PLUS RECENTE ENTRE LES COURS ET LE REPULSE
//DANS LES LIMITES DEFINIES PAR P1, P2, P3 et P4
//V3.2 du 08/09/2004
//
//----------------------------------------------
//PARAMETRES P1 à P5 :
//
//LA DIVERGENCE POTENTIELLE EVENTUELLE DEVRA
//SE TROUVER P4 PERIODES AU MOINS AVANT LA FINHISTO.
//
//LE 1ER SOMMET SUR LE REPULSE DEVRA SE TROUVER
//DANS LES P1 PERIODES PRECEDANT FINHISTO-P4.
//
//LE 2EME SOMMET SUR LE REPULSE DEVRA SE TROUVER
//DANS LES P2 PERIODES PRECEDANT LE 1ER.
//
//CHAQUE SOMMET SUR LES COURS POURRA SE TROUVER
//DANS LES P3 PERIODES PRECEDANT LES SOMMETS
//CORRESPONDANTS SUR LE REPULSE.
//
//P5=0 ACCEPTE LES DIVERGENCES DONT LES DROITES
//PRESENTENT DES INTERSECTIONS AVEC LES COURS
//ET/OU LE REPULSE.
//P5=1 NE LES ACCEPTE PAS.
//----------------------------------------------
SI RANGHISTO=FINHISTO-P4 //On explore jusqu'à P4 périodes avant la FINHISTO
ALORS
//Chercher un 1er sommet (SI1) et sa date (DATE_SI1) sur l'indicateur
//
I=0
SI1=MAXI
TANTQUE I<=P1 FAIRE
SI INDIC(I+1)>0
ALORS
SI INDIC(I+2)<INDIC(I+1) ET INDIC(I+1)>INDIC(I)
ALORS
SI INDIC(I+1)>=SI1
ALORS
SI1=INDIC(I+1)
DATE_SI1=FINHISTO-P4-(I+1)
D1=I+1
FINSI
FINSI
FINSI
I=I+1
FINTANTQUE
SI D1=0
ALORS
AFFICHER "=======PAS DE 1ER SOMMET RECENT SUR LE REPULSE======="
AFFICHER "===============MODIFIEZ P1 ET/OU P4 ================="
STOP
FINSI
//Chercher le 1er sommet (SC1) et sa date (DATE_SC1)
//sur les cours avec une tolérance de P3 périodes
//avant le 1er sommet sur l'indicateur
//
SC1=HAUT(FINHISTO-P4-DATE_SI1)
DATE_SC1=DATE_SI1
K=FINHISTO-P4-DATE_SI1+1
TANTQUE K<=FINHISTO-P4-DATE_SI1+P3 FAIRE
SI HAUT(K)>=SC1
ALORS
SC1=HAUT(K)
DATE_SC1=FINHISTO-K-P4
FINSI
K=K+1
FINTANTQUE
//Chercher un 2ème sommet plus ancien (SI2)
//et sa date (DATE_SI2) sur l'indicateur
//
J=D1+1
SI2=SI1
TANTQUE J<=P2+D1 FAIRE
SI INDIC(J+2)<INDIC(J+1) ET INDIC(J+1)>INDIC(J)
ALORS
SI INDIC(J+1)>=SI2
ALORS
SI2=INDIC(J+1)
DATE_SI2=FINHISTO-P4-(J+1)
D2=1
FINSI
FINSI
SI D2=1 //SI2 est un sommet possible sur l'indicateur
ALORS
SI P5=1 //La droite SI1--SI2 doit être au-dessus de l'indicateur
ALORS
PENTE_I=(SI1-SI2)/(DATE_SI1-DATE_SI2)
POUR (FINHISTO-P4-DATE_SI2+1) COURS
POINT_I(0)= PENTE_I*(RANGPOUR-1)+SI2
SI POINT_I<INDIC
ALORS
N=1
BREAK
FINSI
SI RANGPOUR>(DATE_SI1-DATE_SI2) ALORS BREAK
FINPOUR
FINSI
SI N=0 //Droite de divergence SI1--SI2 correcte
ALORS
//Chercher le 2ème sommet (SC2) et sa date (DATE_SC2)
//sur les cours avec une tolérance de P3 périodes
//avant le 2ème sommet sur l'indicateur
//
SC2=HAUT(FINHISTO-P4-DATE_SI2)
DATE_SC2=DATE_SI2
K=FINHISTO-P4-DATE_SI2+1
TANTQUE K<=FINHISTO-P4-DATE_SI2+P3 FAIRE
SI HAUT(K)>=SC2
ALORS
SC2=HAUT(K)
DATE_SC2=FINHISTO-K-P4
FINSI
K=K+1
FINTANTQUE
SI SC2<=SC1 //SC2 est un sommet possible sur les cours
ALORS
SI P5=1 //La droite SC1--SC2 doit être au-dessus des cours
ALORS
PENTE_C=(SC1-SC2)/(DATE_SC1-DATE_SC2)
POUR (FINHISTO-P4-DATE_SC2+1) COURS
POINT_C(0) =PENTE_C*(RANGPOUR-1)+SC2
SI POINT_C<HAUT
ALORS
M=1
BREAK
FINSI
SI RANGPOUR>(DATE_SC1-DATE_SC2) ALORS BREAK
FINPOUR
FINSI
SI M=0 //Droite de divergence SC1--SC2 correcte
ALORS
J=P2+D1+1
SINON
D2=0
FINSI
SINON
D2=0
FINSI
SINON
D2=0
FINSI
FINSI
N=0
M=0
J=J+1
FINTANTQUE
SI D1<>0 ET D2=0 OU SC2=0
ALORS
AFFICHER "============PAS DE DIVERGENCE POTENTIELLE============="
AFFICHER "======AVEC LES VALEURS ACTUELLES DES PARAMETRES======="
AFFICHER "=MAIS IL Y A UN 1ER SOMMET SUR LE REPULSE ET LES COURS="
AFFICHER "==============MODIFIEZ EVENTUELLEMENT P2=============="
STOP
FINSI
//Déterminer les points de la divergence potentielle trouvée
//s'ils peuvent être tracés sur l'indicateur et sur les cours
//
SI DATE_SC1-DATE_SC2=1 //La valeur 2 peut-être modifiée
ALORS
AFFICHER "=============DIVERGENCE POTENTIELLE============"
AFFICHER "==========TROP PETITE POUR ETRE TRACEE========="
AFFICHER "===========MODIFIEZ EVENTUELLEMENT P4=========="
SINON
PENTE_I=(SI1-SI2)/(DATE_SI1-DATE_SI2)
POUR (FINHISTO-P4-DATE_SI2+1) COURS
SEG_N_I(0)=PENTE_I*(RANGPOUR-1)+SI2
SI RANGPOUR>(DATE_SI1-DATE_SI2) ALORS BREAK
FINPOUR
PENTE_C=(SC1-SC2)/(DATE_SC1-DATE_SC2)
POUR (FINHISTO-P4-DATE_SC2+1) COURS
SEG_N_C(0)=PENTE_C*(RANGPOUR-1)+SC2
SI RANGPOUR>(DATE_SC1-DATE_SC2) ALORS BREAK
FINPOUR
FINSI
Un exemple :
<center><img src='http://images.pro-at.com/200509/b/dexia_neg.gif' alt='' /></center>
Il est également indispensable que l'indicateur REPULSE_NJ soit installé dans une règle de nom REPULSE_NJ pour que les programmes de recherche ci-dessus puissent récupérer les valeurs de l'indicateur.
Je suis conscient du fait que la technique utilisée dans ces programmes n'est pas "idéale" puisque la recherche dépend des valeurs choisies pour les paramètres P1 à P5. Ces derniers ne sont pas toujours très évidents à choisir. Si vous avez d'autres idées, je suis preneur...
bonjour smallcaps90,
Merci à toi et aux autres programmeurs d'indicateurs de Graph AT.
Concernant le programme relatif aux divergences sur le Repulse pourrais tu m'indiquer ou à été défini le Repulse_NJ .
Ok. Tu vois, on parvient toujours à trouver une solution qui marche...<img src='http://www.pro-at.com/style/images/icones/icon_smile_wink.gif' border='0' alt='' title='' align='middle' />...
Cordialement.
______________________
Bonjour Edge,
Bienvenue au club...
Effectivement j'ai oublié cela,
Programme du REPULSE_NJ (signifie Répulse N Jours) :
------------------------------------------
<font size="1">//REPULSE d'Anaphraïs à N jours
//le 06/09/2005
//
C'est ce réglage (à N=3 jours) qui est utilisé dans les exemples de divergences postés ci-dessus et dans lesquels le Répulse est récupéré sans sa moyenne M_REPULSE_NJ.
slt a tous
pour completer la panoplie d'indicateur, je vous propose un programme sur les stops. il représente des developping stop (introduit par cynthia kase) qui sont basé sur la volatilité (1 ATR, 2 ATR + 10%, 3 ATR+10%)
je ne vais pas développer toute la téorie en qq lignes, mais au moins ils ont l'avantage de permettre de suivre une tendance sereinement.
Le programme :
HT(0)=MAX(HAUT,2)
BS(0)=MIN(BAS,2)
TR(0) = MAXVAL( MAXVAL(HT-BS,ABSOLU(HT-Cloture(2))), ABSOLU(BS-Cloture(2)) )
ATR(0)=MOYENNE(TR,P1)
SDEV(0)=ECARTYPE(TR,P1)
DEV1(0)=CLOTURE-ATR
DEV2(0)=CLOTURE-ATR-SDEV
DEV3(0)=CLOTURE-ATR-2.2*SDEV
DEV4(0)=CLOTURE-ATR-3.6*SDEV
SI DEV1<DEV1(1) et cloture>DEV4(1) alors DEV1=DEV1(1)
SI DEV2<DEV2(1) et cloture>DEV4(1) alors DEV2=DEV2(1)
SI DEV3<DEV3(1) et cloture>DEV4(1) alors DEV3=DEV3(1)
SI DEV4<DEV4(1) et cloture>DEV4(1) alors DEV4=DEV4(1)
DEV5(0)=CLOTURE+ATR
DEV6(0)=CLOTURE+ATR+SDEV
DEV7(0)=CLOTURE+ATR+2.2*SDEV
DEV8(0)=CLOTURE+ATR+3.6*SDEV
SI DEV5>DEV5(1) et cloture<DEV8(1) alors DEV5=DEV5(1)
SI DEV6>DEV6(1) et cloture<DEV8(1) alors DEV6=DEV6(1)
SI DEV7>DEV7(1) et cloture<DEV8(1) alors DEV7=DEV7(1)
SI DEV8>DEV8(1) et cloture<DEV8(1) alors DEV8=DEV8(1)
//SI CLOTURE>=DEV4(1) ALORS
//ALERT=DEV1
//STD1=DEV2
//STD2=DEV3
//STD3=DEV4
//SINON
//ALERT=DEV5
//STD1=DEV6
//STD2=DEV7
//STD3=DEV8
//FINSI
P1 représente le nombre de jours pour calculer l' aTR
pour les courbes le paramétrage est le suivant :<center><a href='http://images.pro-at.com/200509/b/devstop.jpg' target='_blank' style='display:block; width:600px; border:2px dashed #888; padding:10px'><img src="http://images.pro-at.com/200509/b/devstop.jpg" alt='' width='600' height='417' /><em style='display:block; text-align: right'>Cliquez pour agrandir</em></a></center>
Merci Smallcaps pour les divergences de REPULSE. Je vais tester différents parametres pour trouver celui qui correspond le mieux à mon style de trading.
"Ta règle statistique est bien utile pour prolonger l'étude que j'avais postée sur la recherche de l'anticipation des croisements éventuels de 2 moyennes mobiles arithmétiques.
Je rappelle qu'il est possible d'utiliser la même démarche avec des moyennes exponentielles ou encore des DEMA. Les formules à employer sont sur le forum."
Un petit programme suite au lecture du livre de Robert Edwards et John Magee
Bien sur on peut mettre RSI à d'autres valeurs (ex : 30)
j'ai mis 15 à nb_périodes pour qu'il balaye la base
je suis obligé de faire deux fois POUR NB_PERIODES COURS pour qu'il m'efface pas les variables.
Pourquoi divisez en deux (ex : croisement rsi le 29/09/2004 et cours en dessous de la bande le 23/09/2004 , il m'efface le var_boll s' il y a une seul boucle POUR NB_PERIODES COURS).
Peut-on faire autrement ?
règle statistique
colonne1 = texte
// RSI < 50 ET CROISEMENT AVEC SA MM et CLOTURE AU DESSOUS DE LA BANDE BOLL (achat à vérifier avec d'autres paramètres bien sur)
VAR_SELECT=0
NB_PERIODES=15
POUR NB_PERIODES COURS
// rsi en dessous de 50 et croisement Rsi avec sa Moyenne
SI RSI<50 ALORS
VAR_RSI = 1
SI CROISE(RSI,MRSI)>0 ALORS
VAR_RSI = VAR_RSI + 1
FINSI
FINSI
FINPOUR
// cherche si la cloture est au dessous de la bande bollinger
NB_PERIODES=15
POUR NB_PERIODES COURS
SI CLOTURE<LBOLL ALORS
VAR_BOLL= 1
FINSI
FINPOUR
SI VAR_RSI = 2 ET VAR_BOLL = 1 ALORS
COLONNE1 = "RSI - LBOLL " & DATEHISTO$
VAR_SELECT=1
FINSI
Commentaire