ProOrder – Ordres annulés après 1 minute
Forums › ProRealTime forum Français › Support ProOrder › ProOrder – Ordres annulés après 1 minute
- This topic has 19 replies, 3 voices, and was last updated 4 years ago by Khaled.
-
-
08/06/2020 at 4:23 PM #141019
Bonjour,
J’ai légèrement adapté le code ci-dessous d’un post que j’ai trouvé sur prorealcode.com (Merci à l’auteur). J’essaye d’adapter les paramètres sur le DAX M15 en CFD (1€) et ça marche bien en Backtest (aucun message d’erreur, résultats généralement identiques après multiples tests). Par contre, une fois exécuté dans le Trading en réel, l’algorithme est régulièrement arrêté après 1 minute et je reçois les messages d’erreur ci-dessous.
Quelqu’un peut-il m’aider à voir pourquoi ce système s’arrête après une minute?
Merci
1234567891011121314151617181920212223242526272829303132Defparam cumulateorders = FALSETIMEFRAME(15 minute)N = 1IF TIME = 080000 THENH1 = HIGHEST[2](HIGH)B1 = LOWEST[2](LOW)AMP = H1 – B1LONG = 0SHORT = 0ENDIFIF TIME >= 080000 AND TIME <= 220000 THENIF NOT LongOnMarket AND LONG=0 THENBUY N CONTRACTS AT H1 STOPENDIFIF NOT ShortOnMarket AND SHORT=0 THENSELLSHORT N CONTRACTS AT B1 STOPENDIFENDIFIF LongOnMarket THENLONG = 1ENDIFIF ShortOnMarket THENSHORT = 1ENDIF08/07/2020 at 7:46 AM #141033Avec un compte à risque limité, il n’est pas possible d’être long et short à la fois sur le même instrument, hors c’est ce que tente de faire le robot dès son lancement. Suite à une répétition de rejets d’ordres la stratégie s’arrête automatiquement, c’est une sécurité de la plateforme.
08/07/2020 at 7:50 AM #141034>> Pour la clarté des messages sur les forums de ProRealCode, merci d’utiliser le bouton “insert PRT code” pour séparer la partie texte de la partie code, merci ! <<
08/07/2020 at 9:42 AM #141042Merci Roberto. Y a t il une instruction code a ajouter pour demander au Robot de ne pas envoyer un ordre dans le sens opposé s’il y a déjà un ordre en cours ou une position position ouverte? Ensuite, le module AutoTrading ne me permet pas de lancer des ordres avec un nombre de Contrats qui n’est pas entier c’est à dire avec décimales (exemple 0.5 ou 1.25), alors ça marche sur le Backtest. Y a t il une façon de faire des fractions de Contrats?
Merci
08/07/2020 at 12:14 PM #14106208/07/2020 at 2:46 PM #141077Je n’ai pas de compte à risque limité, mais tu pourrais essayer comme ceci : cette version du code ne tentera pas de poser un ordre STOP si aucun ordre n’est au marché, puisque je pense que c’est le but à la base de cette stratégie de breakout de l’Open.
12345678910111213141516171819202122232425262728293031323334Defparam cumulateorders = FALSETIMEFRAME(15 minute)N = 1IF TIME = 080000 THENH1 = HIGHEST[2](HIGH)B1 = LOWEST[2](LOW)AMP = H1 – B1LONG = 0SHORT = 0ENDIFIF TIME >= 080000 AND TIME <= 220000 THENif not onmarket thenIF LONG=0 THENBUY N CONTRACTS AT H1 STOPENDIFIF SHORT=0 THENSELLSHORT N CONTRACTS AT B1 STOPENDIFendifENDIFIF LongOnMarket THENLONG = 1ENDIFIF ShortOnMarket THENSHORT = 1ENDIF08/07/2020 at 5:52 PM #141103Merci mille fois Nicolas, dernière question, pourquoi ProOrder AutoTrading n’accepte que des nombres entiers pour un ordre. Quand je lance le programme et je saisis 0.5 ou 1.25 (point ou virgule pareil), le système ne l’accepte pas.
08/07/2020 at 9:03 PM #14111908/07/2020 at 9:36 PM #141124Vous indiquez également 1, voire 99. Ce qui compte, c'est le plus bas des deux, donc si ProOrder accepte 0,5, pas plus de 0,5 lot sera acheté.
08/08/2020 at 9:18 PM #14117308/12/2020 at 10:10 AM #141471Bonjour Nicolas, Roberto,
J’ai un petit soucis de cohérence entre backtest et trading réel. Peut-être que vous pourriez m’aider. Je prends l’exemple de la journée du 11/08/2020, ci-joint copies d’écran de la liste des ordres en backtest et copie d’écran des vraies ordres réels. Sur le backtest, on peut voir pour la journée du 11/08: 4 transactions qui ont une somme des résultats positives (gain). Sur le réel, on peut voir qu’il y a eu 10 transactions qui aboutissent à une perte.
A votre avis, d’où vient cette écart dans les signaux et de résultats? comment la corriger?
Merci de votre aide.
DAX M15 Breakout12345678910111213141516171819202122232425262728293031323334353637383940414243Defparam cumulateorders = FALSETIMEFRAME(15 minute)N = 1IF TIME = 080000 THENH1 = HIGHEST[2](HIGH)B1 = LOWEST[2](LOW)AMP = H1 - B1LONG = 0SHORT = 0ENDIFIF CurrentDayOfWeek > 0 AND CurrentDayOfWeek < 6 THENIF TIME >= 080000 AND TIME <= 220000 THENIF NOT ONMARKET THENIF LONG=0 THENBUY N CONTRACTS AT H1 STOP//SET STOP $LOSS 50*NSET STOP %LOSS 0.65//SET STOP pLOSS (AMP*.65)SET TARGET pprofit (AMP*.85)ENDIFENDIFIF NOT ONMARKET THENIF SHORT=0 THENSELLSHORT N CONTRACTS AT B1 STOPSET STOP $LOSS 20*N//SET STOP pLOSS (AMP*.6)SET TARGET pprofit (AMP*1)//SET TARGET %PROFIT 1ENDIFENDIFENDIFENDIFIF LongOnMarket THENLONG = 1ENDIFIF ShortOnMarket THENSHORT = 1ENDIF08/12/2020 at 11:48 AM #141479Pour commencer, l’instruction TIMEFRAME n’est pas utile dans le code si tu lances la stratégie en 15 minutes.
Les Backtests sont ils fait en mode tick par tick et as-tu ajouter le spread ?
L’écart au STOP n’est pas testé dans le backtest, peut être que les ordres sont ouverts plus loin pour respecter cette imposition du courtier ?
Il faut commencer par vérifier les niveaux que tu calcules en H1 et B1 et les comparer aux valeurs d’entrées de tes ordres. Si il y a un gros décalage, alors surement que cela te paraîtra plus clair.
08/13/2020 at 1:17 PM #141514Bonjour Nicolas, merci pour ta disponibilité.
Oui, les backtest sont faits en mode Tick par Tick.
Je suis chez IG CFD (risque limité). Le Stop minimum du Courtier est de 10 pts (soit 10€). Le Stop minimum dans mon système est de 20 pts. Donc, je respecte cette condition.
Pour le Spread, j’atteins ici un peu mon seuil d’incompétence. Je vais prendre un exemple: DAX Contrat Cash (1€) Achat 13.030 et Vente 13.028, donc Spread=2. pour un contract mon exposition est de 1303€.
Dans mon Algo, dois-je spécifier Spread de 2 ou (2*10)=20?
Dois-je ajouter le Spread uniquement pour le Backtest ou l’ajouter aussi pour le Trading en réel?
Merci encore.
08/13/2020 at 3:34 PM #141524Par défaut il n’y a pas de spread dans les backtests, il faut le renseigner dans la case dédiée. Pour savoir la taille du spread sur le DAX chez IG, il faut regarder sur leur site web.
Il n’y a pas de stop minimum dans ton code, c’est en fait la distance à l’ordre conditionnel que le courtier impose. Soit il faut que les seuils de prix H1 et B1 calculés dans ton programme soit à cette distance minimum vis à vis du prix actuel pour que l’ordre soit posé à cet endroit précis, sinon il sera reculé. Dans les backtests cela n’est pas simulé puisque propre au courtier.
08/13/2020 at 5:53 PM #141535Nicolas, je ne sais pas comment te remercier. C’est génial que puisse partager ton savoir et y consacrer du temps pour partager avec les novices comme moi.
Y-a-t-il un moyen de dire en langage PRT d’annuler un ordre qui n’a pas été exécuté après x minutes?
Merci infiniment.
Khaled
-
AuthorPosts