Alertes séquentielles

Viewing 15 posts - 16 through 30 (of 47 total)
  • Author
    Posts
  • #99872 quote
    PhilippeN
    Participant
    Average

    Ut4 summation[4](low0

    #99873 quote
    PhilippeN
    Participant
    Average

    C’est dingue…
    J’essaie en decoupé pour voir….
    (
    Low
    < SMA50 ) >
    0

    #99876 quote
    Nicolas
    Keymaster
    Master

    test :

    <>

    #99877 quote
    Nicolas
    Keymaster
    Master

    ok, compris, voici le code en question: (les signaux apparaissent en histogramme)

    defparam cumulateorders=false
    
    timeframe(4 hours, updateonclose)
    SMA50 = average[50]
    ut4 = summation[4](low<SMA50)>0 
    
    timeframe(1 hour,updateonclose)
    SMA10 = average[10]
    ut1 = close[1]>SMA10[1]
    
    timeframe(default) 
    utd = close crosses under lowest[14](low[1])
    
    signal = ut4 and ut1 and utd
    
    if signal then 
    buy at -1 limit 
    endif
    
    graph signal
    #99879 quote
    PhilippeN
    Participant
    Average

    Merci Nicolas je vois
    Je peux alors positionner une alerte avec notification sur ces signaux ?
    C’est le but que je recherche. Je pensais à trouver le moyen de recevoir une notification de prise de position.

    #99884 quote
    Nicolas
    Keymaster
    Master

    En laissant tourner le backtest en temps réel, des fenêtres de prises de positions s’ouvriront. C’est un moyen détourné pour à la fois obtenir des alertes en temps et aussi pouvoir utiliser plusieurs timeframes en même temps pour générer les conditions des signaux de trading.

    #101072 quote
    PhilippeN
    Participant
    Average

    Merci Nicolas
    Le bidouillage fonctionne et cela peut etre une solution de dépannage..

    Ce serait tellement plus simple de pouvoir coder des indicateurs en multitime frame et d’appliquer des alertes aux signaux génerés !

    Est-ce en préparation ?
    Pourquoi peut-on coder des screeners et des proorders multi time frame et pas les indicateurs ?

    #101091 quote
    Nicolas
    Keymaster
    Master

    Oui ça va arriver, c’est une question de temps, donc être patient.

    Ta question concernant la possibilité du MTF dans toutes les applications de la plateforme est justifiée, pourquoi pas ? Tout simplement, parce qu’on parle de 3 moteurs différents et qu’il est question qu’ils soient désormais tous compatibles et uniques dans les prochaines versions, il faudra donc être patient, mais c’est évidemment une priorité.

    #102236 quote
    PhilippeN
    Participant
    Average

    Merci Nicolas pour le support,

    J’ai bien avancé dans le développement de mon Proscreener et il commence à répondre à mes attentes de détection séquentielle.

    Je rappelle mon besoin, détecter cette séquence pour en obtenir un signal :

    • C1 se produit en UT1,
    • alors seulement dans les 3 périodes suivantes de l’UT1 ; C2 se produit en UT2,
    • alors seulement dans les 4 périodes suivantes de l’UT2 ;  C3 se produit en UT3.

     

    Malheureusement, je bloque sur l’aspect séquentiel :

    //Objectif : Vérifier que la première condition ait eu lieu dans l'UT1 dans les 3 dernières périodes
    
    TIMEFRAME(UT1)
    Evenement1 = Indicateur1>Indicateur2
    C1 = SUMMATION[3](Evenement1 )>0
    
    //Objectif : Vérifier que la condition suivante ai lieu dans l'UT2
    
    TIMEFRAME(UT2)
    Evenement2 = Indicateur3>Indicateur4
    C2 = SUMMATION[4](Evenement2)>0
    
    //Objectif : Vérifier que la condition suivante ai lieu dans l'UT3
    
    TIMEFRAME(UT3) 
    Evenement3 = Indicateur5>Indicateur6 
    C3 = Evenement3 
    
    // Signal = C1 a eu lieu au moins une fois dans les 3 dernières périodes de l'UT1 et C2 a lieu au moins une fois dans les 4 dernières périodes de l'UT2
     et C3 a lieu
    
    Signal = C1 AND C2 AND C3

    Le problème de cette méthode consiste dans le fait que la séquence va tout de même renvoyer un signal alors que la séquence ne se produit pas :

    Par exemple lorsque C2 a lieu avant C1.

     

    Alors comment faire pour vérifier la bonne séquence temporelle ?

    J’ai tenté pour cela de stocker le CurrentTime des 3 événements, pour vérifier la bonne séquence temporelle :

    IMEFRAME(UT1)
    Evenement1 = Indicateur1>Indicateur2
    C1 = SUMMATION[3](Evenement1 )>0
    //
    Once TimeC1 = 000000
    IF Evenement1 then
    TimeC1 = CurrentTime
    ENDIF
    
    TIMEFRAME(UT2)
    Evenement2 = Indicateur3>Indicateur4
    C2 = SUMMATION[4](Evenement2)>0
    //
    Once TimeC2 = 000000
    IF Evenement2 then
    TimeC2 = CurrentTime
    ENDIF
    
    TIMEFRAME(UT3)
    Evenement3 = Indicateur3>Indicateur4
    C3 = Evenement3
    //
    Once TimeC3 = 000000 
    IF Evenement3 then 
    TimeC3 = CurrentTime 
    ENDIF
    
    // Signal = C1 a eu lieu au moins une fois dans les 3 dernières périodes de l'UT1 et C2 a lieu au moins une fois dans les 4 dernières périodes de l'UT2,
    et C3 a lieu, et C2 a lieu après C1, et C3 a lieu après C2 
    
    Signal = C1 AND C2 AND C3 AND TimeC2>TimeC1 AND TimeC3>TimeC2

     

    Mais là je bloque car si l’événement Cn survient à nouveau après l’évenement Cn+1, la séquence n’est alors plus reconnue.

    Par exemple C1 a lieu, puis C2, puis a nouveau C1 puis C3, le signal est bon mais la séquence n’est pas reconnue car elle a été transformée en cours de formation.

    J’ai pensé à tenter de stocker le CurrentTime lorsque l’événement Cn arrive la première fois SEULEMENT mais je ne vois pas comment y arriver tout en conservant la séquence :

    • C1 se produit en UT1,
    • alors seulement dans les 3 périodes suivantes de l’UT1 ; C2 se produit en UT2,
    • alors seulement dans les 4 périodes suivantes de l’UT2 ;  C3 se produit en UT3.

     

    Merci de m’avoir lu jusqu’ici et merci par avance pour tes éclaircissements

    #102247 quote
    Nicolas
    Keymaster
    Master

    Sans allez plus profondément dans la compréhension de ton code et puisque tu veux valider une séquence de conditions à la suite,  tu pourrais simplement enregistrer le Barindex de chaque condition et testé si le deuxième est Supérieur au premier et le troisième au deuxième.

    #102249 quote
    PhilippeN
    Participant
    Average

    Merci,

    Les barindex de différentes UT peuvent-elles être comparées ?

    En quoi cela pourrait-il être une solution par rapport à la méthode utilisée avec le CurrentTime ?

    Penses-tu que cela peut m’aider à ne stocker que le moment de la première arrivée de la condition ?

    Comment vois tu les choses avec chaque condition en UT différente ?

    #102253 quote
    PhilippeN
    Participant
    Average

    Si je peux effectivement utiliser Barindex sur une même base de comptabilisation; dans l’UT Default, je pourrai me servir de cette information qui me donnera les périodes exactes pour vérifier la séquentialité.

    Je cherche mais ne trouve pas

    #102320 quote
    PhilippeN
    Participant
    Average

    Pour comparer la temporalité d’évenements sur des time frame différents, seule l’utilisation de leur current time me semble possible,

    vu que le barindex est calculé sur une base différente pour chaque UT (j’ai graphé pour vérifier).

    A moins que proorder ne propose une option solution pour le barindex MTF mais je ne trouve rien à ce sujet.

     

    Alors pour me servir du timing de la première fois où l’événement a eu lieu, je pense à vérifier la condition indépendamment sur les n périodes qui m’intéressent avec n boucles If, (pour ainsi stocker pour chacune des périodes le current time de l’évenement s’il a eu lieu)

    Ex:

    If Evenement1[1] then
    T1 = Currenttime
    Elsif Evenement1[2] then
    T2 = CurrentTime
    Elsif Evenementj[3] then
    T3 = CurrentTime
    Endif

    J’ai besoin maintenant du minimum de la liste (T1,T2,T3), qui m’indiquera la première fois où l’évenement a eu lieu, ici dans les 3 dernières périodes

    Pour en extraire le plus petit current time, comment demander le lowest de variables différentes ?

    #102323 quote
    PhilippeN
    Participant
    Average

    Poser des questions ici m’aide à trouver les réponses car je formule mieux mes besoins lol

    Je ne crois pas qu’il y ait de fonction pour trouver le minimum d’une série dans PRT et donc je pense à le faire manuellement

    Mes boucles If vont devoir être mieux montées :

    IF Evenement1[1] THEN
    T1 = Currenttime
    ELSE 
    T1 = 0
    ENDIF
    
    IF Evenement1[2] THEN
    T2 = CurrentTime
    ELSE
    T2=0
    ENDIF
    
    IF Evenement1[3] THEN
    T3 = CurrentTime
    ELSE
    T3=0
    ENDIF
    
    IF T3<>0 THEN
    TFIRST = T3
    ELSIF T2<>0 AND T3 = 0 THEN
    TFIRST = T2
    ELSIF T1<>0 AND T2=0 AND T3=0 THEN
    TFIRST = T1
    ENDIF
    // TFIRST = Time de la première fois que l’événement survient dans la période considérée
    
    

    Je vais essayer comme ça

    #102328 quote
    PhilippeN
    Participant
    Average

    L’idée me semble bonne mais les résultats sont mauvais, je n’obtiens pas le time de la première fois où l’événement a eu lieu dans les n périodes… 🙁

Viewing 15 posts - 16 through 30 (of 47 total)
  • You must be logged in to reply to this topic.

Alertes séquentielles


ProScreener : Scanners de Marché & Détection

New Reply
Author
author-avatar
PhilippeN @philippen Participant
Summary

This topic contains 46 replies,
has 2 voices, and was last updated by Nicolas
6 years, 7 months ago.

Topic Details
Forum: ProScreener : Scanners de Marché & Détection
Language: French
Started: 05/15/2019
Status: Active
Attachments: 3 files
Logo Logo
Loading...