bjr, j’ai du mal à trouver la solution à mon petit problème
Dans l’instruction buy du code ci-aprés , je voudrais rajouter la condition qui ne m’autorise à acheter que si je n’ai pas plus d’un achat réalisé dans la période précédente; ici 200 séances
merci de votre aide
________________________________________
//la vente de la position est effectuée quand la baisse est sensible sur une petite periode de temps. On cherche à capter le KRACH.
//les paramétres sont choisis en observant l'Historique et notamment les krach passés
//cette stratégie ne capte pas forcément les krach larvés comme celui de 2022 du fait de la dynamique baissière de faible intensité
//je me fixe une periode suffisamment longue pour capter un peu mmieux le krach larvé
// S' APPLIQUE aux INDICES mais pas AUX ACTIONS plus VOLATILES
// utilisable pour les actions fonds de portefeuille. ACHATS de RENFORCEMENT - comme sur AIR LIQUIDE
// Conditions pour ouvrir une position acheteuse
DEFPARAM cumulateorders=true
capital =7500
rem + strategyprofit
n = (capital/close)
rem achat au croisement haussier du MACd en territoire négatif
ind1= MACD[30,31,12](close)
ind2= MACDline[30,31,12](close)
c1=ind1[1]<0
c2=ind1>0
c3= ind2<-mcdline
if (not longonmarket and ( c3 and c2 and c1 )) then
BUY n shares at MARKET
endif
// cumulate
MAXSHARES = abs(countoflongshares) <= 200
IF ( MAXSHARES and longonmarket and( c3 and c2 and c1 )) THEN
BUY n shares at MARKET
ENDIF
// Conditions pour fermer une position acheteuse
rem recherche du dernier plus haut sur X périodes
PH10 = highest[period](close)
rem test de la VL inférieure à la perte admise depui le dernier plus haut pour vendre la position
If LongOnMarket AND close<(perte*PH10) THEN
SELL AT MARKET
ENDIF
Bonjour,
quelques points à la lecture du code:
– je ne vois pas à quoi correspond -mcdline qui définit c3 et donc impacte le IF de la ligne 35 pour le BUY (variable non définie ou en code caché? ou erreur de syntaxe?)
– en ligne 44 n’est pas défini le plus haut tel qu’expliqué en ligne 43, mais la clôture la plus haute. Pour le plus haut il faut remplacer par:
PH10= highest[period](high)
– le 200 de la ligne 33 correspond à un nombre d’actions achetées plafonné par 200. Est-ce le 200 du texte du post qui doit en fait correspondre à un nombre de séances plutôt qu’un nombre d’actions? Car si oui, il ne suffit pas d’ajouter du code pour vérifier qu’il n’y a eu qu’un seul achat max dans les 200 séances, il faut aussi supprimer(/remplacer) ce maxshares.
On peut tester la création d’une condition:
UnAchatSur200= summation[200](countoflongshares>countoflongshares[1])<=1
et l’ajouter (ou, si le même 200 car confondu séances et total d’actions, “remplacer maxshares par UnAchatSur200”) au IF de la ligne 35.
// Conditions pour ouvrir une position acheteuse
DEFPARAM cumulateorders=true
capital =7500
rem + strategyprofit
n = (capital/close)
ind1= MACD[30,31,12](close)
ind2= MACDline[30,31,12](close)
c1=ind1[1]<0
c2=ind1>0
c3= ind2<-mcdline
// je ne veux réaliser qu'un achat sur la periode de 200 jours glissants
UnAchatSur200= summation[200](countoflongshares>countoflongshares[1])<=1
IF ( UnAchatSur200 and( c3 and c2 and c1 )) THEN
BUY n shares at MARKET
endif
// Conditions pour fermer une position acheteuse
rem recherche du dernier plus haut sur X périodes
PH10 = highest[period](high)
rem test de la VL inférieure à la perte admise depui le dernier plus haut pour vendre la position
If LongOnMarket AND close<(perte*PH10) THEN
SELL AT MARKET
ENDIF
bonjour,
merci d evotre aide
c3 est une condition qui porte sur le macdline. mcdline est une variable qui fixe un seuil pour le macdline en territoire négatif
j’ai port la correction pour n’avoir qu’un achat dans les 200 jours. ca ne marche pas..
pouvez vous regarder
merci
AT
bonjour Bywan,
désolé , aprés avoir mieux regardé le code fonctionne. merci beaucoup. André