Achat/Vente suivant couleur indicateur
Forums › ProRealTime forum Français › Support ProOrder › Achat/Vente suivant couleur indicateur
- This topic has 13 replies, 2 voices, and was last updated 8 years ago by Matriciel.
-
-
08/25/2016 at 8:54 PM #1222808/26/2016 at 8:13 AM #12236
Bonjour, oui si cette couleur correspond à une variable que l’on peut tester dans le code. Ou sinon, il faudrait la créer pour la rendre exploitable par une stratégie de trading automatique.
De quel indicateur en particulier s’agit-il ?
08/26/2016 at 9:04 AM #12237Cela tombe bien que ce soit toi qui me réponde Nicolas car il s’agit d’un indicateur que tu as développé en partie (DSS Bressert Scalper Improved).
Tout d’abord, je voulais te remercier pour ton travail qui nous aide beaucoup.
Voilà, j’aimerais déclencher un achat lorsque ton indicateur se situe sous le niveau 20 et qu’il soit en phase ascendante pendant 2 bougies (DSS dans le vert). La couleur verte matérialisant la hausse dans mon paramétrage.
Merci beaucoup pour ton aide !
08/26/2016 at 10:31 AM #12238OK, donc tu fais référence à cet indicateur : http://www.prorealcode.com/prorealtime-indicators/dss-bressert-scalper-improved/
Je n’en suis pas l’auteur, je l’ai convertit depuis le code MT4.
L’indicateur est-il appelé dans ta stratégie depuis une fonction CALL ? Si oui pourrais-tu me poster le code pour utiliser les mêmes définitions de variables, merci.
08/26/2016 at 7:52 PM #12260Pour tout te dire, je débute dans le trading automatique car j’ai perdu pied dans le trading manuel ! Je ne maîtrise pas du tout la programmation sous PRT.
J’ai remarqué que lorsque je lançais un programme qui comportait la mention “Positionsize” en Probacktest elle fonctionnait mais pas en réel, sauf si je met “1” à la place, pourquoi ? Voir exemple ci-dessous :
IF Not SHORTONMARKET AND ShortCondition THEN
SELLSHORT Positionsize CONTRACT AT MARKET
ENDIFIF Not SHORTONMARKET AND ShortCondition THEN
SELLSHORT 1 CONTRACT AT MARKET
ENDIFMerci pour ta patience ! 🙂
08/26/2016 at 9:49 PM #12262Bien, positionsize n’est pas une instruction du langage prorealtime.
En réel le serveur du courtier refusera de lancer un trade de 0 volume et c’est ce que tu cherches à faire si tu ne définis pas sa valeur.
Positionsize est un libéllé de variable, je pense que tu en herites dans ton code à cause d’un copier/coller.
Tu pourras aussi bien faire :Chouxfleur=1
BUY Chouxfleur CONTRACT AT MARKET
Concernant le DSS, rappelle moi de m’en occuper dans les prochains jours.
08/28/2016 at 10:25 AM #1233108/28/2016 at 11:19 AM #12334Voilà comment faire pour tester ta condition acheteuse au sujet de l’indicateur DSS Bressert dont on a parlé plus haut:
12345678910// appel de l'indicateur et définition des 3 variables qu'il retournedss, lowlevel, highlevel = CALL "PRC_Bressert Scalper Improved"[8, 13, 2.6]// test des conditions pour un achat (sous le lowlevel et en phase ascendante pendant 2 bougies)buycondition = summation[2](dss<20 and dss>dss[1])=2// achat au marché si les conditions sont rempliesif not longonmarket and buycondition thenBUY 1 CONTRACT AT MARKETendifJ’ai commenté le code. Je n’ai pas testé, merci de me faire un retour. Bon Dimanche.
08/28/2016 at 9:42 PM #12349Voilà ce que j’ai pu faire (c’est vraiment un code de débutant !) :
12345678910111213141516171819202122232425262728293031323334353637383940414243444546// Définition des paramètres du codeDEFPARAM CumulateOrders = False // Cumul des positions désactivéDefparam flatafter = 180000// Conditions pour ouvrir une position acheteuse// appel de l'indicateur et définition des 3 variables qu'il retournedss, lowlevel, highlevel = CALL "DSS Bressert Scalper"// test des conditions pour un achat (sous le lowlevel et en phase ascendante pendant 2 bougies)buycondition = summation[2](dss<20 and dss>dss[1])=2buycondition = lowlevel[20]buycondition = highlevel[80]// achat au marché si les conditions sont rempliesif not longonmarket and buycondition and time > 080000 and time < 174500 thenBUY 1 CONTRACT AT MARKETendif// Conditions pour fermer une position acheteusesellcondition = summation[2](dss>80 and dss<dss[1])=2sellcondition = lowlevel[20]sellcondition = highlevel[80]IF time > 080000 and time < 174500 THENSELLSHORT AT MARKETENDIF// test des conditions pour une vente (au-dessus du highevel et en phase descendante pendant 2 bougies)sellcondition = summation[2](dss>80 and dss<dss[1])=2sellcondition = lowlevel[20]sellcondition = highlevel[80]// vente au marché si les conditions sont rempliesif not shortonmarket and sellcondition and time > 080000 and time < 174500 thenSELLSHORT 1 CONTRACT AT MARKETendif// Conditions pour fermer une position en vente à découvertbuycondition = summation[2](dss<20 and dss>dss[1])=2buycondition = lowlevel[20]buycondition = highlevel[80]IF time > 080000 and time < 174500 THENBUY AT MARKETENDIFCa fonctionne mais les gains et les pertes s’équilibrent. Ce code prends beaucoup trop de positions à mon goût ! 🙂
Merci encore de m’avoir aidé Nicolas.
08/29/2016 at 9:20 AM #12371Merci pour le retour de ta stratégie.
Il y a quelques énigmes pour moi dans ce que tu as écrit 🙂
Pourquoi tous ces ‘buycondition’ et ‘sellcondition’ dupliqués en testant le lowlevel et le highlevel 20 et 80 périodes en arrière? Les lignes syntaxées que la ligne 11 suffisent déjà à tester la condition que tu voulais en début du topic.
Ensuite, dés que tu achètes, tu vends immédiatement et inversement. Les trades n’ont pas le temps de “vivre” qu’ils sont déjà fermés 🙂
Tu devrais commencer par supprimer les lignes de conditions inutiles (buycondition et sellcondition, lignes 12/13 par exemple) et les tests de conditions de sorties, tu verras beaucoup plus claire dans le backtest ensuite et tu pourras voir que les achats clôturent naturellement les ordres de vente et inversement.
08/29/2016 at 12:46 PM #1238508/29/2016 at 9:29 PM #12420Voilà, mon code fonctionne très bien comme ça :
1234567891011121314151617181920212223242526272829303132333435363738// Définition des paramètres du codeDEFPARAM CumulateOrders = False // Cumul des positions désactivéDefparam flatafter = 180000// Conditions pour ouvrir une position acheteuse// appel de l'indicateur et définition des 3 variables qu'il retournedss, lowlevel, highlevel = CALL "DSS Bressert Scalper"// test des conditions pour un achat (sous le lowlevel et en phase ascendante pendant 2 bougies)buycondition = summation[2](dss<lowlevel[20] and dss>dss[1])=2// achat au marché si les conditions sont rempliesif not longonmarket and buycondition and time > 080000 and time < 174500 thenBUY 1 CONTRACT AT MARKETendif// Conditions pour fermer une position acheteusesellcondition = summation[2](dss>highlevel[80] and dss<dss[1])=2IF not shortonmarket and sellcondition and time > 080000 and time < 174500 THENSELLSHORT AT MARKETENDIF// test des conditions pour une vente (au-dessus du highevel et en phase descendante pendant 2 bougies)sellcondition = summation[2](dss>highlevel[80] and dss<dss[1])=2// vente au marché si les conditions sont rempliesif not shortonmarket and sellcondition and time > 080000 and time < 174500 thenSELLSHORT 1 CONTRACT AT MARKETendif// Conditions pour fermer une position en vente à découvertbuycondition = summation[2](dss<lowlevel[20] and dss>dss[1])=2IF not longonmarket and buycondition and time > 080000 and time < 174500 THENBUY AT MARKETENDIFMerci encore pour tes conseils Nicolas ! 🙂
08/30/2016 at 8:16 AM #12442De rien.
Si tu supprimes les lignes 25 à 38, tes résultats seront identiques. Car tes conditions de sorties sont les mêmes qui stimulent des entrées contraires et puisque un BUY ferme un SELLSHORT et vice-versa, ces lignes sont inutiles.
08/30/2016 at 8:22 AM #12443 -
AuthorPosts
Find exclusive trading pro-tools on