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 ?
Il faut que tu t’inspires d’un de ces deux liens :
Strategy as indicator to overcome limits of tick by tick
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)
Bonjour 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
je peux envoyer une suggestion à ProRealTime
C’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 !
Bonjour 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) ?
je 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
Je 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…
For i = 0 to 8 do
For j = 0 to 8 do
If $LastEntryIndex[i*9+j] = Barindex-1 then
$LastEntryPrice[i*9+j] = Open
Endif
Next
Next
Et en fin de code actuel, il faut ajouter ceci :
For i = 0 to 8 do
For j = 0 to 8 do
IsOnMarket = $OnMarket[i*9+j]
EntryPrice = $LastEntryPrice[i*9+j]
PosSize = $LastPosSize[i*9+j]
Gains = $Gains[i*9+j]
If IsOnMarket = 0 then
SignalAchat = (time>=091000 and time<170000) and close<(close[20+i*10]) and stopa=0
SignalVente = (time>=091000 and time<170000) and close<(close[20+j*10]) and stopa=0
If SignalAchat or SignalVente then
$LastEntryIndex[i*9+j] = Barindex
$LastPosSize[i*9+j] = n // Aproximation
$OnMarket[i*9+j] = SignalAchat - SignalVente
Endif
Elsif IsOnMarket = 1 then
If close >= EntryPrice+5 then
profits = 5*PosSize
$Gains[i*9+j] = Gains + profits
$OnMarket[i*9+j] = 0
Elsif close < EntryPrice-38 then
pertes = 38*PosSize
$Gains[i*9+j] = Gains + pertes
$OnMarket[i*9+j] = 0
Endif
Elsif IsOnMarket = -1 then
If close <= EntryPrice-5 then
profits = 5*PosSize
$Gains[i*9+j] = Gains + profits
$OnMarket[i*9+j] = 0
Elsif close > EntryPrice+38 then
pertes = 38*PosSize
$Gains[i*9+j] = Gains - pertes
$OnMarket[i*9+j] = 0
Endif
Endif
Next
Next
Ces 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ées
ok 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+