Double conditions d’achat via horaire

Viewing 5 posts - 1 through 5 (of 5 total)
  • Author
    Posts
  • #227236 quote
    Jrmjrm
    Participant
    New

    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.

    question.txt
    #227240 quote
    Nicolas
    Keymaster
    Master

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

    defparam cumulateorders = false
    defparam flatafter = 220000 
    
    // --- paramètres
    HeureDebut = 080000 // horaire de début de trading
    HeureFin = 220000 // horaire de fin de trading
    
    timeframe(30 seconds, updateonclose)
    
    st1 = Supertrend[3,10]
    sto = Stochastic[4,1](close)
    
    buyc = sto crosses over 20 and close > st1
    timec = 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édente
    crossedAfterOpen = (close[1] <= st1[1]) and (close > st1)
    
    if trading and timec then
        if not longonmarket and buyc and crossedAfterOpen then
            buy 1 contract at market
        endif
    endif
    

    Dans 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).

    #227279 quote
    Jrmjrm
    Participant
    New

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

    CODE.txt CODE-avec-crossedAfterOpen.txt
    #227306 quote
    Alain
    Participant
    Senior

    Bonjour,

    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:

    defparam cumulateorders = false
    defparam flatafter = 220000
     
    
    // --- paramètres
    HeureDebut = 080000 // horaire de début de trading
    HeureFin = 220000 // horaire de fin de trading
     
    timeframe(30 seconds, updateonclose)
     
    st1 = Supertrend[3,10]
    sto = Stochastic[4,1](close)
     
    
    timec = time >= HeureDebut and time < HeureFin 
    
    If timec then 
         if  close crosses over st1  then 
            stc = 1
          elsif close crosses under st1 then 
             stc = 0
          endif 
    else 
         stc = 0
    endif
    
    buyc = sto crosses over 20 and stc
    
    if trading and timec then
        if not longonmarket and buyc  then
           buy 1 contract at market
        endif
    endif
    #227421 quote
    Jrmjrm
    Participant
    New

    Bonjour 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
    endif

     

    Merci 🙂

Viewing 5 posts - 1 through 5 (of 5 total)
  • You must be logged in to reply to this topic.

Double conditions d’achat via horaire


ProOrder : Trading Automatique & Backtests

New Reply
Author
author-avatar
Jrmjrm @jrmjrm Participant
Summary

This topic contains 4 replies,
has 3 voices, and was last updated by Jrmjrm
2 years ago.

Topic Details
Forum: ProOrder : Trading Automatique & Backtests
Language: French
Started: 02/01/2024
Status: Active
Attachments: 3 files
Logo Logo
Loading...