ajustement automatique variable walkforward
Forums › ProRealTime forum Français › Support ProOrder › ajustement automatique variable walkforward
- This topic has 8 replies, 3 voices, and was last updated 12 months ago by WE ARE SOCIETY.
-
-
11/23/2023 at 7:33 AM #224184
Bonjour @Nicolas,
J’ai posté une stratégie dans “Library” et je souhaiterai l’automatiser entièrement, à savoir éviter de faire un walkforward régulièrement pour optimiser les variables
Par exemple, chaque jour à minuit, un walkforward automatique se lance pour optimiser x et y entre 20 et 100 et les variables prennent les nouvelles valeurs
Ainsi, on pourrait backtester avec des variables différentes au quotidien au lieu de variable constante
Est-ce techniquement possible ?
11/23/2023 at 7:52 PM #224213Il faut que tu t’inspires d’un de ces deux liens :
https://www.prorealcode.com/topic/strategy-as-indicator-to-overcome-limits-of-tick-by-tick/#post-106584
https://www.prorealcode.com/blog/learning/display-profit-loss-price-chart-custom-indicator/mais au lieu d’utiliser une variable tradeprofit ou flag ou equity, il faut transformer ces variables en tableaux de dimension 80×80 (ou 100×100) pour simplifier. La position dans la tableau pour chaque valeur de x et y est $equity[x+y*80]. De même pour tous les autres tableaux dont tu as besoin…
A la fin de la journée il faut chercher la valeur la plus grande dans le tableau $equity, en déduire son index dans le tableau, puis en déduire x et y avec la formule x = index mod 80 et y = round(index/80) (ou 100 au lieu de 80 pour se simplifier la vie)
11/24/2023 at 1:45 PM #224253Bonjour LucasBest, pour être honnête je n’ai rien compris de ce que tu m’as dit
Je connais le principe des tableaux de valeurs Array mais c’est tout
De là à reprogrammer un backtest qui sort les valeurs c’est autre chose
Je pense que c’est le travail de @Nicolas et de ses équipes de faire évoluer la plateforme
11/24/2023 at 1:51 PM #22425411/24/2023 at 2:49 PM #224256C’est fou Jean Fx, tu sors tel un mouton de nulle part pour te proposer comme assistant secrétaire ?
T’inquiète pas tout le monde est assez grand pour proposer des choses à prorealtime
Par contre, je vois que tu ne partages aucune stratégie……….. méchant mouton !
11/24/2023 at 10:16 PM #224274Bonjour LucasBest, pour être honnête je n’ai rien compris de ce que tu m’as dit
Je connais le principe des tableaux de valeurs Array mais c’est tout
De là à reprogrammer un backtest qui sort les valeurs c’est autre chose
Si j’ai un peu de temps ce week end et si personne ne s’y colle, je vais essayer de le faire…
Il faut que le walkforward automatique se fasse sur combien de bougies? 200.000 ou seulement les 8640 dernières bougies (8640 bougies de 10sec chaque 24 heures) ?11/25/2023 at 9:40 AM #224280je pense que sur 24 heures, ça va suroptimiser le résultat
mais sur 50 000 ce serait bien (environ une semaine)
ça permettrait d’intégrer les fluctuations de la semaine dans nos variables
11/27/2023 at 8:14 PM #224411Je n’ai pas eu trop de temps (et la motivation car je ne pense pas que la stratégie soit bonne, ne serait ce que parce qu’une bonne stratégie doit avoir un target au moins 3 fois supérieur au stop-loss…) pour me pencher sur le code, mais je t’ai fait un bout de code pour que tu puisses avoir une idée de ce qu’il faudrait faire…
En début de code TF 10sec1234567For i = 0 to 8 doFor j = 0 to 8 doIf $LastEntryIndex[i*9+j] = Barindex-1 then$LastEntryPrice[i*9+j] = OpenEndifNextNextEt en fin de code actuel, il faut ajouter ceci :
A ajouter à la fin du code12345678910111213141516171819202122232425262728293031323334353637383940414243444546For i = 0 to 8 doFor j = 0 to 8 doIsOnMarket = $OnMarket[i*9+j]EntryPrice = $LastEntryPrice[i*9+j]PosSize = $LastPosSize[i*9+j]Gains = $Gains[i*9+j]If IsOnMarket = 0 thenSignalAchat = (time>=091000 and time<170000) and close<(close[20+i*10]) and stopa=0SignalVente = (time>=091000 and time<170000) and close<(close[20+j*10]) and stopa=0If SignalAchat or SignalVente then$LastEntryIndex[i*9+j] = Barindex$LastPosSize[i*9+j] = n // Aproximation$OnMarket[i*9+j] = SignalAchat - SignalVenteEndifElsif IsOnMarket = 1 thenIf close >= EntryPrice+5 thenprofits = 5*PosSize$Gains[i*9+j] = Gains + profits$OnMarket[i*9+j] = 0Elsif close < EntryPrice-38 thenpertes = 38*PosSize$Gains[i*9+j] = Gains + pertes$OnMarket[i*9+j] = 0EndifElsif IsOnMarket = -1 thenIf close <= EntryPrice-5 thenprofits = 5*PosSize$Gains[i*9+j] = Gains + profits$OnMarket[i*9+j] = 0Elsif close > EntryPrice+38 thenpertes = 38*PosSize$Gains[i*9+j] = Gains - pertes$OnMarket[i*9+j] = 0EndifEndifNextNextCes deux bouts de codes ne servent qu’à mettre en place les données dans les tableaux.
In fine, le plus grand nombre contenu dans le tableau $Gains[0..à..80] correspondra au duo gagnant recherché.
Retrouver ce plus grand gain et donc l’index correspondant du tableau permettra de connaitre les 2 valeurs recherchées11/27/2023 at 9:04 PM #224412ok sympa, je vois ou tu veux en venir, je vais faire des essais
merci pour ce code auquel je n’aurai pas penser
je suis assez d’accord avec toi que la stratégie est souvent + viable dans le temps quand les take profit sont > stoploss
mais sur cette stratégie, je souhaitais maximiser le nombre de transactions type scalping
mais en ce moment comme le cac40 est perché au + haut et qu’il ne veut pas redescendre (un peu au moment où j’écris), les transactions se font rare car le marché est monotendance
un grand merci
a+
-
AuthorPosts
Find exclusive trading pro-tools on