Le retour de la cougarAmarantine a écrit :Les3BB, coince-moi sur tout ce que tu veux
IG devait en avoir marre de perdre de l'argent sur les mini-contrats indice anglais et CAC ...Khepesh a écrit :( j’avoue ne pas trop comprendre leur logique pour le coup mais bon c'est comme ça
En 18 mois il nous ont fait :
sur indice anglais 1€ : augmentation du spread de 1 à 1,2, puis qté minimal de 1 à 2 contrat
Sur CAC mini : Contat à 2€ spreade de 2 à contrat 1€ spreade de 1,2, puis qté minimale de 1 à 2.
Toujours retenir que tout change tous les 6à 18 mois ...
C'ets comme l'autre vendredi : la volatilité était tellement forte, que le minimum du stop sur le mini USD/JPY est passé de 5 habituellement à 10 ...
Donc oui IG plafonnne ses spreads mais ils ont d'autre levier.
Bon bah a faisait "longtemps" que j'avais pas posé de question... (moins de temps a consacrer a mes recherches actuellement)
et ... bah j'ai une question toute bête, en faite, pour moi tout est censé marcher, mais visiblement c'est pas le cas...
petit historique :
je me suis fait un indicateur sous prorealtime basé sur les stochastiques, qui génère un signal (+10/-10) pour signal d'achat/vente. Le signal est bien généré est visible dans l'indicateur, jusque là tout est OK.
Le problème c'est que je veux utiliser le "signal" de cet indicateur pour lancer un backtest (c'est juste quelques test mais bon ... ) mais ... c'est là que ça cloche, le backtest ne me prend que quelques positions aléatoires et uniquement dans un sens, je me dit que j'ai dût rater un épisode, mais je vois pas lequel ...
le code du backtest est on ne peut plus basique :
sachant que le "RETURN" de l'indicateur stipule :
monSignalStocha as "SignalStocha"
si l'un de vous pouvais me dire où je merdouille ca m'aiderais beaucoup ^^ j'ai l'impression que c'est juste une "bêtise" mais j'arrive pas a mettre le doigt dessus -_-'
PS : j'ai un backtest qui fonctionne parfaitement sur le même principe (récupération du signal à partir d'un indicateur) d'où mon incompréhension ^^
PPS : j'vient de voir qu'il y a un "exemple intégré" d'indicateur stocha ... j'avais pas vu xD mais ca résoud pas mon problème.
et ... bah j'ai une question toute bête, en faite, pour moi tout est censé marcher, mais visiblement c'est pas le cas...
petit historique :
je me suis fait un indicateur sous prorealtime basé sur les stochastiques, qui génère un signal (+10/-10) pour signal d'achat/vente. Le signal est bien généré est visible dans l'indicateur, jusque là tout est OK.
Le problème c'est que je veux utiliser le "signal" de cet indicateur pour lancer un backtest (c'est juste quelques test mais bon ... ) mais ... c'est là que ça cloche, le backtest ne me prend que quelques positions aléatoires et uniquement dans un sens, je me dit que j'ai dût rater un épisode, mais je vois pas lequel ...
le code du backtest est on ne peut plus basique :
Code : #
mySignalStocha = CALL "Stochastique_Perso"[75 ,25 ,14 ,3 ,5](close)
IF mySignalStocha = 10 THEN
BUY 1 SHARES AT MARKET THISBARONCLOSE
ENDIF
IF mySignalStocha = -10 THEN
SELLSHORT 1 SHARES AT MARKET THISBARONCLOSE
ENDIF
monSignalStocha as "SignalStocha"
si l'un de vous pouvais me dire où je merdouille ca m'aiderais beaucoup ^^ j'ai l'impression que c'est juste une "bêtise" mais j'arrive pas a mettre le doigt dessus -_-'
PS : j'ai un backtest qui fonctionne parfaitement sur le même principe (récupération du signal à partir d'un indicateur) d'où mon incompréhension ^^
PPS : j'vient de voir qu'il y a un "exemple intégré" d'indicateur stocha ... j'avais pas vu xD mais ca résoud pas mon problème.
A mon avis ,Falex va te résoudre ça des qu'il aura vu ta question
En attendant, je maîtrise pas mais tu close la position quand dans ton backtest ?
En attendant, je maîtrise pas mais tu close la position quand dans ton backtest ?
avec des TP et SL, oui
sans compter que probacktest ne gère pas le hedge donc une position short clôture systématiquement la longue et vice-versa.
et là... c'est pas le cas
sans compter que probacktest ne gère pas le hedge donc une position short clôture systématiquement la longue et vice-versa.
et là... c'est pas le cas
Yo les backtesteurs,
Dans le principe ton backtest est ok.
Maintenant faudrait que tu poste le codes de l'indicateur pour le vérifier.
J'ai déjà fait aussi des backtests avec en entrée des indicateurs maison et si tout est bien codé ça devrait marcher. Dernier exemple en tête où PRT fume la moquette : le RSBoll de teg54, j'y ai rajouté mon indicateur HorsBoll et là je ne comprend plus rien ???? Sur environ 5 à 10M des trades du backtests, soit il y n'y a pas de signal, soit le signal est là mais pas de trade.
J'avais déjà émis l’hypothèse des problèmes du nombre de décima et/ou d'arrondi qui ne sont pas traité de la même manière sur le graphique et en backtest.
Par exemple ton RSI vaut 79,95 sur ton graphe et j'ai comme l'impression que dans la backtet il sera arrondi à 80 ou 79 ...
Donc peut-être as-tu le même genre de phénomène avec le stok.
Donc soit tu postes ton code histoire d'y jeter un coup d'oeil semaine prochaine soit tu envoi un email à PRT ...
Dans le principe ton backtest est ok.
Maintenant faudrait que tu poste le codes de l'indicateur pour le vérifier.
J'ai déjà fait aussi des backtests avec en entrée des indicateurs maison et si tout est bien codé ça devrait marcher. Dernier exemple en tête où PRT fume la moquette : le RSBoll de teg54, j'y ai rajouté mon indicateur HorsBoll et là je ne comprend plus rien ???? Sur environ 5 à 10M des trades du backtests, soit il y n'y a pas de signal, soit le signal est là mais pas de trade.
J'avais déjà émis l’hypothèse des problèmes du nombre de décima et/ou d'arrondi qui ne sont pas traité de la même manière sur le graphique et en backtest.
Par exemple ton RSI vaut 79,95 sur ton graphe et j'ai comme l'impression que dans la backtet il sera arrondi à 80 ou 79 ...
Donc peut-être as-tu le même genre de phénomène avec le stok.
Donc soit tu postes ton code histoire d'y jeter un coup d'oeil semaine prochaine soit tu envoi un email à PRT ...
le coup des RSI - 79.xxx qui déclenche un signal malgré une limite a 80 oui je l'ai déjà noté avec le "RSBoll" jamais réussi a comprendre le pourquoi du comment
J'avais envoyé un mail a IG qui me conseillait d'envoyer un mail a prorealtime ... chose que je n'avais pas faite c'est vrai ... (oublié)
sinon pour le "code" y'a rien de sorcier, et le voici :
u/v/w/x/y sont les variables classiques des stocha et le palier de déclenchement du "signal"
par défaut :
edit : je reste volontairement avec des codes "simples" pour bien assimiler le tout et valider certains fonctionnements...
tout en préparant une éventuelle imbrication ultérieure
pour les fans de la couleur ça donne ça une fois un peu égayé, tout bête quoi : edit2 : d'ailleur je suis en train de voir qu'il semble manquer un signal apparement(rouge), trois bougies avant la première rouge.
edit3 : et et y pensant brièvement (j'vasi dodo !!) je me demande comment il fait pour générer deux signaux d'affilé avec les conditions qu'il y a au dessus ... ça devrait pas être possible
vas falloir que j'approfondisse ça demain
edit4 : (ca commence a faire ^^) : j'ai trouvé au moins un des problème : j'avais oublié un "[1]" (ajouté dans le code ci-dessus)
-->ça gomme les signaux consécutifs qui ne devaient pas exister, et rajoute le signal manquant dont je parlais plus haut, mais ne corrige pas le backtest
J'avais envoyé un mail a IG qui me conseillait d'envoyer un mail a prorealtime ... chose que je n'avais pas faite c'est vrai ... (oublié)
sinon pour le "code" y'a rien de sorcier, et le voici :
Code : #
monHeure = (time > 80000) and (time < 173000)
StochaK = Stochastic[u,v](close)
StochaD = Average[w](Stochastic[u,v](close))
monSignalStocha = 0
mediane = 50
surachat = x
survente = y
REM Vente
IF monHeure AND StochaK > x AND StochaK[1] > StochaD[1] AND StochaK < StochaD THEN
monSignalStocha = -10
ENDIF
REM Achat
IF monHeure AND StochaK < y AND StochaK[1] < StochaD[1] AND StochaK > StochaD THEN
monSignalStocha = 10
ENDIF
RETURN StochaK as "StochaK", StochaD as "StochaD", monSignalStocha as "SignalStocha", mediane as "Médiane", surachat as "Limite Haute", survente as "Limite Basse"
par défaut :
Code : #
Stochastic[14,3]
Average[5]
surachat = 80
survente = 20
tout en préparant une éventuelle imbrication ultérieure
pour les fans de la couleur ça donne ça une fois un peu égayé, tout bête quoi : edit2 : d'ailleur je suis en train de voir qu'il semble manquer un signal apparement(rouge), trois bougies avant la première rouge.
edit3 : et et y pensant brièvement (j'vasi dodo !!) je me demande comment il fait pour générer deux signaux d'affilé avec les conditions qu'il y a au dessus ... ça devrait pas être possible
vas falloir que j'approfondisse ça demain
edit4 : (ca commence a faire ^^) : j'ai trouvé au moins un des problème : j'avais oublié un "[1]" (ajouté dans le code ci-dessus)
-->ça gomme les signaux consécutifs qui ne devaient pas exister, et rajoute le signal manquant dont je parlais plus haut, mais ne corrige pas le backtest
juste un p'ti up, toujours personne avec une solution a mon problème ?
Bonjour à vous,
Plutôt que de commencer un autre topic je continu celui-ci, puisque les question seront toujours du même ordre ...
Rapport a mon problème précédent, je n'ai jamais eu de réponse/solution mais disons que je l'ai contourné ... mais là n'est plus le problème.
j'ai une question actuellement sur le passage d'ordre :
est-il possible et si oui comment, d’empêcher le passage d'un ordre quand un autre ordre a été passé "recemment" ?
je m'explique : (version simplifié)
il y a un passage d'ordre (achat ou vente) lors du passage d'une "MoyenneA" au dessus d'une autre, "MoyenneB".
si un ordre a été passé (achat ou vente) au cours de ce ce passage (c'est à dire tant que MoyenneA > MoyenneB) je ne veux pas qu'un autre ordre, (contradictoire ou non) ne passe.
une idée ?
Plutôt que de commencer un autre topic je continu celui-ci, puisque les question seront toujours du même ordre ...
Rapport a mon problème précédent, je n'ai jamais eu de réponse/solution mais disons que je l'ai contourné ... mais là n'est plus le problème.
j'ai une question actuellement sur le passage d'ordre :
est-il possible et si oui comment, d’empêcher le passage d'un ordre quand un autre ordre a été passé "recemment" ?
je m'explique : (version simplifié)
il y a un passage d'ordre (achat ou vente) lors du passage d'une "MoyenneA" au dessus d'une autre, "MoyenneB".
si un ordre a été passé (achat ou vente) au cours de ce ce passage (c'est à dire tant que MoyenneA > MoyenneB) je ne veux pas qu'un autre ordre, (contradictoire ou non) ne passe.
une idée ?
Si tu as ce genre de question c'est qu'à chaque bougie ton code est executé et que ta condition pour passer un ordre est rempli.
Une des solutions sous PRT :
Utiliser Cross under ou Cross Over pour valider le croisement des tes MM.
ou rajouter dans tes conditions d'entrées de trade not onmarket par exemple.
Une des solutions sous PRT :
Utiliser Cross under ou Cross Over pour valider le croisement des tes MM.
ou rajouter dans tes conditions d'entrées de trade not onmarket par exemple.
Bonjour falex,
pas a chaque Bougie mais il peut être exécuté plusieurs fois dans le même sens en cas de "grosse lancée" ou en contradictoire ... également en cas de "grosse lancée" (le temps que d'autres conditions s'annulent)
j'y avais pensé pour le "not onmarket" où du moins un équivalent, mais le problème et que si je souhaite faire un backtest avec juste de l'achat/vente, ça ne pourra pas fonctionner.
le cross under / over j'y avait pensé aussi mais rapidement abandonné puisque je ne voyait pas trop comment le mettre en place pour obtenir ce que je veux.
J'y pense juste en écrivant ce message, mais il est vrai que je pourrai déclencher l'ordre d'achat/vente uniquement sur le cross over/under, ce qui devrait rendre le tout viable ... j'vais aller voir ça après manger
si il y a une autre idée je suis preneur "au cas ou"
Merci en tout cas
edit : bon bah après verif, ça fonctionne avec le déclenchement sur le "crosses overs".
pas a chaque Bougie mais il peut être exécuté plusieurs fois dans le même sens en cas de "grosse lancée" ou en contradictoire ... également en cas de "grosse lancée" (le temps que d'autres conditions s'annulent)
j'y avais pensé pour le "not onmarket" où du moins un équivalent, mais le problème et que si je souhaite faire un backtest avec juste de l'achat/vente, ça ne pourra pas fonctionner.
le cross under / over j'y avait pensé aussi mais rapidement abandonné puisque je ne voyait pas trop comment le mettre en place pour obtenir ce que je veux.
J'y pense juste en écrivant ce message, mais il est vrai que je pourrai déclencher l'ordre d'achat/vente uniquement sur le cross over/under, ce qui devrait rendre le tout viable ... j'vais aller voir ça après manger
si il y a une autre idée je suis preneur "au cas ou"
Merci en tout cas
edit : bon bah après verif, ça fonctionne avec le déclenchement sur le "crosses overs".
Encore bonjour, (décidément ... :musique: )
Bon bah cette fois c'est un problème différent, j'essaye d'incorporer un Money Mgt. à certains Backtest ... sans succès.
J'ai pourtant repris le code du bouquin "probacktest" mais je me retrouve avec des taille de positions pour le moins ... erratiques !
Voyant que ça ne marchait pas j'ai essayé d'épurer au maximummum afin de voir d’où vient le problème ... mais ça ne m'a pas vraiment aidé
donc une fois le truc simplifié au maximummum (je crois ... le "code" est à poil lol)
comme je l'ai dit j'ai voulu simplifié à fond j'ai donc utilisé une "martingal" en * 2 tout ce qu'il y a de plus standard, j'ai essayé de rentrer des sorties en "manuel" sans résultat, en configurant les TP / SL via le joli bouton qui va bien, toujours sans résultat.
en mettant SL/TP - 5chacun on se retrouve par exemple avec une première prise de position à 10 lots au lieux des "1" demandés suivi de 9 lots au lieux de "2" logiquement, et ça continu durant tout le reste du Backtest (je passe de taille de lot de 1 à 2 à 10 et plus sans raison apparente)
bref, je sèche
je suppose qu'il y a une coquille mais je ne vois pas où ...
Merci a toute âme charitable qui pourra m’éclairer
PS : voilà ce que donne le bouquin :
Bon bah cette fois c'est un problème différent, j'essaye d'incorporer un Money Mgt. à certains Backtest ... sans succès.
J'ai pourtant repris le code du bouquin "probacktest" mais je me retrouve avec des taille de positions pour le moins ... erratiques !
Voyant que ça ne marchait pas j'ai essayé d'épurer au maximummum afin de voir d’où vient le problème ... mais ça ne m'a pas vraiment aidé
donc une fois le truc simplifié au maximummum (je crois ... le "code" est à poil lol)
Code : #
ONCE OrderSize = 1
monHeure = (time > 73000) and (time < 163000)
monRSI = RSI[7](close)
surVente = 25
// Ordres :
IF monHeure AND monRSI CROSSES OVER surVente THEN
BUY OrderSize SHARES AT MARKET THISBARONCLOSE
ENDIF
IF PreviousTrade(1) > 0 THEN
OrderSize = 1
ELSIF PreviousTrade(1) <= 0 THEN
OrderSize = OrderSize * 2
ENDIF
en mettant SL/TP - 5chacun on se retrouve par exemple avec une première prise de position à 10 lots au lieux des "1" demandés suivi de 9 lots au lieux de "2" logiquement, et ça continu durant tout le reste du Backtest (je passe de taille de lot de 1 à 2 à 10 et plus sans raison apparente)
bref, je sèche
je suppose qu'il y a une coquille mais je ne vois pas où ...
Merci a toute âme charitable qui pourra m’éclairer
PS : voilà ce que donne le bouquin :
Code : #
//***********Code à insérer au début de la stratégie**********//
ONCE OrderSize = 1 // On commence avec une position de 1
//*********************//
//***********Code à insérer juste après les instructions liquidant une position**********//
IF PreviousTrade(1) < 0 THEN
// Si le dernier trade était perdant, alors on double la taille de la position et on ajoute une unité
OrderSize = OrderSize * 2 + 1
ELSIF PreviousTrade(1) >= 0 THEN
// Si le dernier trade était gagnant, alors on revient à une position de taille 1
OrderSize = 1
ENDIF
//*********************//
REM Dans le backtest, la taille de la position doit être déterminée par la variable OrderSize
Kepesh, j'ai pas tout lu mais quand j'ai essayé de faire du MM avec PreviousTrade, je me suis aperçu que :
PreviousTrade(0) ne te renvoi pas le PV/MV du gain en cours mais celui du trade - 1 (en fait le dernier clos).
Idem si un trade est clos par un trade contraire (du flip/flap) c'est le même comportement, PreviousTrdae(0) sera l'inversion de ses précedent et pas celui en cours.
J'avais essayé de faire un pyramidage avec cette fonction et je ne comprenais pas pourquoi mes pyramide démarrait toujours avec un trade de retard.
Donc ceci devant expliquer cela j'ai laissé tomber cette possibilité.
Une autre façon de faire du pyramidage mais sans tenir compte des résultats des trades précédents et de cocher la case "Engagement maximummum" ou alors de jouer sur la taille de ton K plus la prix du contrat et de décocher "réinvestir les gains".
Par exemple : j'ai 10 en K, 1 en valeur de contrat et "Réinvestir les gains de décocher" sur des cfd à risque limité DAX ou CAC ou indice anglais.
Si j'ai un code qui peut rentrer plusieurs fois dans le même sens alors je pourrais pyramider/moyenner jusqu'à 10 positions (10 x 1).
Si "Réinvestir les gains" est coché alors dès que ton gain tombe à 0 le backtest s'arret.
PreviousTrade(0) ne te renvoi pas le PV/MV du gain en cours mais celui du trade - 1 (en fait le dernier clos).
Idem si un trade est clos par un trade contraire (du flip/flap) c'est le même comportement, PreviousTrdae(0) sera l'inversion de ses précedent et pas celui en cours.
J'avais essayé de faire un pyramidage avec cette fonction et je ne comprenais pas pourquoi mes pyramide démarrait toujours avec un trade de retard.
Donc ceci devant expliquer cela j'ai laissé tomber cette possibilité.
Une autre façon de faire du pyramidage mais sans tenir compte des résultats des trades précédents et de cocher la case "Engagement maximummum" ou alors de jouer sur la taille de ton K plus la prix du contrat et de décocher "réinvestir les gains".
Par exemple : j'ai 10 en K, 1 en valeur de contrat et "Réinvestir les gains de décocher" sur des cfd à risque limité DAX ou CAC ou indice anglais.
Si j'ai un code qui peut rentrer plusieurs fois dans le même sens alors je pourrais pyramider/moyenner jusqu'à 10 positions (10 x 1).
Si "Réinvestir les gains" est coché alors dès que ton gain tombe à 0 le backtest s'arret.
Je t'ai mis sur la piste du Cross over/under mais de mémoire cette fonction est légérement bugué ou rentre (ou ne rentre pas ) alors que la condition est déclenché visuellement ... (ou alors c'est encore à cause des arrondi ... éternelle débat).
En tout cas tu peux le coder toi-même c'est hyper simple :
Cross-over : indicA croisse à la hausse indicB ça donne :
si (indicA(0) > indicB(0)) ET (indicA(1) < indicB(1)) alors ...
Je te laisse trouver le cross under
PS : Andlil : forum de cours de programmation, Benoist envois nous tes handicapés de la boucle conditionnelle !
En tout cas tu peux le coder toi-même c'est hyper simple :
Cross-over : indicA croisse à la hausse indicB ça donne :
si (indicA(0) > indicB(0)) ET (indicA(1) < indicB(1)) alors ...
Je te laisse trouver le cross under
PS : Andlil : forum de cours de programmation, Benoist envois nous tes handicapés de la boucle conditionnelle !
dans le désordre :
pour le crosses over/under, je me sert déjà de "si (indicA(0) > indicB(0)) ET (indicA(1) < indicB(1)) alors ..." sur certains BT où les "crosses" ne peuvent pas remplir le rôle demandé (conditions particulières ... ) en faite je me servait exclusivement de la méthode que tu indique jusqu'a ... hier ?
j'ai migré depuis hier pour être plus propre mais bon...
Par contre pour le déclenchement visuel mais pas réel ça je n'en savait rien, je vais repasser mon ancienne méthode ça gommera au moins ce problème
Pour previoustrade(1) si je ne me trompe pas, c'est le résultat du dernier trade clôturé qui ressortira, et c'est ce que je veux.
En y repensant, si le premier lot bug c'est peut être parce qu'il n'a pas d'historique de trade d'enregistré ... je vérifierait ça, même si théoriquement ça aurait dût rentrer dans l'ordre après si c’était le seul bug....
mais pas ce soir
pour le crosses over/under, je me sert déjà de "si (indicA(0) > indicB(0)) ET (indicA(1) < indicB(1)) alors ..." sur certains BT où les "crosses" ne peuvent pas remplir le rôle demandé (conditions particulières ... ) en faite je me servait exclusivement de la méthode que tu indique jusqu'a ... hier ?
j'ai migré depuis hier pour être plus propre mais bon...
Par contre pour le déclenchement visuel mais pas réel ça je n'en savait rien, je vais repasser mon ancienne méthode ça gommera au moins ce problème
Pour previoustrade(1) si je ne me trompe pas, c'est le résultat du dernier trade clôturé qui ressortira, et c'est ce que je veux.
En y repensant, si le premier lot bug c'est peut être parce qu'il n'a pas d'historique de trade d'enregistré ... je vérifierait ça, même si théoriquement ça aurait dût rentrer dans l'ordre après si c’était le seul bug....
mais pas ce soir
Sujets similaires
ProOrder - Probacktest : même code - comportement différent
Fichier(s) joint(s) par clodreb » 03 mars 2015 22:20 (45 Réponses)
Fichier(s) joint(s) par clodreb » 03 mars 2015 22:20 (45 Réponses)
ProBacktest PRT étonnant donnez votre avis
Fichier(s) joint(s) par GOLDENBOY » 23 nov. 2016 22:10 (18 Réponses)
Fichier(s) joint(s) par GOLDENBOY » 23 nov. 2016 22:10 (18 Réponses)
popup d'alerte de probacktest est bloqué, comment faire?
par quatrevingt4000 » 16 déc. 2017 11:17 (2 Réponses)
par quatrevingt4000 » 16 déc. 2017 11:17 (2 Réponses)