Codage pour Backtest croisement de moyennes mobiles et breakeven
Forums › ProRealTime forum Français › Support ProOrder › Codage pour Backtest croisement de moyennes mobiles et breakeven
- This topic has 4 replies, 2 voices, and was last updated 3 years ago by maxlys.
-
-
03/29/2021 at 12:12 PM #165629
Bonjour a tous,
j’utilise un indicateur avec flèches (bleu pour achat et rouge pour vente) qui me spécifie mon passage d’ordre.
J’ai tenté de le backtester à la main mais sur plusieurs UT et actifs, cela est vraiment contraignants et très long.
Ne connaissant pas la programmation pour réaliser du backtet automatique, je fais appel à une âme charitable.
Dans ce code de backtest automatique j’aimerais avoir les variables suivantes :
TP fixe = x
Stop fixe = x
Et le top serait d’avoir un passage au breakeven a une valeur que je défini
Exemple
TP = 8 points
Stop = 8 points
Breakeven = 4 points
voici le code de mon indicateur et les conditions :
123456789101112131415161718Achat=0Vente=0MM20=exponentialaverage[20](close)MM50=exponentialaverage[50](close)MM80 = average[80](close)MM200 = average[200]//ACHATC1 = (MM20 CROSSES OVER MM50) and MM80 > MM200//VENTEC2 = (MM20 CROSSES UNDER MM50) and MM80 < MM200IF C1 thendrawarrowup(barindex, low-2*pipsize) coloured(0,0,255)ELSIF C2 Thendrawarrowdown(barindex, high+2*pipsize) coloured(255,0,0)EndifReturnMerci par avance de votre aide
03/29/2021 at 1:01 PM #16563203/29/2021 at 2:19 PM #165640Merci Nicolas.
Voici ce que j’ai fait avec l’assistant de création (ici le backtest est pourri mais on verras plus tard pour optimiser).
Je n’ai pas su trouver comment placer la fonction breakeven. Ici par exemple, j’ai mis un TP à 45 points, j’aimerais que lorsque nous arrivon a 20 points le stop remonte a BE.
Comment ajouter cette fonction ?
Merci
12345678910111213141516171819202122232425262728293031323334353637// Définition des paramètres du codeDEFPARAM CumulateOrders = False // Cumul des positions désactivé// Annule tous les ordres en attente et ferme toutes les positions à 0:00, puis empêche toute création d'ordre avant l'heure "FLATBEFORE".DEFPARAM FLATBEFORE = 091500// Annule tous les ordres en attente et ferme toutes les positions à l'heure "FLATAFTER"DEFPARAM FLATAFTER = 173000// Empêche le système de placer de nouveaux ordres sur les jours de la semaine spécifiésdaysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0// Conditions pour ouvrir une position acheteuseindicator1 = ExponentialAverage[20](close)indicator2 = ExponentialAverage[50](close)c1 = (indicator1 CROSSES OVER indicator2)indicator3 = Average[80](close)indicator4 = Average[200](close)c2 = (indicator3 > indicator4)IF (c1 AND c2) AND not daysForbiddenEntry THENBUY 1 CONTRACT AT MARKETENDIF// Conditions pour fermer une position acheteuseindicator5 = ExponentialAverage[20](close)indicator6 = ExponentialAverage[50](close)c3 = (indicator5 CROSSES UNDER indicator6)indicator7 = Average[80](close)indicator8 = Average[200](close)c4 = (indicator7 < indicator8)IF c3 AND c4 THENSELL AT MARKETENDIF// Stops et objectifsSET STOP pLOSS 30SET TARGET pPROFIT 4503/29/2021 at 2:58 PM #165644Pour ajouter un breakeven, voir cette fonction : https://www.prorealcode.com/blog/learning/breakeven-code-automated-trading-strategy/
Le code complet :
1234567891011121314151617181920212223242526272829startBreakeven = 30 //how much pips/points in gain to activate the breakeven function?PointsToKeep = 5 //how much pips/points to keep in profit above of below our entry price when the breakeven is activated (beware of spread)//reset the breakevenLevel when no trade are on marketIF NOT ONMARKET THENbreakevenLevel=0ENDIF// --- BUY SIDE ---//test if the price have moved favourably of "startBreakeven" points alreadyIF LONGONMARKET AND close-tradeprice(1)>=startBreakeven*pipsize THEN//calculate the breakevenLevelbreakevenLevel = tradeprice(1)+PointsToKeep*pipsizeENDIF//place the new stop orders on market at breakevenLevelIF breakevenLevel>0 THENSELL AT breakevenLevel STOPENDIF// --- end of BUY SIDE ---// --- SELL SIDE ---//test if the price have moved favourably of "startBreakeven" points alreadyIF SHORTONMARKET AND tradeprice(1)-close>=startBreakeven*pipsize THEN//calculate the breakevenLevelbreakevenLevel = tradeprice(1)-PointsToKeep*pipsizeENDIF//place the new stop orders on market at breakevenLevelIF breakevenLevel>0 THENEXITSHORT AT breakevenLevel STOPENDIF// --- end of SELL SIDE ---03/30/2021 at 6:48 AM #165702 -
AuthorPosts
Find exclusive trading pro-tools on