Bonjour,
Sur les tests de codes, comme tous le monde, je m’aperçois que pas mal de trade perdant touche le stoploss à 0, 1, voir 4 ou 5 barre sans jamais avoir été positif.
Je voudrais savoir comment faire pour connaître le nombre moyen de barre (moyenne pondéré 🙂 ?) déclenchant un trade positif.
Car évidemment je pourrais chercher à éliminer tous les trades négatifs qui pendant x (par ex 4) bougies n’ont pas été une seule fois dans le positif.
Mais il doit y a voir des trades super positif qui ont débuter à 6 bougies… et donc on s’en prive.
Et pour fermer une position qui n’a pas eu de MFE > 0 pendant 5 bougie c’est bien cela ?
floatingprofit = (((close-positionprice)*pointvalue)*countofposition)/pipsize
IF BARINDEX-TRADEINDEX(1) <= 5 AND floatingprofit < 0 THEN
SELL AT MARKET
ENDIF
Merci par avance.
Ta fonction n’est pas bonne puisque tu ne regardes le floating profit que sur la barre actuelle. Tu devrais plutôt faire une somme par exemple, avec summation[5](floatingprofit), cela te permettant de vérifier si cette somme est positive ou non et in fine savoir si l’ordre a déjà été gagnant dans le passé.
merci de ta réponse Nicolas,
cela m’aide à comprendre un aspect tu as raison.
mais la seconde partie de mon post est plus subtil qu’une somme. Car si la somme me dit si le volume des gains / perte est négatif, elle ne me dit pas si toute les bougies ont été négatif or je voudrais couper avant le stoploss si toutes les X bougies ont été perdantes (dans un premier temps).
ensuite pour les trade gagnants sur 15 bougies par ex, j’aimerais savoir à partir de combien de bougie c’est gagnant en moyenne, pour ensuite tester ce nombre sur la première partie du présent post.
Les 5 dernières bougies ont toutes étaient négatives :
test = summation[5](floatingprofit < 0) = 5
Ici la somme retourne une somme de conditions booléenne (1 = vrai ; 0 = faux), si la somme est égale à 5, alors toutes ont été négatives et donc la variable “test” (qui est elle même une variable booléenne) retournera 1.
Ah. Je croyais que c’était la somme totale des gains / pertes.
Merci.
et comment faire pour savoir si un trade gagnant long de 34 bougies l’est à partir de la 12ème par ex ? (En fait pour la liste de tous les trades positifs)
Ah. Je croyais que c’était la somme totale des gains / pertes.
Mon premier exemple est différent du second.
Pour ta nouvelle question, lorsque l’ordre est ouvert, on attend d’être en gain pour renseigner la quantité de chandeliers dans une variable, essayons avec ce code :
defparam cumulateorders=false
//strategy example
if not onmarket and rsi[14] crosses over 50 then
buy at market
start = barindex
set target %profit 5
set stop %loss 2.5
endif
//how many bars were in profit
if onmarket then
//floating profit
floatingprofit = (((close-positionprice)*pointvalue)*countofposition)/pipsize
if floatingprofit>0 and lastorder<start then
lastorder=start
bar=barindex-start
endif
else
bar=0
endif
graph bar
Dans cet exemple, la variable “bar” indique à partir de combien de chandelier l’ordre a été en gain.
Merci de tes réponses Nicolas.
Je rencontre un delta entre l’affichage Graph et le nombre de barre dans la fenêtre pro-order.
J’avais déjà graphé un truc moins bien que ton code, et je crois que je ne comprends toujours pas c’est qu’est le nombre de barre dans la fenêtre de résultat proorder car tu indiques la même chose dans ta capture d’écran:
Le nombre de petite barre minuscule (les bougies) de ton graphique doit être au moins 10 fois plus grand que le graph qui est au maximum de 8.
Dans ma capture d’écran du 15 au 16 janvier à 9h le graph indique 11 alors que la fenêtre des ordres indique 1408.
Qu’est-ce que je ne comprends pas stp ?
Oui parce que pour compléter, le présent exemple du 15 ou 16 janvier est une perte.
Dans la logique s’il avait été gagnant il l’aurait été à partir de la 11 à bougie mais dans le cas présent je ne comprends pas bien.
Dans la fenêtre du rapport détaillé, nombre de barres signifie la quantité de bougies de la durée de vie de l’ordre tout simplement et n’a rien à voir avec le MAE/MFE ou à quel moment l’ordre a commencé a être en gain ou non.
Et oui et évidemment, au début du comptage on ne sais pas encore si l’ordre sera gagnant ou perdant… donc on ne peut pas afficher a priori que les gagnants…
sinon j’ai testé ça mais ça marche pas dans mon code:
floatingprofit = (((close-positionprice)*pointvalue)*countofposition)/pipsize
IF BARINDEX-TRADEINDEX(1) <= 5 AND summation[5](floatingprofit < 0) = 5 THEN
SELL AT MARKET
ENDIF
Je pense avoir mal inclu ton code ?
Merci de vais regarder cela.
Bonsoir Nicolas,
Je retourne dans tous les sens et j’ai évidemment testé avec ta dernière proposition.
MAIS je ne comprends pas ce que le “bar” retourne…
Dans l’exemple, pour une position, il m’indique un nombre de chandelier de 88 à partir de laquelle la stratégie est gagnante.
Or il n’y en as que 10 bougie d’écouler depuis l’affichage 88 alors que “nombre de barres signifie la quantité de bougies de la durée de vie de l’ordre“.
Par contre en tout il y a 86 bougies… mais rien à voir car au moment du graph 88 le système ne peut pas savoir.
ET de plus, la stratégie est gagnante sur une bougie, bien avant ce graph… (bougie Rouge qui dépasse bien le mR1H)
//how many bars were in profit
if onmarket then
//floating profit
floatingprofit = (((close-positionprice)*pointvalue)*countofposition)/pipsize
if floatingprofit>0 and lastorder<start then
lastorder=start
bar=barindex-start
endif
else
bar=0
endif
graph bar as "bar"
Une idée ?
Hum… je crois que je comprends.
Dans ma stratégie j’achète en TF M15, mais je suis en TF M1 pour les clôtures.
Donc le start = barindex est sur TF M15 alors que je vois les barres en TFM1… D’où la différence…
Je pourrais retomber sur mes pieds si le nombre par ex était de 2 barres et si j’en avais 30… car 2 X 15.
Mais là il m’affiche 88 pour seulement 10 bougies…
A chaque fois que j’ai des questions simples ça finit toujours par devenir compliqué 😉
Voilà donc un ex de problème. Si on commente les TF tout est cohérent.
Dès qu’on active les TF les résultats n’ont aucun sens (enfin je ne les comprends pas).
defparam cumulateorders=false
timeframe(15 minutes)
//strategy example
if not onmarket and rsi[14] crosses over 50 then
buy at market
start = barindex
set stop %loss 2.5
endif
timeframe(1 minutes)
if rsi[14] crosses under 50 then
sell at market
endif
//how many bars were in profit
if onmarket then
//floating profit
floatingprofit = (((close-positionprice)*pointvalue)*countofposition)/pipsize
if floatingprofit>0 and lastorder<start then
lastorder=start
bar=barindex-start
endif
else
bar=0
endif
graph bar
Et j’ai besoin d’utiliser ça pour une stratégie; je dois identifier le nombre moyen de bougie au-dessus de laquelle on pourrait couper plus tôt.
Une idée pour m’aider à résoudre le (dernier) problème de ce fil svp ?