Alertes séquentielles
Forums › ProRealTime forum Français › Support ProScreener › Alertes séquentielles
- This topic has 46 replies, 2 voices, and was last updated 5 years ago by Nicolas.
-
-
06/03/2019 at 12:05 PM #9987206/03/2019 at 12:06 PM #9987306/03/2019 at 12:19 PM #9987606/03/2019 at 12:24 PM #99877
ok, compris, voici le code en question: (les signaux apparaissent en histogramme)
1234567891011121314151617181920defparam cumulateorders=falsetimeframe(4 hours, updateonclose)SMA50 = average[50]ut4 = summation[4](low<SMA50)>0timeframe(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 utdif signal thenbuy at -1 limitendifgraph signal06/03/2019 at 12:31 PM #9987906/03/2019 at 2:05 PM #99884En 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.
06/19/2019 at 6:44 PM #101072Merci 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 ?06/20/2019 at 7:36 AM #101091Oui ç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é.
07/09/2019 at 6:46 AM #102236Merci 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 :
Essai de Détection séquentielle12345678910111213141516171819202122//Objectif : Vérifier que la première condition ait eu lieu dans l'UT1 dans les 3 dernières périodesTIMEFRAME(UT1)Evenement1 = Indicateur1>Indicateur2C1 = SUMMATION[3](Evenement1 )>0//Objectif : Vérifier que la condition suivante ai lieu dans l'UT2TIMEFRAME(UT2)Evenement2 = Indicateur3>Indicateur4C2 = SUMMATION[4](Evenement2)>0//Objectif : Vérifier que la condition suivante ai lieu dans l'UT3TIMEFRAME(UT3)Evenement3 = Indicateur5>Indicateur6C3 = 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'UT2et C3 a lieuSignal = C1 AND C2 AND C3Le 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 :
Ajout des CurrentTime pour comparaison12345678910111213141516171819202122232425262728293031IMEFRAME(UT1)Evenement1 = Indicateur1>Indicateur2C1 = SUMMATION[3](Evenement1 )>0//Once TimeC1 = 000000IF Evenement1 thenTimeC1 = CurrentTimeENDIFTIMEFRAME(UT2)Evenement2 = Indicateur3>Indicateur4C2 = SUMMATION[4](Evenement2)>0//Once TimeC2 = 000000IF Evenement2 thenTimeC2 = CurrentTimeENDIFTIMEFRAME(UT3)Evenement3 = Indicateur3>Indicateur4C3 = Evenement3//Once TimeC3 = 000000IF Evenement3 thenTimeC3 = CurrentTimeENDIF// 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 C2Signal = C1 AND C2 AND C3 AND TimeC2>TimeC1 AND TimeC3>TimeC2Mais 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
07/09/2019 at 8:08 AM #102247Sans 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.
07/09/2019 at 8:34 AM #102249Merci,
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 ?
07/09/2019 at 9:34 AM #102253Si 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
07/10/2019 at 9:11 AM #102320Pour 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:
1234567If Evenement1[1] thenT1 = CurrenttimeElsif Evenement1[2] thenT2 = CurrentTimeElsif Evenementj[3] thenT3 = CurrentTimeEndifJ’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 ?
07/10/2019 at 9:43 AM #102323Poser 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 :
1234567891011121314151617181920212223242526IF Evenement1[1] THENT1 = CurrenttimeELSET1 = 0ENDIFIF Evenement1[2] THENT2 = CurrentTimeELSET2=0ENDIFIF Evenement1[3] THENT3 = CurrentTimeELSET3=0ENDIFIF T3<>0 THENTFIRST = T3ELSIF T2<>0 AND T3 = 0 THENTFIRST = T2ELSIF T1<>0 AND T2=0 AND T3=0 THENTFIRST = T1ENDIF// TFIRST = Time de la première fois que l’événement survient dans la période considéréeJe vais essayer comme ça
07/10/2019 at 10:04 AM #102328 -
AuthorPosts