novice tourne en rond

Viewing 15 posts - 1 through 15 (of 23 total)
  • Author
    Posts
  • #87994 quote
    lb
    Participant
    Junior

    Bonjour, je me présente: Laurent, nouveau sur le forum, j’essaie de faire une programmation simple sous PRT, je suis nul en programmation, mais même avec la programmation assistée ça ne marche pas (0 occurrence trouvée).

    ce que je cherche à backtester:

    la bougie de l’avant veille est rouge: c1 = (close[2] < open[2])

    la clôture de l’avant veille est la plus basse des 5 bougies qui la précèdent:  c2 = (close[2] < lowest[5](low))

    la bougie d’hier (de la veille) est verte: c3 = (DClose(1) > DOpen(1))

    et sa clôture est supérieure à la clôture de l’avant veille: c4 = (DClose(1) > close[2])

    la bougie du jour est rouge: c5 = (DClose(0) < DOpen(0))

    et sa clôture est inférieure à celle de l’avant veille: c6 = (DClose(0) < close[2])

    le macd (2,4,1) (à la clôture) du jour est supérieur au macd (2,4,1) de l’avant veille: c7 = ??

    alors si c1, c2, c3, c4, c5, c7 vérifiées achat 1 lot à l’ouverture de j+1 et vente de ce même lot à la fermeture de j+1 (je n’ai pas non plus trouvé la fonction vente à la fermeture j+1)

    voili voilou, si quelqu’un peut m’aider je l’en remercie par avance

    Laurent

    #87995 quote
    Nicolas
    Keymaster
    Master

    Y-a t’il un code en l’état pour éviter de tout retaper ? Merci.

    Ouvrir et fermer une position par choix, ne sera possible que si le support multi timeframe est activé, ce qui n’est pas le cas actuellement le cas. Donc je peux aider à faire le programme, mais il ne sera pas possible de le tester pour le moment de ton côté.

    #87996 quote
    lb
    Participant
    Junior

    ça c’est du rapide, merci !

    voici le code (à vérifier car je l’ai fait en programmation assistée et modifié le plus bas des 5 derniers jours), pour la sortie j’ai modifié le critère par un croisement baissier des prix avec une mm courte (c’est dommage que l’on ne puisse pas programmer une sortie automatique à la clôture de la journée où la position a été engagée, ou à l’ouverture du lendemain).

    et merci !!

    // Définition des paramètres du code
    DEFPARAM CumulateOrders = False // Cumul des positions désactivé

    // Conditions pour ouvrir une position acheteuse
    c1 = (close[2] < open[2])
    c2 =  (close[2] < lowest[5](low))
    c3 = (DClose(1) > DOpen(1))
    c4 = (DClose(1) > close[2])
    c5 = (DClose(0) < DOpen(0))
    c6 = (DClose(0) < close[2])
    indicator1 = MACD[2,4,1](MACD[24,52,1](close))
    indicator2 = MACD[2,4,1](MACD[24,52,1](close))
    c7 = (indicator1 > indicator2[2])

    IF c1 AND c2 AND c3 AND c4 AND c5 AND c6 AND c7 THEN
    BUY 1 SHARES AT MARKET TOMORROWOPEN
    ENDIF

    // Conditions pour fermer une position acheteuse
    indicator3 = ExponentialAverage[4](close)
    c8 = (close CROSSES UNDER indicator3)

    IF c8 THEN
    SELL AT MARKET
    ENDIF

    #88021 quote
    fifi743
    Participant
    Master

    bonjour laurent

    indicator1 et indicator2 est le même ?

    c7 = (indicator1 > indicator1[2])

     

    #88022 quote
    lb
    Participant
    Junior

    oui, il s’agit du macd (2,4,1) et la condition est qu’il y ait une divergence entre le macd du jour (que traduit la programmation assisté par indicator1) et celui de l’avant veille (indicator1[2])

    je ne sais pas pourquoi la programmation assistée rajoute le macd (24,52,1)…

    cdt,

    #88048 quote
    fifi743
    Participant
    Master

    bonsoir

    C2 bloque et j’ai modifier C7

    par contre si c2 = (close[2] >lowest[5](low))  ça marche

    cdt

    // Définition des paramètres du code
    DEFPARAM CumulateOrders = False // Cumul des positions désactivé
    
    // Conditions pour ouvrir une position acheteuse
    c1 = (close[2] < open[2])
    //c2 =  (close[2] < lowest[5](low))
    c3 = (DClose(1) > DOpen(1))
    c4 = (DClose(1) > close[2])
    c5 = (DClose(0) < DOpen(0))
    c6 = (DClose(0) < close[2])
    
    //indicator1 = MACD[2,4,1](MACD[24,52,1](close))
    //indicator2 = MACD[2,4,1](MACD[24,52,1](close))
    indicator1 = MACDline[12,26,9](close)
    indicator2 = MACD[12,26,9](close)
    c7 = (indicator1 > indicator2)
    //AND c2  
    IF c1 AND c3 AND c4 AND c5 AND c6 and c7 THEN
    BUY 1 SHARES AT MARKET TOMORROWOPEN
    ENDIF
    
    // Conditions pour fermer une position acheteuse
    indicator3 = ExponentialAverage[4](close)
    c8 = (close CROSSES UNDER indicator3)
    
    IF c8 THEN
    SELL AT MARKET
    ENDIF
    #88054 quote
    lb
    Participant
    Junior

    bonjour fifi, merci pour ton aide et le temps passé.

    J’ai essayé tes modifications mais je n’arrive pas à ce que je souhaite backtester:

    dans un premier temps je veux que le système identifie la configuration suivante: une bougie rouge (avec clôture < aux 5 qui la précède) suivie d’une bougie verte suivie à nouveau d’une bougie rouge avec une clôture plus basse que celle de la bougie rouge d’avant hier

    => la condition c2 est: la clôture d’avant hier est la plus basse des 5 clôtures qui la précède (je crois que ma 1ère erreur est que le code ‘lowest[5](low)’ renvoi au plus bas des 5 dernières bougies à partir de celle d’aujourd’hui et non à partir de la bougie d’avant hier)

    si la figure en chandelier ci-avant est identifiée je souhaite alors que le système vérifie s’il y a une divergence sur le macd (2,4,1) entre l’avant dernière bougie rouge (donc celle d’avant hier) et la dernière bougie rouge (donc celle d’aujourd’hui): la valeur du macd (2,4,1) d’avant hier est > à la valeur du macd (2,4,1) du jour

    si configuration en chandelier décrite ci-dessus + divergence sur macd alors achat à l’ouverture de la journée suivante (cf copie écran)

    pour la sortie à voir si on peut cumuler un stop suiveur à 1 % du gain max et un stop loss à 1 % du montant investi

    si c’est trop compliqué ce n’est pas grave merci quand même ✌

    Capture.png Capture.png
    #88056 quote
    lb
    Participant
    Junior

    faute de frappe dans mon précédent message, lire:

    la valeur du macd (2,4,1) d’avant hier est < à la valeur du macd (2,4,1) du jour

    #88059 quote
    fifi743
    Participant
    Master

    c’est en journalier bien sur.

    j’ai essayé de répondre a tes questions .

    Cdt

    dans un premier temps je veux que le système identifie la configuration suivante: une bougie rouge (avec clôture < aux 5 qui la précède) suivie d’une bougie verte suivie à nouveau d’une bougie rouge avec une clôture plus basse que celle de la bougie rouge d’avant hier

    Dclose(0) <Dopen(0) and Dlow(0)<DLow(5)

    => la condition c2 est: la clôture d’avant hier est la plus basse des 5 clôtures qui la précède (je crois que ma 1ère erreur est que le code ‘lowest[5](low)’ renvoi au plus bas des 5 dernières bougies à partir de celle d’aujourd’hui et non à partir de la bougie d’avant hier)

    Dclose(2)<Dclose(5)

    si la figure en chandelier ci-avant est identifiée je souhaite alors que le système vérifie s’il y a une divergence sur le macd (2,4,1) entre l’avant dernière bougie rouge (donc celle d’avant hier) et la dernière bougie rouge (donc celle d’aujourd’hui): la valeur du macd (2,4,1) d’avant hier est > à la valeur du macd (2,4,1) du jour

    Nicolas thanked this post
    #88061 quote
    lb
    Participant
    Junior

    merci je regarderai ça plus tard, bon we

    #88275 quote
    lb
    Participant
    Junior

    Bonjour,

    je souhaiterais pouvoir coder la condition c1 suivante, je vous met ce que j’ai écrit mais cela ne marche pas , pouvez vous m’aider, merci :

    //la clôture du jour doit être supérieure à MME12 du jour et supérieure à MME24 du jour mais si clôture du jour supérieure à MME12 et inférieur à MME24 du jour alors MM5 du jour et MM20 du jour doivent être haussières

    indicator1 = Average[5](close)
    indicator2 = ExponentialAverage[12](close)
    indicator3 = ExponentialAverage[24](close)
    indicator4 = ExponentialAverage[20](close)
    c1 = (dclose(0)> indicator2 [0] and dclose (0)> indicator3 [0]) or (dclose (0) > indicator2 [0] and dclose (0) < indicator3 [0] and indicator1 [0] > indicator1 [1] and indicator4 [0] > indicator4 [1])

     

    IF c1 THEN
    BUY 1 SHARES AT MARKET TOMORROWOPEN
    ENDIF

    // Conditions pour fermer une position acheteuse
    c2 = (close < indicator1)

    IF c2 THEN
    SELL AT MARKET
    ENDIF

    #88285 quote
    swapping
    Participant
    Master
    indicator1 = Average[5](close)
    indicator2 = ExponentialAverage[12](close)
    indicator3 = ExponentialAverage[24](close)
    indicator4 = ExponentialAverage[20](close)
    c1 = (dclose(0)> indicator2 [0] and dclose (0)> indicator3 [0]) or (dclose (0) > indicator2 [0] and dclose (0) < indicator3 [0] and indicator1 [0] > indicator1 [1] and indicator4 [0] > indicator4 [1])
    
     
    
    IF c1 THEN
    BUY 1 SHARES AT MARKET TOMORROWOPEN
    ENDIF
    
    // Conditions pour fermer une position acheteuse
    c2 = (close < indicator1)
    
    IF c2 THEN
    SELL AT MARKET
    ENDIF


    @lb
    ► voila le résultat formaté en utilisant le bouton [Insert PRT code] mais je ne peux t’aider pour ta question …

    #88289 quote
    lb
    Participant
    Junior

    merci, je regarde ça ce soir.

    #88290 quote
    lb
    Participant
    Junior

    pas attendu ce soir, merci c’est ok

    #88445 quote
    lb
    Participant
    Junior

    Bonsoir,

    je ne comprend pas, j’ai ce bout de code qui dit que:

    => si MACD (48,104,1) du jour est supérieur à MACD (48,104,1) de la veille alors achat

    => puis quand clôture du jour sous moyenne mobile exponentielle 2 alors vente des positions achetées

    // Définition des paramètres du code
    DEFPARAM CumulateOrders = False // Cumul des positions désactivé

    // Conditions pour ouvrir une position acheteuse
    indicator1 = MACDline[48,104,1] (close)
    c1 = (indicator1 [0]> indicator1[1])

    IF c1 THEN
    BUY 1 SHARES AT MARKET
    ENDIF

    // Conditions pour fermer une position acheteuse
    indicator2 = exponentialAverage[2](close)
    c2 = (DClose(0) < indicator2 [0])

    IF c2 THEN
    SELL AT MARKET
    ENDIF

    je ne sais pas à quoi correspond la flêche jaune et croix jaune sur la bougie du 21/03/2018 (cf copie écran en pj): on dirait l’exécution d’un ordre de sortie de marché sauf qu’il n’y a pas de position en cours (et cela se reproduit à maintes reprises).

    de plus il est normal que le 20/03/2018 la précédente position soit vendue à l’ouverture (puisque condition de sortie C < MME2 remplie le 19/03/2018) toutefois à la clôture de ce même 20/03/2018 la condition pour acheter (MACD (48,104,1) haussier) est toujours valide donc on devrait avoir un ordre d’achat le 21/03/2018 sauf que non.

    une idée d’où cela pourrait venir?

    d’avance merci

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

novice tourne en rond


ProOrder : Trading Automatique & Backtests

New Reply
Author
author-avatar
lb @lb Participant
Summary

This topic contains 22 replies,
has 4 voices, and was last updated by lb
7 years, 1 month ago.

Topic Details
Forum: ProOrder : Trading Automatique & Backtests
Language: French
Started: 01/04/2019
Status: Active
Attachments: 4 files
Logo Logo
Loading...