Renvoyer un terme “TEXTE” suivant indicateur et compter les termes “TEXTE”
Forums › ProRealTime forum Français › Support ProOrder › Renvoyer un terme “TEXTE” suivant indicateur et compter les termes “TEXTE”
- This topic has 5 replies, 2 voices, and was last updated 4 years ago by Kanamax.
-
-
11/15/2020 at 3:50 PM #150571
Bonjour,
J’aimerais savoir coder sur ProRealTime la stratégie suivante :
Premièrement, j’aimerais qu’en fonction de l’information chiffrée donnée par un indicateur, le code puisse renvoyer les termes « ACHAT », « VENTE » ou « NEUTRE ».
Exemple sur le RSI(14), si le RSI est > 55 renvoyer le mot « ACHAT », si < 45 renvoyer le mot « VENTE », si 45 < RSI < 55 renvoyer le mot « NEUTRE ».
Le but est de faire cela sur plusieurs indicateurs.
Deuxièmement, j’aimerais que le code puisse compter le nombre de mot « ACHAT », de « VENTE » et de « NEUTRE » puis de définir un ordre d’achat si le nombre de mots « ACHAT » est supérieur au nombre de mot « VENTE » et inversement.
L’ordre de sortie sera défini suivant un autre critère.Pouvez-vous me renseigner si ce style de logique est possible sous ProRealTime ? Et si oui m’indiquer les lignes de codes adéquates ?
Vous remerciant par avance de l’intérêt que vous porterez à mon questionnement.
11/16/2020 at 9:29 AM #150616En renvoyant des chiffres à la place des lettres, on obtient le même résultat, identifier le status d’une variable et ainsi pouvoir compter les occurrences.
123456789101112131415161718192021222324252627//si le RSI est > 55 renvoyer le mot « ACHAT », si < 45 renvoyer le mot « VENTE », si 45 < RSI < 55 renvoyer le mot « NEUTRE ».defparam cumulateorders=falsei = rsi[14]if i >55 thenachat = achat + 1elsif i<45 thenvente = vente +1endifif achat crosses over vente then //evenement achat plus important que ventebuy at market//reinitialisation des compteurs:achat = 0vente = 0endifif vente crosses over achat then //evenement vente plus important que achatsellshort at market//reinitialisation des compteurs:achat = 0vente = 0endifgraph achat coloured(0,255,0)graph vente coloured(255,0,0)11/16/2020 at 5:48 PM #15067111/17/2020 at 10:21 PM #150843Bonjour,
Je reviens vers vous après plusieurs essais. J’ai rajouté plusieurs variables afin de voir si le code “comptait” correctement les “ACHAT” et les “VENTE”.
- Dans le cas d’un “crosses over” entre “ACHAT” et “VENTE” (voir extrait ci dessous) le code semble additionner les variables sans les remettre à zéro et ne prend aucune position, voir graph des variables (graph achat coloured(0,255,0)
graph vente coloured(255,0,0). (idem à la vente)
123456if achat crosses over vente then //evenement achat plus important que ventebuy at market//reinitialisation des compteurs:achat = 0vente = 0endif- Dans le cas d’un “>” entre “ACHAT” et “VENTE” (voir extrait ci dessous) le code compte le même nombre de variables “ACHAT” que de “VENTE”, mais les remet à zéro. Les positions prises dans le graph de position ne coincident pas avec le graph des variables (graph achat coloured(0,255,0) graph vente coloured(255,0,0). (idem à la vente)
123456if achat > vente then //evenement achat plus important que venteBUY 1 CONTRACTS AT MARKET//reinitialisation des compteurs:achat = 0vente = 0endifJe vous mets le code complet ci-dessous a toute fin utile.1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071// Conditions des indicateursdefparam cumulateorders=falsei = rsi[14](close)if i>55 thenachat = achat +1elsif i<45 thenvente = vente +1endifj = MACDline[12,26,9](close)if j>0 thenachat = achat +1elsif j<0 thenvente = vente +1endifk = CCI[14](close)if k>45 thenachat = achat +1elsif k<0 thenvente = vente +1endifl = Stochastic[9,6](close)if l>50 thenachat = achat +1elsif l<50 thenvente = vente +1endifm = Williams[14](close)if m>-50 thenachat = achat +1elsif m<-50 thenvente = vente +1endif// Conditions pour ouvrir une position acheteuseif achat > vente then //evenement achat plus important que venteBUY 1 CONTRACTS AT MARKET//reinitialisation des compteurs:achat = 0vente = 0endif// Conditions pour fermer une position acheteuseif close CROSSES UNDER Average[5](close) thenSELL AT MARKETENDIF// Conditions pour ouvrir une position en vente à découvertif vente > achat then //evenement vente plus important que achatSELLSHORT 1 CONTRACTS AT MARKET//reinitialisation des compteurs:achat = 0vente = 0endif// Conditions pour fermer une position en vente à découvertif close CROSSES OVER Average[5](close) thenSELL AT MARKETENDIF// Stops et objectifsSET STOP pLOSS 100graph achat coloured(0,255,0)graph vente coloured(255,0,0)Merci d’avance pour votre réponse.
Cordialement.
11/19/2020 at 10:24 AM #150927Il faut vérifier que nous ne sommes pas déjà au marché pour réinitialiser les variables achat et vente, sinon, elles seront constamment remises à 0:
1234567// Conditions pour ouvrir une position acheteuseif not longonmarket and achat > vente then //evenement achat plus important que venteBUY 1 CONTRACTS AT MARKET//reinitialisation des compteurs:achat = 0vente = 0endifet
1234567// Conditions pour ouvrir une position en vente à découvertif not shortonmarket and vente > achat then //evenement vente plus important que achatSELLSHORT 1 CONTRACTS AT MARKET//reinitialisation des compteurs:achat = 0vente = 0endifMais il y aura malgré cela un problème, c’est que les compteurs peuvent mettre des lustres à se croiser, voir le GRAPH des variables.
11/21/2020 at 7:33 PM #151160Bonjour,
Je me suis permis d’expliquer plus précisément ce que je souhaite coder ci-dessous sur la base du code actuel qui ne remplis pas exactement ce que je recherche.
Idée de départ :
Stratégie basée sur 5 indicateurs remontant chacun soit une variable « ACHAT » soit une variable « VENTE » en fonction de leur paramétrage (voir cde plus bas)
Scan du marché à chaque incrément de temps choisi (t)
Stratégie :
A t0 :
- Compter le nombre de variable « ACHAT » et « VENTE » en fonction des critères définis dans les 5 indicateurs de départ.
- Si le nombre de variable « ACHAT » est > au nombre de variable « VENTE » alors rentrer en POSITION ACHETEUSE.
Attention, la somme des variables doit toujours être égale à 5 (ce qui n’est pas le cas dans le code actuel et je ne sais pas pourquoi ?).
A t0+1 :
- Remettre à zéro les compteurs « ACHAT » et « VENTE ».
- Toujours à t0+1 et une fois les compteurs remis à zéro, compter le nombre de variable « ACHAT » et « VENTE » en fonction des critères définis dans les 5 indicateurs.
- Si le nombre de variable « ACHAT » est TOUJOURS > au nombre de variable « VENTE » alors RESTER en POSITION ACHETEUSE.
Puis rester en POSITION ACHETEUSE tant que le nombre de variable « ACHAT » > « VENTE ».
Attention, la somme des variables doit toujours être égale à 5 (ce qui n’est pas le cas dans le code actuel et je ne sais pas pourquoi ?).
A t0+n :
- Si le nombre de variable « ACHAT » devient < au nombre de variable « VENTE » alors SORTIE DE POSITION ACHETEUSE.
- Attention, la somme des variables doit toujours être égale à 5 (ce qui n’est pas le cas dans le code actuel et je ne sais pas pourquoi ?).
… Puis inversement en position SHORT.
Cette stratégie peut-être aussi représentée graphiquement comme dans l’image attachée, ou avec un exemple aléatoire comme dans l’image attachée également.
En effet, le code actuel ci-dessous ne calcul pas ou ne remet pas à zéro correctement les compteurs car la somme des compteurs est parfois supérieure ou inférieure à 5 (nbre d’indicateur) alors qu’il devrait toujours y être égale.
Le code actuel rentre en position acheteuse à t0 et sort du marché immédiatement à t0+1 alors qui devrait y rester suivant les indicateurs.
Merci pour votre support.
Bien Cordialement
Code actuel:
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970// Conditions des indicateursdefparam cumulateorders=falsei = rsi[14](close)if i>55 thenachat = achat +1elsif i<45 thenvente = vente +1endifj = MACDline[12,26,9](close)if j>0 thenachat = achat +1elsif j<0 thenvente = vente +1endifk = CCI[14](close)if k>45 thenachat = achat +1elsif k<0 thenvente = vente +1endifl = Stochastic[9,6](close)if l>50 thenachat = achat +1elsif l<50 thenvente = vente +1endifm = Williams[14](close)if m>-50 thenachat = achat +1elsif m<-50 thenvente = vente +1endif// Conditions pour ouvrir une position acheteuseif not longonmarket and achat > vente then //evenement achat plus important que venteBUY 1 CONTRACTS AT MARKET//reinitialisation des compteurs:achat = 0vente = 0endif// Conditions pour fermer une position acheteuseif achat < vente thenSELL AT MARKETENDIF// Conditions pour ouvrir une position en vente à découvertif not longonmarket and vente > achat then //evenement vente plus important que achatSELLSHORT 1 CONTRACTS AT MARKET//reinitialisation des compteurs:achat = 0vente = 0endif// Conditions pour fermer une position en vente à découvertif vente < achat thenSELL AT MARKETENDIF// Stops et objectifsSET STOP pLOSS 200graph achat coloured(0,255,0)graph vente coloured(255,0,0) - Dans le cas d’un “crosses over” entre “ACHAT” et “VENTE” (voir extrait ci dessous) le code semble additionner les variables sans les remettre à zéro et ne prend aucune position, voir graph des variables (graph achat coloured(0,255,0)
-
AuthorPosts