Bonjour à tous et à toutes!
Voilà, hier j’ai terminé tard de coder ce petit bout de stratégie sur proorder, je le lance pour qu’il opère aujourd’hui, je rentre et là rien. Je pense que les conditions n’était pas présentes, je backtest sur la journée et effectivement aucun ordres. Je me dis que je vais tester (déjà fait mais bon j’ai eu l’envie de le refaire) sur une durée supérieure. Et là que vois-je?? Des ordres passés aujourd’hui…!!! J’ai tenté d’isoler les variables pour savoir laquelle pouvait faire défaut mais je ne trouve pas…!
Pourriez-vous m’aider à solutionner ce problème qui m’arrache les cheveux! 😀
Merci!!!
DEFPARAM CumulateOrders = TRUE
// Empêche le système de placer des ordres pour entrer sur le marché ou augmenter la taille d'une position avant l'heure spécifiée
noEntryBeforeTime = 090000
timeEnterBefore = time >= noEntryBeforeTime
// Empêche le système de placer des ordres pour entrer sur le marché ou augmenter la taille d'une position après l'heure spécifiée
noEntryAfterTime = 173000
timeEnterAfter = time < noEntryAfterTime
/////////
// 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 = 090000
//// Annule tous les ordres en attente et ferme toutes les positions à l'heure "FLATAFTER"
//DEFPARAM FLATAFTER = 173000
indicator1 = Average[10300](close)
MML= indicator1>indicator1[1]
IF MML THEN
//Heikin-Ashi
xClose = (Open+High+Low+Close)/4
if(barindex>2) then
xOpen = (xOpen[1] + xClose[1])/2
endif
Green = xClose>xOpen
Period=30 //
inner = 2*weightedaverage[ round( Period/2 ) ](xclose)-weightedaverage[Period](xclose)
MMHULL=weightedaverage[ round( sqrt(Period) ) ]( inner )
macross = xclose crosses over MMHULL
if green[1] and timeEnterBefore AND timeEnterAfter AND macross and green then
buy at market
endif
set target pprofit 5// EN 1 MIN 9 7
set stop ploss 185// EN 1 MIN 11 31
ENDIF
Apparement cela viendrait de ma MM de 10300… Dès que je mets plus de 7 jours de backtest j’ai des résultats. Ma question est, faut-il que je laisse tourner mon algo pendant un peu plus de 7 jours pour qu’il “s’active”? (10300/60/24=7,15)?
Ya t-il un moyen de lui faire intégrer l’historique?
Pour calculer correctement cette moyenne mobile, il faut en effet à minima 10300 bougies. Pour vérifier à partir de quel moment elle commence à se calculer dans le backtest, tu peux faire un simple :
[scode]GRAPH indicator1[/scode]
Quand quelque-chose semble bizarre, il faut absolument GRAPHer ses variables, c’est la celle et unique façon de débugger, utilisez le ! Je ne le dirai jamais assez 😉
On pourrait aussi ajouter un pré chargement de données avec cette instruction à placer en tête de code :
[scode]defparam preloadbars=10000[/scode]
10.000 unités étant le maximum possible à être appelé, il faudrait donc en toute logique attendre 300 bars de plus pour que la moyenne mobile se calcule.
Bons tests !
PS/ j’ai changé le titre du sujet, en français et en lien avec le sujet, merci.
Merci Nicolas! Je me doutais qu’il fallait que je preload des barres mais je pensais que le maximum était de 5000!
Que penses tu de cette stratégie d’ailleurs?
Que penses tu de cette stratégie d’ailleurs?
Que le risque reward/ratio d’un ordre est de 0.02 (1/37), soit 37 ordres gagnants successifs nécessaires pour rattraper une perte.