Bonjour, je possède un compte IG à risque limité et la V10.3 Premium.
Je constate des différences entre l’exécution en réel et le backtest de mon algo.
Le breakeven s’active bien en réel mais pas dans le backtest ce qui fausse les résultats.
Voici le code:
if longonmarket and BEactivated = 1 then
be1 = tradeprice <> 0 and positionperf*100 > 0.50 and positionperf*100 < 1.00
if be1 then
sell at tradeprice * (1 + 0.05 / 100) stop
endif
endif
Quelle serait la solution à ce problème ?
Bonjour, merci de lire et appliquer les règles de publication du cadre jaune en bas de page, ici en particulier l’usage du bouton “insert PRT code”, cf image attachée si besoin de le localiser pour la première fois. Pas besoin de reposter pour cette fois, je vais reformater le code dans le message ci-dessus dans un instant.
Voir la liste des ordres rejetés, le niveau de stop demandé doit être trop près du prix actuel, le courtier le rejette.
Le fonctionnement en réel correspond exactement à ce que je souhaite : le stop est réajusté au dessus du tradeprice (c’est parfait, aucun ordre rejeté par le broker).
Par contre le backtest ne prend pas en compte la modification du stop et la position en backtest devrait s’arrêter au stop au lieu de “passer à travers” comme s’il n’y en avait pas. Pour information j’ai mis un spread de 1.5 points dans le backtest et je suis sur l’Allemagne 30 (1€).
Ah pardon, je n’avais pas compris que c’était le backtest qui posait problème. Selon moi, la première chose à faire serait vérifier les niveaux de prix calculés avec un GRAPH.
Voici par exemple ce qui m’est arrivé il y a 2 semaines sur le France 40 (1€) avec un algo qui a placé un breakeven en live sur mon compte IG dès que la plus-value latente a dépassé 1% mais qui possède un backtest où la position repasse en négatif sans considération du stop placé, puis remonte largement en plus-value
ONCE BEactivated = 1
if longonmarket and BEactivated = 1 then
be1 = tradeprice <> 0 and positionperf*100 > 1.00 and positionperf*100 < 2.00
if be1 then
sell at tradeprice * (1 + 0.05 / 100) stop
endif
endif
Vous trouverez ci-joint des copies d’écran:
- backtest de l’algo (ouverture 4763.1, plus haut 4865,9 soit environ 2.1% de PV max latente)
- rapport détaillé de la position IG clôturée automatiquement au stop à 0.05% sur la mèche basse
- copie d’écran de l’appli IG de mon smartphone indiquant le réajustement du stop à 17h20 (clôture bougie de 17h15 = 4811,0 avec une PV latente de 1% comme prévu dans le code)
J’ai fait une optimisation des paramètres sur une variable maperf avec un pas de 0.01:
if longonmarket and BEactivated = 1 then
be1 = tradeprice <> 0 and positionperf*100 > maperf and positionperf*100 < 1.00
if be1 then
sell at tradeprice * (1 + 0.05 / 100) stop
endif
endif
Voici en copie d’écran le résultat de l’optimisation des paramètres, en réel il aurait fallu une variable maperf au moins égale à (4865,9/4763.1-1)*100 = 2,1582 pour le breakeven ne s’active pas alors que l’optimisation montre qu’avec maperf > 0,30 cela aurait suffit ce qui est impossible car le breakeven s’est activé en réel à 1,00. Quelque chose m’échappe, je suis perdu, je dois mal m’y prendre ou bien il s’agit d’un bug, pourriez-vous regarder SVP ?