Création signal avec conditions qui peuvent ne pas se déclencher au même instant
Forums › ProRealTime forum Français › Support ProBuilder › Création signal avec conditions qui peuvent ne pas se déclencher au même instant
- This topic has 22 replies, 5 voices, and was last updated 4 years ago by Nicolas.
Tagged: drawarrowdown, drawarrowup, drawsegment, style
-
-
06/12/2017 at 6:54 PM #38158
bonjour j’aimerai créer un signal avec deux conditions mais ces conditions peuvent ne pas se déclencher au même instant, existence d’un décalage et c’est cela qui pose problème.
Y a t’il une instruction sur PRT permettant de valider la condition avec condition 1 validé a un instant T et condition 2 validé a un autre instant T, pas forcément au même moment.
J’ai utilisé And mais c’est en même temps.
Or: il me valide l’une ou l’autre
et je n’ai rien trouvé pour si condition 1 puis condition 2 alors signal validé
Attention le décalage temps est aléatoire puisque la condition ne dépend pas du temps
ex: MACD sous zéro et prix qui croise La MM 20 mais pas au même moment avec un décalage, le signale est validé alors
merci
06/13/2017 at 6:15 AM #38167Bonjour Ghary,
A mon humble avis (car je débute) il te faut choisir une des 2 conditions qui déclenchera la stratégie.
Ci dessous le MACD < 0 et la stratégie se déclenche quand les prix BarClose croise la MM20 (Long)
12345678910111213141516171819202122232425262728293031// Définition des paramètres du codeDEFPARAM CumulateOrders = False // Cumul des positions désactivé// Annule tous les ordres en attente et ferme toutes les positions à 0:00, puis empêche toute création d'ordre avant l'heure "FLATBEFORE".DEFPARAM FLATBEFORE = 090000// Annule tous les ordres en attente et ferme toutes les positions à l'heure "FLATAFTER"DEFPARAM FLATAFTER = 170000// Empêche le système de placer des ordres pour entrer sur le marché ou augmenter la taille d'une position avant l'heure spécifiéenoEntryBeforeTime = 090000timeEnterBefore = time >= noEntryBeforeTime// Empêche le système de placer des ordres pour entrer sur le marché ou augmenter la taille d'une position après l'heure spécifiéenoEntryAfterTime = 170000timeEnterAfter = time < noEntryAfterTime// Empêche le système de placer de nouveaux ordres sur les jours de la semaine spécifiésdaysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0// Conditions pour ouvrir une position acheteuseindicator1 = ExponentialAverage[20](close)c1 = (close CROSSES OVER indicator1)indicator2 = MACDline[12,26,9](close)c2 = (indicator2 < 0)IF (c1 AND c2) AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry THENBUY 1 CONTRACT AT MARKETENDIF// Stops et objectifsSET STOP pLOSS 30SET TARGET pPROFIT 4006/13/2017 at 6:29 AM #38170Bonjour
merci pour la réponse mais on revient toujours à la condition and qui oblige à avoir les deux conditions ici MACD < 0 et croisement bougie MM20 sauf que j’aimerai avoir le signal en ayant le MACD qui a été < 0 mais qui au moment du croisement prix MM 20 n’est pas forcément < 0.
Le soucis se situe donc bien au niveau de la condition 1 qui peut être présente ou passé.
06/15/2017 at 11:01 AM #3833406/15/2017 at 12:31 PM #38344C’est l’un des sujets de la formation prorealtime sur la programmation avancée 🙂
Je viens de tomber sur un exemple en cherchant dans le forum : https://www.prorealcode.com/topic/blocage-programmation-code-prt/
06/15/2017 at 1:56 PM #3835406/15/2017 at 2:01 PM #3835506/15/2017 at 5:09 PM #3837006/16/2017 at 6:44 AM #38403Bonjour Nicolas voici l’idée générale, niveau code c’est assez simple, c’est surtout la condition qui complique la validation du signal.
Condition 1 Initiale
MACD (36 72 27) < 0 et MACD (12 26 9) croise à la hausse son signal.
Validation du signal si condition 1 effectué (en même temps ou non) et après condition 2
Condition 2
Prix croise à la baisse la MM 20 alors signal Vente.
La condition 1 n’arrive pas forcement au même moment.
Condition 1 Initiale
MACD (36 72 27) > 0 et MACD (12 26 9) croise à la baisse son signal.
Condition 2 validée s’il y a eu condition 1
Prix croise à la hausse la MM 20 alors signal Achat.
Il faut aussi que MACD(36 72 27) reste >0 ou<0 lors de la condition 2 .
Niveau codage cela reste simple mais c’est la validation de la condition 1 qui n’a pas lieux forcement au même moment que la condition 2.
06/16/2017 at 12:54 PM #38440L’exemple ci-dessous est ta Condition1 :
123456789macd1 = MACD[36,72,7](close)macd2 = MACD[12,26,9](close)signal = average[9](macd2)if macd1<0 and macd2 crosses over signal thenbuyc=1endifreturn buycTant que tu te remets pas buyc à une autre valeur que 1, cette condition reste valide. Donc tu peux l’utiliser plus tard dans le temps .. (voir image).
06/16/2017 at 1:22 PM #3844706/16/2017 at 2:39 PM #38450Ce code est un indicateur, juste pour te faire voir que ta condition1 enregistré dans la variable ‘buyc’ reste valide tant que tu ne la remets pas à zéro toi même.
Le code de la stratégie pour une condition de vente devrait ressembler à cela:
1234567891011121314macd1 = MACD[36,72,7](close)macd2 = MACD[12,26,9](close)signal = average[9](macd2)if macd1<0 and macd2 crosses over signal thenbuyc=1endifif buyc and (close crosses under average[20]) then //entre parenthèses c'est ta condition2 !SELLSHORT 1 CONTRACT AT MARKET//je reset ici la condition1 :buyc=0endifPas testé ! à vérifier.
1 user thanked author for this post.
06/16/2017 at 2:46 PM #3845106/16/2017 at 3:07 PM #3845306/16/2017 at 4:28 PM #38463 -
AuthorPosts
Find exclusive trading pro-tools on