Bonjour,
Je le précise, même si c’est évident, je suis pas calé du tout :p
Bon, je veux chercher une condition sur une période comprenant les 5 dernières barres. Par exemple, je veux acheter si le RSI croise à la hausse la valeur 30 que si durant les 5 dernières bougies, le + bas et/ou la clôture sont sous la borne inférieure de Bollinger.
J’ai codé ça. Mais j’ai l’impression qu’il teste que la bougie 5 avant la bougie actuelle et chacune des bougies de la période définie.
Mon code est il correct ? sinon, comment faire ?
DEFPARAM CumulateOrders = true
period = 10
indicator2 = RSI[8](close)
c2 = (indicator2 CROSSES OVER 30)
indicator3 = BollingerDown[20](close)
c3 = (DLow(0)[period] <= indicator3[period])
c5 = (Close[period] <= indicator3[period])
IF (c3 or c5) AND c2 THEN
BUY 1 CONTRACT AT MARKET
ENDIF
indicator4 = RSI[8](close)
c4 = (indicator4 >= 70)
IF c4 THEN
SELL AT MARKET
ENDIF
SET TARGET pPROFIT 50
Merci par avance pour vos lumières.
Bonjour, suggestions de modifications pour trouver si la condition “close ou low sous bollinger basse” soit vraie pendant toute la période (non testé) :
period = 5 //choisir 5 si on veut 4 précédentes + la bougie en cours, 6 si on veut 5 précédentes + la bougie en cours
indicator2 = RSI[8](close)
c2 = (indicator2 CROSSES OVER 30)
c4 = (indicator2 >= 70)
indicator3 = BollingerDown[20](close)
c3 = (low <= indicator3 or close <= indicator3)
c5 = (summation[period](c3) = period)
IF c2 and c5 THEN
BUY 1 CONTRACT AT MARKET
ENDIF
IF longonmarket and c4 THEN
SELL AT MARKET
ENDIF
SET TARGET pPROFIT 50
Bonjour,
Merci pour votre réponse. Je crois qu’il calcule la condition uniquement sur la bougie de la période, à dire 3 pour l’exemple. Au moins, je sais ce que je fais.
Ce n’est pas possible de faire vérifier une condition sur plusieurs bougies ? et non une seule ?
L’image 1 c’est nos codes avec période 3 pour chacun. L’image 2, ce sont nos codes avec période 1. Bref, pour ce cas présent, pas la peine de se prendre la tête, c’est période 1 qui donne les meilleurs résultats. Mais j’aurais bien aimé exploiter la totalité des occurrences et ne pas être limité par une aléa technique. Je vais essayer de coder la condition pour chaque bougie de la période que je veux étudier. Ça devrait le faire.
Merci encore, si vous avez une autre solution, je suis ouvert :).
Bon voilà, ça marche comme ça. Si quelqu’un sait comment simplifier le codage, je suis preneur ^^
Merci
DEFPARAM CumulateOrders = true
period1 = 1
period2 = 2
period3 = 3
period4 = 4
period5 = 5
period6 = 6
period7 = 7
indicator2 = RSI[8](close)
c2 = (indicator2 CROSSES OVER 30)
c4 = (indicator2 >= 70)
indicator3 = BollingerDown[20](close)
c3 = (DLow(0)[period1] <= indicator3[period1])
c6 = (DLow(0)[period2] <= indicator3[period2])
c7 = (DLow(0)[period3] <= indicator3[period3])
c8 = (DLow(0)[period4] <= indicator3[period4])
c9 = (DLow(0)[period5] <= indicator3[period5])
c10 = (DLow(0)[period6] <= indicator3[period6])
c11 = (DLow(0)[period7] <= indicator3[period7])
c5 = (Close[period1] <= indicator3[period1])
IF (c3 or c5 or c6 or c7 or c8 or c9 or c10 or c11) AND c2 THEN
BUY 1 CONTRACT AT MARKET
ENDIF
IF c4 THEN
SELL AT MARKET
ENDIF
SET TARGET pPROFIT 50
Ce n’est pas possible de faire vérifier une condition sur plusieurs bougies ? et non une seule ?
Si, c’est ce qui était fait dans le post précédent avec “summation” dans:
c5 = (summation[period](c3) = period)
mis en mots si on ne connait pas summation, cela a fait la somme sur le nombre de bougies entre crochets [period] de c3 (qui vaut soit 0 soit 1), et si cette somme = period, c’est que chaque c3 valait logiquement 1, si un seul ou plus de ces c3 vaut 0 alors on n’aurait pas pu avoir leur somme égale à period, bref c’est une ligne à la fois dense en contenu et légère en quantité d’instructions par rapport à d’autres façons d’obtenir c5.
Les rapports détaillés de backtests n’aideront pas à débugguer, l’utilisateur qui veut débugguer son code ou vérifier des comportements de variables obtiendra davantage d’informations exploitables avec graph et/ou print
exemple à rajouter en fin de code:
graph c5 as “c5”
qui ouvrira une fenêtre de plus lors du backtest pour voir quand c5 vaut 0 ou 1
Merci beaucoup pour votre réponse. Ca restait un peu abstrait cette notion de summation. Depuis hier, j’ai accès à la formation de programmation avancée. Je comprends mieux vos propos maintenant, même si c’était bien expliqué. Je suis un vrai néophyte en programmation.