"code" une question, un seul trade par jour ?

Forums ProRealTime forum Français Support ProOrder "code" une question, un seul trade par jour ?

Viewing 15 posts - 1 through 15 (of 15 total)
  • #54837

    Bonjour, J’aimerai faire un test sur une stratégie mais en paramétrant dans le code “juste 1 trade par jour” pour cette stratégie. J’ai beau essayé je ne trouve pas…  j’ai même tenté “just one trade by day” mais cela ne fonctionne pas évidemment. Pourriez vous m’aider ? Merci,

    #55539

    Bonsoir,

    Je n’ai pas bien compris l’histoire du “flag = 1”.

    J’ai essayé de le mettre dans mon code mais cela ne fonctionne pas.

    Pour ma part, je souhaite qu’après le premier trade exécuté aucun n’autre se déclenche pour la journée.

    Voici mon code que je test, si quelqu’un peux m’aider, merci  : 

     

    DEFPARAM CumulateOrders = False
    DEFPARAM FLATBEFORE = 090000
    // Annule tous les ordres en attente et ferme toutes les positions à l’heure “FLATAFTER”
    DEFPARAM FLATAFTER = 123000

    // Taille des positions
    n = 1

    // Timeframe M5

    S1 = CLOSE>CLOSE[1] AND CLOSE[1]>CLOSE[2] AND CLOSE[2]>CLOSE[3]
    S2 = CLOSE<CLOSE[1] AND CLOSE[1]<CLOSE[2] AND CLOSE[2]<CLOSE[3]

    // CONDITIONS VENTE
    c1V = time >= 090000
    c2V = S1

    IF c1V and c2V THEN
    BUY n CONTRACTS AT MARKET
    ENDIF

    // CONDITIONS ACHAT
    c1v = time >= 090000
    c2v = S2

    IF c1v and c2v THEN
    SELLSHORT n CONTRACTS AT MARKET
    ENDIF

    // SORTIE
    c1sa = time = 123000

    IF c1sa THEN
    SELL AT MARKET
    EXITSHORT AT MARKET
    ENDIF

    // STOP LOSS & TAKE PROFIT
    SET STOP LOSS 3
    SET TARGET PROFIT 1.5

     

    #55548

    >> Pour la clarté des messages sur les forums de ProRealCode, merci d’utiliser le bouton “insert PRT code” pour séparer la partie texte de la partie code, merci ! <<

     J’ai déplacé ton message vers le bon sujet, tu avais posté à la suite d’un autre sujet. 

    Pour la variable “flag”, c’est un nom comme un autre, on pourrait aussi lui en donner un autre, “toto” par exemple.

    Je reprends donc ton code, dés qu’un nouvel ordre est lancé au marché, on donne la valeur 1 à “toto” (après BUY ou SELLSHORT). Cette variable est remise à zéro à chaque nouvelle journée, on teste pour cela si la barre courante en intraday est égale à 0 (voir début du code). Enfin, avant de placer un nouvel ordre, on vérifie bien que “toto=0”, puisque cela signifiera forcément qu’aucun ordre n’a déjà été ouvert le jour même.

    Fait nous savoir si cela fonctionne correctement, pour les références futures, puisque cette question est posée 3 ou 4 fois par mois 🙂 

    #55590

    Grand merci Nicolas,

    Oui le code fonctionne, un seul trade n’est exécuté, alélouya.

    Par contre, je rencontre un autre problème (je ne sais pas si cela a un rapport), parfois des trades qui devraient s’exécuter ne le sont pas.

    Je vous montre mon code, il y a bien maximum 1 trade par jour pour celui-ci, mais parfois pas de trade du tout alors que cela devrait être le cas.

    Et 1 image vos 1000 discours :

    graph-codepij

     

    #55593

    Sur le graph, la 1ère ellipse montre le trade qui aurait dû être exécuté, sur la 2ème le trade s’est bien exécuté.

    #55596

    J’ai essayé de retiré la formule à toto=1 et voilà le résultat : le trade qui devait être pris (mais ne l’était pas avec la formule), est cette fois bien pris, par contre j’ai pr conséquent d’autres trades exécuté que je ne désire pas. Voilà le graph :

    graph-code2

    #55599

    Pour rappel mon setup est :

    • timeframe 15min
    • période de 9h à 11h30
    • En cas de croissement du PJ et d’une cloture en fin de bougie, achat ou vente au marché à l’open de la bougie suivante dans le sens de la cloture
    • l’entrée en position ne doit pas dépasser + ou – 4pts du PJ
    • Si la bougie de croisement est un doji ne pas prendre position
    • setup limité au 1er trade exécuté.

    Dans tous ça c’est juste l’histoire du 1er trade exécuté que je n’arrive pas à bien paramétrer (comme je le montre dans les graphs), l’entrée en position à +ou- 4 pts je n’ai pas encore étudié le sujet.

    #55638

    Pour débugger un problème, on peut utiliser l’instruction GRAPH, cela permet de vérifier chaque condition par exemple, comme celles de ton code pour rentrer en position, à savoir C1 et C3.

    ça devrait aider à comprendre pourquoi certains ordres ne sont pas lancés. Ensuite tu pourras ajouter toutes tes autres conditions pour agrémenter la stratégie.

    #55674

    Ok merci Nicolas,

    Après avoir appliqué la méthode avec “GRAPH” que tu me dis, j’ai trouvé une réponse possible au problème.

    Il se trouve que “intradaybarindex = 0” à l’open (8h),

    j’utilise “DEFPARAM FLATBFORE = 090000 (donc je prend le signal à partir de 9h),

    et donc entre 8h et 9h des signaux peuvent se déclencher et par conséquent changer “intradaybarindex = 1”,

    par conséquent, à partir de 9h, bien qu’il puisse avoir un signal, si “intradaybarindex = 1” alors le signal ne sera pas exécuté.

    Comme le montre l’image si dessous, sur la journée du 17, il y a eu un signal à 8h30, par conséquent, le premier signal à partir de 9h ne sera pas exécuté. En revanche, la journée suivante, il n’y a pas eu de signaux avant 9h, donc le 1er signal à partir de 9h est bien exécuté.

    pj-signaux

    Je vais essayer de trouver une solution pour palier à ce problème.

    En même temps si vous avez une solution je suis preneur 🙂 

     

     

     

    #55683

    Une solution simple dans ce cas, c’est d’utiliser l’heure et la minute pour le reset de la variable toto et non plus intradaybarindex.

    #55716

    Oui Nicolas pour les minutes et heures, mais là ça va faire 5heures que je planche sur cette idée mais je n’arrive pas à créer le code…

    j’ai essayé “hour 8” ou hour[0] ou hour[1], idem pour les minute par quinzaine. Pas fonctionné.

    J’ai paramétré la plateforme sur la tranche horaire [8h45-12h], paramétré également l’exécution des trades sur cette tranche horaire, mais ensuite j’ai eu des résultats très très bizarre (genre des exécutions sur des plages horaire invisible…).

    J’ai tenté le currenthour, currentminute, etc…

    A présent la plateforme me fait des chose bizarre et jsuis crevé donc j’arrête je verrai demain à tête reposé.

    Bonnenuit

     

    #55727

    ProBacktest et ProOrder utiliseront toujours la tranche horaire du marché et non celle que tu paramétras toi même, c’est pour cela que tu noteras des différences.

    Pour la remise à zéro de la variable, tu peux utiliser ces conditions horaires par exemple : 

     

    #55732

    Ok Nicolas, j’ai enfin le code bon, allélouya 🙂 

    En hour et minut cela ne fonctionnait pas non plus (en tout cas les résultats étaient mauvais), j’ai réécris “intradaybarindex” et j’ai donc continué à chercher, essayé, testé, et enfin la lumière est apparu…

    Je post le code final qui fonctionne pour 1 seul trade pris après le 1er signal dans une tranche horaire donné.

     

    #78320

    Bonjour,

    Bravo pour ce travail.

    par contre, j’ai remarqué que si on lance un ordre “Buy stop” / “Sell stop”, et que le take profit est situé sur la même bougie que la bougie d’entrée, alors le code ne fonctionne pas : il ne met pas “toto=1”, mais “toto” reste à zéro !

    Une idée pour corriger cela ? Merci

     

    Exemple :

    Ce code laisse “TradeJour” à zéro si le take profit est touché sur la bougie d’entrée…

    #78321

    En effet puisque dans ce cas onmarket n’est jamais vrai.

    Tester barindex et tradeindex peut-être?

Viewing 15 posts - 1 through 15 (of 15 total)

Create your free account now and post your request to benefit from the help of the community
Register or Login