Aide encodage stratégie avec martingale et RSI
Forums › ProRealTime forum Français › Support ProOrder › Aide encodage stratégie avec martingale et RSI
- This topic has 9 replies, 3 voices, and was last updated 6 years ago by Fox Echo.
-
-
06/26/2017 at 1:39 PM #39068
Bonjour,
Débutant sur pro order, j’aurais besoin de vos conseils pour un code qui semble ne pas fonctionner. Le principe de ce code est une martingale et le problème est le suivant :
L’ordre initial (achat ou vente) se déclenche bien en fonction des conditions demandées mais lorsque la position clôture en perte, l’ordre suivant ne prend pas en compte la martingale et ouvre une position d’un contrat seulement (idem à l’ordre initial donc). J’ai eu beau chercher un peu partout sur le web et dans le manuel d’utilisation, pas moyen de comprendre l’erreur. Pouvez vous m’aider svp ?
Voici le code en question :
Code12345678910111213141516171819202122232425262728293031323334DEFPARAM CumulateOrders = FalseONCE OrderSize = 1ONCE ExitIndex = -2noEntryBeforeTime = 080000timeEnterBefore = time >= noEntryBeforeTimenoEntryAfterTime = 183000timeEnterAfter = time < noEntryAfterTimedaysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0indicator1 = RSI[14](close)c1 = (indicator1 <= 30)IF c1 AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry AND not longonmarket THENBUY ordersize CONTRACT AT MARKETENDIFindicator2 = RSI[14](close)c2 = (indicator2 >= 70)IF c2 AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry AND not shortonmarket THENSELLSHORT ordersize CONTRACT AT MARKETENDIFSET STOP pLOSS 5SET TARGET pPROFIT 10ExitIndex = BarIndexIF Barindex = ExitIndex + 1 THENExitIndex = 0IF PositionPerf(1) < 0 THENOrderSize = OrderSize * 2ELSIF PositionPerf(1) > 0 THENOrderSize = 1ENDIFENDIFD’avance merci !
06/26/2017 at 2:42 PM #39107Je pense qu’à force d’essayer à faire quelque-chose qui fonctionne, tu as mélangé un peu de tout, j’ai modifié comme ceci:
1234567891011121314151617181920212223242526272829303132DEFPARAM CumulateOrders = FalseONCE OrderSize = 1//ONCE ExitIndex = -2noEntryBeforeTime = 080000timeEnterBefore = time >= noEntryBeforeTimenoEntryAfterTime = 183000timeEnterAfter = time < noEntryAfterTimedaysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0indicator1 = RSI[14](close)c1 = (indicator1 <= 30)IF c1 AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry AND not longonmarket THENBUY ordersize CONTRACT AT MARKETENDIFindicator2 = RSI[14](close)c2 = (indicator2 >= 70)IF c2 AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry AND not shortonmarket THENSELLSHORT ordersize CONTRACT AT MARKETENDIFSET STOP pLOSS 5SET TARGET pPROFIT 10IF tradeindex(1)=barindex[1] THENIF PositionPerf(1) < 0 THENOrderSize = OrderSize * 2ELSIF PositionPerf(1) > 0 THENOrderSize = 1ENDIFENDIFça devrait fonctionner, merci de confirmer ! 🙂
06/26/2017 at 3:32 PM #39116Merci Nicolas pour la rapidité de ta réponse 🙂
En fait je me suis appuyé sur le manuel d’utilisation de PRT pour faire le code, chose qui n’a pas été aisé, j’ai du me mélanger un peu les pinceaux.
Avec ton code il y a effectivement eu du changement (j’ai reduit le take profit pour avoir un meilleur visuel au backtest) mais certains problèmes semblent persister 🙁
06/26/2017 at 3:39 PM #39121Sur le graph on voit que la première position est un echec (vente à 1.11876 et rachat à 1.11926) jusqu’ici c’est normal. Par contre la deuxième s’ouvre avec un montant de 4 lot à 1.11940 (normalement ce devrait être 2) et se ferme sur la même bougie à 1.11990 (normal). La position continue d’être perdante mais les positions suivantes continuent à 4 lots.
Je ne comprends pas trop ce qu’il se passe.
06/26/2017 at 3:49 PM #39123Ah ok je vois, le problème avec le code de la martingale de la documentation c’est que l’on ne sait pas si l’ordre a été fermé en takeprofit ou en stoploss avec la façon dont on nous dit de l’incorporer. J’ai changé la façon d’opérer:
1234567891011121314151617181920212223242526272829303132333435DEFPARAM CumulateOrders = FalseONCE OrderSize = 1noEntryBeforeTime = 080000timeEnterBefore = time >= noEntryBeforeTimenoEntryAfterTime = 183000timeEnterAfter = time < noEntryAfterTimedaysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0indicator1 = RSI[14](close)c1 = (indicator1 <= 30)IF c1 AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry AND not longonmarket THENEXITSHORT AT MARKETIF PositionPerf(1) < 0 THENOrderSize = OrderSize * 2ELSIF PositionPerf(1) > 0 THENOrderSize = 1ENDIFBUY ordersize CONTRACT AT MARKETENDIFindicator2 = RSI[14](close)c2 = (indicator2 >= 70)IF c2 AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry AND not shortonmarket THENSELL AT MARKETIF PositionPerf(1) < 0 THENOrderSize = OrderSize * 2ELSIF PositionPerf(1) > 0 THENOrderSize = 1ENDIFSELLSHORT ordersize CONTRACT AT MARKETENDIFSET STOP pLOSS 5SET TARGET pPROFIT 10et maintenant ?
06/26/2017 at 4:20 PM #39130C’est beaucoup mieux ! 😉 et vu la configuration de l’eur/usd aujourd’hui c’est un massacre ! +4600 eur ! lol
Ceci est du au fait que maintenant la clôture se fait uniquement quand le rsi passe sous les 30 pour les shorts et au dessus de 70 pour les longues (en backtest du moins), le stop loss et la martingale fonctionnent bien mais le take profit est par contre devenu inutile dans le code.
Je n’ose pas imaginer pas le résultat un jour de forte tendance continue……hummm et un compte brulé, un ! lol
Je vais essayer de trouver quelque chose pour arranger ça et stopper comme prévu initialement 🙂
En tout cas merci infiniment, la lecture de ton code m’a permis de mieux comprendre le principe et de progresser 🙂
1 user thanked author for this post.
06/26/2017 at 5:20 PM #39132Finalement après plusieurs tests en changeant les valeurs, il s’avère que ton code est tout simplement parfait 🙂
Un grand bravo et encore merci Nicolas.
Un dernier point, il m’est impossible d’effectuer un backtest sur plus d’un jour. Est-ce du au fait que je soit en démo ?
06/27/2017 at 10:43 AM #3916306/28/2017 at 5:57 AM #3926405/02/2018 at 10:20 PM #69672Bonjour,
Cette routine fonctionne bien sur le CAC40 Future en backtest sur des barres de 2 minutes ; je l’essaie demain sur un portefeuille virtuel. Avez-vous essayé avec un stop-suiveur à 5% plutôt qu’un stop-loss ? (je ne connais pas la formule pour le coder, mais le trailing stop me semble très puissant).
-
AuthorPosts
Find exclusive trading pro-tools on