Renvoyer un terme “TEXTE” suivant indicateur et compter les termes “TEXTE”

Viewing 6 posts - 1 through 6 (of 6 total)
  • Author
    Posts
  • #150571 quote
    KanamaxKanamax
    Participant
    Junior

    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.

    #150616 quote
    NicolasNicolas
    Keymaster
    Legend

    En 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.

    //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=false
    
    i = rsi[14]
    if i >55 then 
     achat = achat + 1
    elsif i<45 then 
     vente = vente +1
    endif 
    
    if achat crosses over vente then //evenement achat plus important que vente 
     buy at market
     //reinitialisation des compteurs:  
     achat = 0
     vente = 0
    endif 
    
    if vente crosses over achat then //evenement vente plus important que achat
     sellshort at market
     //reinitialisation des compteurs:
     achat = 0
     vente = 0
    endif
    
    graph achat coloured(0,255,0)
    graph vente coloured(255,0,0)
    #150671 quote
    KanamaxKanamax
    Participant
    Junior

    Bonjour,

    Merci beaucoup pour votre réponse, je vais tester ce code et me familiariser avec, puis rajouter des indicateurs.

    Très Cordialement.

    #150843 quote
    KanamaxKanamax
    Participant
    Junior

    Bonjour,

    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)
    if achat crosses over vente then //evenement achat plus important que vente 
     buy at market
     //reinitialisation des compteurs:  
     achat = 0
     vente = 0
    endif

     

    • 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)
    if achat > vente then //evenement achat plus important que vente
    BUY 1 CONTRACTS AT MARKET
    //reinitialisation des compteurs:
    achat = 0
    vente = 0
    endif

     

    Je vous mets le code complet ci-dessous a toute fin utile.
    // Conditions des indicateurs
    
    defparam cumulateorders=false
    
    i = rsi[14](close)
    if i>55 then
    achat = achat +1
    elsif i<45 then
    vente = vente +1
    endif
    
    j = MACDline[12,26,9](close)
    if j>0 then
    achat = achat +1
    elsif j<0 then
    vente = vente +1
    endif
    
    k = CCI[14](close)
    if k>45 then
    achat = achat +1
    elsif k<0 then
    vente = vente +1
    endif
    
    l = Stochastic[9,6](close)
    if l>50 then
    achat = achat +1
    elsif l<50 then
    vente = vente +1
    endif
    
    m = Williams[14](close)
    if m>-50 then
    achat = achat +1
    elsif m<-50 then
    vente = vente +1
    endif
    
    
    // Conditions pour ouvrir une position acheteuse
    if achat > vente then //evenement achat plus important que vente
    BUY 1 CONTRACTS AT MARKET
    //reinitialisation des compteurs:
    achat = 0
    vente = 0
    endif
    
    // Conditions pour fermer une position acheteuse
    if close CROSSES UNDER Average[5](close) then
    SELL AT MARKET
    ENDIF
    
    // Conditions pour ouvrir une position en vente à découvert
    if vente > achat then //evenement vente plus important que achat
    SELLSHORT 1 CONTRACTS AT MARKET
    //reinitialisation des compteurs:
    achat = 0
    vente = 0
    endif
    
    // Conditions pour fermer une position en vente à découvert
    if close CROSSES OVER Average[5](close) then
    SELL AT MARKET
    ENDIF
    
    // Stops et objectifs
    SET STOP pLOSS 100
    
    graph achat coloured(0,255,0)
    graph vente coloured(255,0,0)
    

    Merci d’avance pour votre réponse.

    Cordialement.

    #150927 quote
    NicolasNicolas
    Keymaster
    Legend

    Il 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:

    // Conditions pour ouvrir une position acheteuse
    if not longonmarket and achat > vente then //evenement achat plus important que vente
     BUY 1 CONTRACTS AT MARKET
     //reinitialisation des compteurs:
     achat = 0
     vente = 0
    endif

    et

    // Conditions pour ouvrir une position en vente à découvert
    if not shortonmarket and vente > achat then //evenement vente plus important que achat
     SELLSHORT 1 CONTRACTS AT MARKET
     //reinitialisation des compteurs:
     achat = 0
     vente = 0
    endif

    Mais il y aura malgré cela un problème, c’est que les compteurs peuvent mettre des lustres à se croiser, voir le GRAPH des variables.

    compteur-achat-et-vente.png compteur-achat-et-vente.png
    #151160 quote
    KanamaxKanamax
    Participant
    Junior

    Bonjour,

    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 :

    1. Compter le nombre de variable « ACHAT » et « VENTE » en fonction des critères définis dans les 5 indicateurs de départ.
    2. 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 :

    1. Remettre à zéro les compteurs « ACHAT » et « VENTE ».
    2. 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.
    3. 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 :

    1. Si le nombre de variable « ACHAT » devient < au nombre de variable « VENTE » alors SORTIE DE POSITION ACHETEUSE.
    2. 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:

    // Conditions des indicateurs
    
    defparam cumulateorders=false
    
    i = rsi[14](close)
    if i>55 then
    achat = achat +1
    elsif i<45 then
    vente = vente +1
    endif
    
    j = MACDline[12,26,9](close)
    if j>0 then
    achat = achat +1
    elsif j<0 then
    vente = vente +1
    endif
    
    k = CCI[14](close)
    if k>45 then
    achat = achat +1
    elsif k<0 then
    vente = vente +1
    endif
    
    l = Stochastic[9,6](close)
    if l>50 then
    achat = achat +1
    elsif l<50 then
    vente = vente +1
    endif
    
    m = Williams[14](close)
    if m>-50 then
    achat = achat +1
    elsif m<-50 then
    vente = vente +1
    endif
    
    // Conditions pour ouvrir une position acheteuse
    if not longonmarket and achat > vente then //evenement achat plus important que vente
    BUY 1 CONTRACTS AT MARKET
    //reinitialisation des compteurs:
    achat = 0
    vente = 0
    endif
    
    // Conditions pour fermer une position acheteuse
    if achat < vente then
    SELL AT MARKET
    ENDIF
    
    // Conditions pour ouvrir une position en vente à découvert
    if not longonmarket and vente > achat then //evenement vente plus important que achat
    SELLSHORT 1 CONTRACTS AT MARKET
    //reinitialisation des compteurs:
    achat = 0
    vente = 0
    endif
    
    // Conditions pour fermer une position en vente à découvert
    if vente < achat then
    SELL AT MARKET
    ENDIF
    
    // Stops et objectifs
    SET STOP pLOSS 200
    
    graph achat coloured(0,255,0)
    graph vente coloured(255,0,0)
    
    Capture-3.jpg Capture-3.jpg
Viewing 6 posts - 1 through 6 (of 6 total)
  • You must be logged in to reply to this topic.
ProRealAI ProRealAI New

Stuck on this ProBuilder code?

Describe what this topic is trying to build, in plain English, and ProRealAI writes the ProRealTime™ indicator, screener or system for you.

Available in 7 languages
Try ProRealAI

Renvoyer un terme “TEXTE” suivant indicateur et compter les termes “TEXTE”


ProOrder : Trading Automatique & Backtests

New Reply
Author
author-avatar
Kanamax @kanamax Participant
Summary

This topic contains 5 replies,
has 2 voices, and was last updated by KanamaxKanamax
5 years, 10 months ago.

Topic Details
Forum: ProOrder : Trading Automatique & Backtests
Language: French
Started: 11/15/2020
Status: Active
Attachments: 2 files
ProRealCode ProRealCode
Loading...