Bonjour à tous,
Je souhaite écrire un programme, à mon avis tout simple, me permettant de faire acheter par la machine 1 contrat d’indice tous les jours entre 20h30 et 21h00 dans les conditions suivantes (sachant que l’unité de temps de trading (timeframe) est de 30mn):
- la bougie précédente, entre 20h00 et 20h30 doit être verte
- la bougie précédente cette dernière, donc entre 19h30 et 20h00, doit être verte également
- L’indicateur stochastics (5.3.3) doit se situer en zone inférieure ou intermédiaire durant les 2 bougies de condition, c’est à dire inférieur à 80 entre 19h30 et 20h30.
CI-dessous le programme que j’ai écrit, qui apparemment ne comporte pas de faute de syntaxe, mais qui ne tourne pas
Un très grand merci si vous pouvez m’aider
Daniel
Defparam Cumulateorders=false
Defparam Flatbefore = 203000
Defparam Flatafter = 210000
//Conditions
c1 = close [1] > open [1]
c2 = close [2] > open [2]
c3 = Time > 203000 AND TIME < 210000
IF NOT LongOnMarket AND c1 AND c2 AND c3 THEN
BUY 1 SHARE AT MARKET
ENDIF
IF TRADEINDEX (0) > 1 THEN
SELL AT MARKET
ENDIF
sur quel UT est il utilisé
Bonjour Fifi, merci de votre réponse: L’UT utilisé est 30mn, je l’ai précisé dans la 1ère phrase de mon message.
a oui ,pas vu
a la place de time mettre opentime
et comme c’est du 30 min mettre opentime>=203000 and opentime<=210000
Super, merci Fifi, là il est trop tard, mais demain je vais corriger ça et voir ce que ça donne. Je vous tiens au courant bien sûr. Encore merci !
Hélas, avec opentime au lieu de time, ça ne marche pas plus, voici une copie d’écran du résultat (mon programme s’appelle E.L)
J’ai mis un capital de départ de 20.000€ et essayé de faire tourner le modèle avec le Dow Jones: rien ! Pas un trade.
Au fait est ce que le 1 signifie bien la bougie précédente, 2 la bougie encore précédente, et 0 la bougie encours ?
enlevé C3 il serre a rien
Hola Aquí lo tienes
Defparam Cumulateorders=false
Defparam Flatbefore = 203000
Defparam Flatafter = 210000
//Conditions
c1 = close [1] > open [1]
c2 = close [2] > open [2]
c3 = Stochasticd[5,3,3](close) < 80
if time >=203000 and time <=210000 then
IF NOT LongOnMarket AND c1 AND c2 AND c3 and c3[1] THEN
BUY 1 SHARE AT MARKET
ENDIF
endif
Bonjour Ivan,
un grand merci pour ce retour et merci d’avoir inclus la 3è condition, ce qui n’avait pas encore été fait !
Malheureusement quand je back teste, j’ai encore un problème au niveau du stochastics, tel que vous l’avez rédigé.
Ci-dessous le blocage enregistré:
Bonjour, j'imagine que c'est parce que vous disposez d'une ancienne version de PRT. Dans la V11, la fonction Stochasticd[5,3,3](close) n'était pas stockée. Dans ce cas vous devrez programmer la ligne K puis la ligne D.
lineK = Stochastic[5,3](close)
lineD = average[3](linek)
Bonjour Ivan, encore merci de votre dernier retour.
En fait, je n’ai même pas la version PRT 11 mais 10.4 !
Alors, j’ai repris vos 2 lignes 1 et 2 et je les ai collées dans le programme entre la ligne 7 et la ligne 8, c’est à dire avant l’énoncé de la condition c3 mais il ne comprend pas. J’ai enlevé les chiffres 1 et 2 au début de chaque ligne mais ça bloque quand-même. Voyez la capture d’écran ci-dessous.
Ivan,
Par ailleurs, j’ai un gros problème de cohérence entre les bougies 30mn de PRT et celles de la plate forme IG Markets que j’utilise pour passer mes trades.
En fait, j’ai l’impression qu’il y a un décalage de 2 bougies de 30mn entre les 2 plates-formes (soit une une heure d’écart)
c’est à dire que PRT exécute mes trades avec 2 bougies de retard. Voyez la copie d’écran ci dessous
Vous voyez que dans la liste des trades back testés par PRT, il a exécuté celui du 19 mars en achetant à 39 107,5 pour revendre à 39 103,7, ce qui a généré une perte de 4 ticks, alors qu’en fait la vraie bougie à prendre en compte était celle d’IG markets où on achetait à 39 038 pour revendre à 39 109.5, d’où un gain de 67,5 ticks.
Sur les graphes, on reconnait bien les mêmes bougies. C’est juste celles où ont été exécuté les trades qui ne colle pas.
Ce qui est très embêtant car cela fausse complètement les résultats du back test !
J’ai essayé de changer les fuseaux horaires sur PRT mais ça ne marche pas. Il ne prend plus les mêmes trades, et ça devient n’importe quoi…!
Cela vous donne une erreur car vous n'utilisez pas les lignes programmées. Si vous souhaitez que seul le stochastique soit inférieur à 80, vous pouvez procéder ainsi :
Defparam Flatafter = 210000
//Conditions
c1 = close [1] > open [1]
c2 = close [2] > open [2]
c3 = Stochastic[5,3](close) < 80
if time >=203000 and time <=210000 then
IF NOT LongOnMarket AND c1 AND c2 AND c3 and c3[1] THEN
BUY 1 SHARE AT MARKET
ENDIF
endif
Si au lieu du stochastique vous souhaitez que le signal soit celui ci-dessous alors :
Defparam Cumulateorders = faux
Defparam Flatavant = 203000
Defparam Flataprès = 210000
//Conditions
c1 = fermer[1] > ouvrir[1]
c2 = fermer[2] > ouvrir[2]
lineK = Stochastique[5,3](fermer)
lineD = moyenne[3](linek)
c3 = ligneD < 80
si temps >=203000 et temps <=210000 alors
SI NON LongOnMarket ET c1 ET c2 ET c3 et c3[1] ALORS
ACHETER 1 ACTION AU MARCHÉ
FIN SI
fin si
Pour cela, mieux vaut déposer un incident depuis la plateforme elle-même. La réponse sera plus agile.