Double conditions d’achat via horaire
Forums › ProRealTime forum Français › Support ProOrder › Double conditions d’achat via horaire
- This topic has 4 replies, 3 voices, and was last updated 9 months ago by Jrmjrm.
-
-
02/01/2024 at 12:54 PM #227236
Bonjour,
J’aurais besoin d’aide pour faire évoluer mon code svp.
C’est un bot à l’achat qui utilise un supertrend et un stochastique.
Lorsque le prix est supérieur au supertrend et que le stochastique croise à la hausse la valeur 20. il prends une position à l’achat. il prend toujours le premier croisement à la hausse du stochastique (lorsque le prix est supérieur au supertrend) car je suis en defparam cumulateorders=false
j’ai cependant un problème. Le bot démarre à 8h.
Si à 8h le prix est déjà supérieur au supertrend, le bot va prendre une position dès que le stochastique croisera à la hausse 20. Hors, je souhaiterais que pour l’ouverture du bot à 8h, si le prix est déjà supérieur au supertrend, il ne prenne pas de position (et attende que le prix croise à la baisse le suprentrend, puis le recroise à la hausse pour attendre le signal du stochastique).
Pourriez- vous m’aider?
Merci d’avance.
Ci dessous le code.
Je reste disponible si vous avez des questions.
02/01/2024 at 1:37 PM #227240Pour modifier votre code de trading automatisé afin qu’il ne prenne pas de position à 8h si le prix est déjà supérieur au Supertrend, vous pouvez ajouter une condition supplémentaire. Cette condition vérifiera si le prix était inférieur au Supertrend à la clôture de la session précédente. Si c’est le cas, cela signifie que le prix a franchi le Supertrend à la hausse après 8h, et le bot peut alors prendre une position sur le premier croisement à la hausse du stochastique.
Voici comment vous pourriez modifier votre code :
1234567891011121314151617181920212223defparam cumulateorders = falsedefparam flatafter = 220000// --- paramètresHeureDebut = 080000 // horaire de début de tradingHeureFin = 220000 // horaire de fin de tradingtimeframe(30 seconds, updateonclose)st1 = Supertrend[3,10]sto = Stochastic[4,1](close)buyc = sto crosses over 20 and close > st1timec = time >= HeureDebut and time < HeureFin// Ajout d'une condition pour vérifier si le prix était inférieur au Supertrend à la clôture de la session précédentecrossedAfterOpen = (close[1] <= st1[1]) and (close > st1)if trading and timec thenif not longonmarket and buyc and crossedAfterOpen thenbuy 1 contract at marketendifendifDans ce code, la variable
crossedAfterOpen
est ajoutée pour vérifier si le prix était inférieur au Supertrend à la clôture de la session précédente (close[1] <= st1[1]
) et s’il est actuellement supérieur au Supertrend (close > st1
). Cette condition supplémentaire permet au bot de ne prendre une position que si le prix a franchi le Supertrend à la hausse après l’heure de début (8h).02/01/2024 at 10:03 PM #227279Merci pour vos lignes de code et la découverte de la fonction crossedAfterOpen Nicolas.
Malgré ces modifications, lorsque j’exécute le code, il prend seulement quelques positions sans logique. Savez-vous d’où cela peut provenir?
En PJ le code qui fonctionne sans crossedAfterOpen ainsi que avec la fonction.
Merci d’avance.
02/02/2024 at 12:16 PM #227306Bonjour,
Je pense que le code proposé par Nicolas ne correspond pas à ce que vous demandez. Sa variable crossedAfterOpen a la valeur TRUE uniquement sur la bougie qui croise le supertrend à la hausse. Sur les bougies suivantes, au-dessus du supertrend, la variable a la valeur FALSE (puisque la bougie précédente n’est pas en-dessous du supertrend). Dans cette version, pour entrer en position, il faut donc avoir sur le même bougie à la fois le croisement à la hausse du supertrend et le croisement à la hausse du 20 par le stochastique.
Je crois que vous voulez entrer en position sur le premier croisement du 20 par le stochastique qui suit le croisement à la hausse du supertrend, pour autant que celui-ci ait lieu après 8 heures.
Je pense que le code suivant répond à cette demande:
123456789101112131415161718192021222324252627282930313233defparam cumulateorders = falsedefparam flatafter = 220000// --- paramètresHeureDebut = 080000 // horaire de début de tradingHeureFin = 220000 // horaire de fin de tradingtimeframe(30 seconds, updateonclose)st1 = Supertrend[3,10]sto = Stochastic[4,1](close)timec = time >= HeureDebut and time < HeureFinIf timec thenif close crosses over st1 thenstc = 1elsif close crosses under st1 thenstc = 0endifelsestc = 0endifbuyc = sto crosses over 20 and stcif trading and timec thenif not longonmarket and buyc thenbuy 1 contract at marketendifendif02/05/2024 at 1:19 PM #227421Bonjour Alain,
Oui c’est effectivement l’idée.
Merci pour ces lignes de code.
La condition d’entrée marche effectivement avec les lignes ci dessous:
if timec then
if close crosses over st1 then
trading = 1
elsif close crosses under st1 then
trading =0
endif
else
trading = 0
endifMerci 🙂
-
AuthorPosts
Find exclusive trading pro-tools on