Conversion strategy() Pinescript en ProBacktest
Forums › ProRealTime forum Français › Support ProOrder › Conversion strategy() Pinescript en ProBacktest
- This topic has 6 replies, 2 voices, and was last updated 4 years ago by Pepe_W.
-
-
07/30/2020 at 12:12 AM #140411
Bonjour,
J’ai un script fonctionnel Pinescript (une strategy()) que je voudrais transformer en script ProBacktest.
Je vous demande de l’aide au niveau de la conversion du code afin que je vois plus vite les différences entre les 2 langages (j’ai déjà fait la formation d’introduction).Vous trouverez en PJ mon code Pinescript dans le fichier txt, une capture d’écran représentant un exemple de LONG et un exemple de SHORT et enfin une autre capture d’écran représentant mon money management.
Voici comment fonctionne ma stratégie (il s’agit d’une stratégie pour du Forex) :
– Tout d’abord j’ajoute 2 indicateurs :
-
- – Un MACD (j’ai enlevé l’histogramme et ajouté une ligne horizontale à 0)
- – Une 200 EMA
– J’ai 3 conditions d’entrée (pour le LONG)(pour le SHORT c’est l’inverse) :
-
- – un cross over de la macdLine au dessus de la signalLine du MACD
-
- – ce croisement a lieu sous le niveau 0 du MACD
- – le prix (close) est au dessus de la 200 EMA
– Voilà comment je gère le money management :
-
- – Je simule le backtest avec un capital initial de 1000 (je ne fixe pas la monnaie => “currency=currency.NONE”)
-
- – Ma SL est placé au lowest close des 10 dernières bougies
-
- – Mon TP est placé à 1.5 fois la SL (possible de modifier grâce à une input)
-
- – Pour chaque trade je risque 1% de mon équité actuelle (possible de modifier grâce à une input) ce qui veut dire qu’avec 1000 au départ je
- risque 10 par trade. Autrement dit, si je perds, je perds 10 et si je gagne, je gagne 15.
– J’affiche la SL et le TP
– J’ai aussi ajouté des inputs pour modifier de quand à quand se passe le backtest
Voilà pour la strategie !
Petite demande d’amélioration (seulement si facile/évident) :
Comme vous l’avez remarquez au niveau du money management, je n’ai pas d’unité par défaut (alors que je voudrais bien travaillé avec des euros). L’unité utilisée est celle de la seconde paire Forex.
Sauf que si je veux travailler avec des euros, il me faut convertir la taille de la position en euros.
Je n’ai pas réussi à le faire en Pinescript, donc si vous avez une solution, je suis preneur !Enfin une dernière petite question : Est il possible de backtester le script sur plusieurs paires Forex en même temps ?
Voilà, je vous remercie énormément en avance ! 🙂
PS : Si vous avez des questions n’hésitez pas
07/30/2020 at 8:49 AM #14043607/30/2020 at 11:08 AM #14045107/30/2020 at 11:56 AM #14045507/30/2020 at 1:00 PM #14046207/30/2020 at 11:41 PM #140526Salut j’ai repris mon code Pinescript et j’ai quasiment réussi à le convertir, j’ai juste 2 points à éclaircir.
Tout d’abord voici le code ProBacktest (que les LONG, je me débrouillerais pour les SHORT) :
STRATEGIE MACD1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162// Définition des paramètres du codeDEFPARAM CumulateOrders = FalseDEFPARAM NoCashUpdate = True// ============================================================================================================ //// =============================================INDICATEURS==================================================== //// ============================================================================================================ //macdLigne = MACDline[12,26,9](close)signalLigne = MACDSignal[12,26,9](close)ema200 = ExponentialAverage[200](close)// ============================================================================================================ //// =========================================LONG POSITIONS===================================================== //// ============================================================================================================ //// LONG CONDITIONSlongCondition1 = (macdLigne CROSSES OVER signalLigne)longCondition2 = (macdLigne < 0) AND (signalLigne < 0)longCondition3 = (close > ema200)longCondition = longCondition1 AND longCondition2 AND longCondition3// SET LA STOPLOSSIF longCondition THENlongSL = Lowest[10](close)[1]ELSElongSL = longSL[1]ENDIF// SET LE TAKE PROFITlongEntryPrice = closelongTailleSL = ABS(longEntryPrice - longSL)IF longCondition THENlongTP = close + (1.5 * longTailleSL)ELSElongTP = longTP[1]ENDIF// TODO : REGLER LA TAILLE DE LA POSITION// DÉCLENCHER LE TRADEIF longCondition THENBUY 1 SHARES AT MARKETENDIF// Stops et objectifsIF longCondition THENSET STOP $LOSS 15SET TARGET $PROFIT 10ENDIF// AFFICHER SL ET TPIF ONMARKET THENlongPlotSL = longSLlongPlotTP = longTPELSElongPlotSL = 0longPlotTP = 0ENDIFGRAPH longPlotSL COLOURED(255,82,82) AS "LONG SL"GRAPH longPlotTP COLOURED(65,140,71) AS "LONG TP"Voilà les 2 questions :
- Comment afficher les SL et TP sur mon graph de prix (comme sur ma PJ) ? Car les RETURN ne fonctionnent pas
- Comment régler la taille de la position ? Je voudrais que ma SL représente 1% de mon capital soit 10$/€. Et mon TP étant 1.5xSL alors il vaut 15$/€. Autrement pour chaque trade perdant, je perds 10$/€ et pour chaque trade gagnant, je gagne 15$/€.
Merci !
07/31/2020 at 1:02 PM #140549EDIT : Je me rapproche avec ce code mais les questions demeurent présentes :
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172// Définition des paramètres du codeDEFPARAM CumulateOrders = FalseDEFPARAM NoCashUpdate = True// ============================================================================================================ //// =============================================INDICATEURS===================================================== //// ============================================================================================================ //macdLigne = MACDline[12,26,9](close)signalLigne = MACDSignal[12,26,9](close)ema200 = ExponentialAverage[200](close)// ============================================================================================================ //// ===========================================MONEY MANGEMENT================================================== //// ============================================================================================================ //capital = 1000pourcentageRisk = 0.01equity = capital + StrategyProfitrisk = round(equity*pourcentageRisk)// ============================================================================================================ //// =========================================LONG POSITIONS===================================================== //// ============================================================================================================ //// LONG CONDITIONSlongCondition1 = (macdLigne CROSSES OVER signalLigne)longCondition2 = (macdLigne < 0) AND (signalLigne < 0)longCondition3 = (close > ema200)longCondition = longCondition1 AND longCondition2 AND longCondition3// SET LA STOPLOSSIF longCondition THENlongSL = Lowest[10](close)[1]ELSElongSL = longSL[1]ENDIF// SET LE TAKE PROFITlongEntryPrice = closelongTailleSL = ABS(longEntryPrice - longSL)IF longCondition THENlongTP = close + (1.5 * longTailleSL)ELSElongTP = longTP[1]ENDIF// REGLER LA TAILLE DE LA POSITIONlongPositionSize = abs(round((risk/longSL)/PointValue)*pipsize)// STRATEGY ENTRYIF longCondition thenBUY longPositionSize CONTRACTS AT MARKETENDIF// STRATEGY EXITIF longCondition THENSET STOP LOSS longSLSET TARGET PROFIT longTPENDIF// AFFICHER SL ET TPIF ONMARKET THENlongPlotSL = longSLlongPlotTP = longTPELSElongPlotSL = 0longPlotTP = 0ENDIFGRAPH longPlotSL COLOURED(255,82,82) AS "LONG SL"GRAPH longPlotTP COLOURED(65,140,71) AS "LONG TP" -
-
AuthorPosts
Find exclusive trading pro-tools on