Utiliser indicateur personnel dans une stratégie automatique

Viewing 13 posts - 1 through 13 (of 13 total)
  • Author
    Posts
  • #137563 quote
    Jonntradeauto
    Participant
    New

    Bonjour a tous,

    J’ai créer un indicateur perso basé sur le rsi et des moyennes mobiles, bref ce script fonctionne comme il faut et me donne des signaux achats pour du scalping, j’aimerais donc maintenant le passé en automatique mais la problème quand je créer un backtest avec la version visuel et que je clique sur mon indicateur ça me dit “l’indicateur que vous avez sélectionnez ne retourne aucune valeur”

    Comment régler le soucis, faut il que je renseigne une variable qui pourras être utilisé?

    Merci a ceux qui prendrons le temps de me répondre.

    #137565 quote
    fifi743
    Participant
    Master

    bonjour,

    apres return tu doit mettre une variable

    exemple:

    signal=0
    
    if condition then
    signal=1
    endif
    
    return signal
    Nicolas thanked this post
    #137573 quote
    Jonntradeauto
    Participant
    New

    Merci ça fonctionne

    #137577 quote
    Jonntradeauto
    Participant
    New

    J’ai un autre problemes avec le script

    Je vous joint un screen pour mieux comprendre,

    L’indicateur avec les rectangle bleu, la ou il commence me donne un signale a l’achat et la fin du rectangle un sortie de position.

    Sur le screen:

    1. prise de position a l’achat
    2. Take profit a 10
    3. Ca repart
    4. La ou ca devrez repartir

    En manuel aucuns soucis je suis gagnant, mais lorsque j’automatise ca et que je mets un stop loss a 10 et le take profits 10 également ca prends bien la position au début du rectangle mais une fois le Take profits touché ca reprend une position si le rectangle bleu n’ai pas fini, le probleme c’est que en milieux de rectangle je ne suis plus rentable.

    Je cherche donc une fois une position prise que meme si ca prends le profit a 10 ca reprenne seulement au rectangle bleu d’apres.

    Auriez vous une solutions.

    Annotation-2020-06-29-225152.png Annotation-2020-06-29-225152.png
    #137606 quote
    Nicolas
    Keymaster
    Master

    Pour résumé le signal est celui qui voit la condition qui te permet de créer le rectangle être VRAI sur la bougie courante et FAUSSE sur la précédente.

    if bleu and not bleu[1] then 
     signal = 1
    else 
     signal = 0
    endif
    #137609 quote
    Jonntradeauto
    Participant
    New

    Merci beaucoup,

    Ou je doit mettre ce code et pourquoi bleu et not bleu? je n’est pas c’est variable chez moi, je et le code de mon backtest

    // Definition of code parameters
    DEFPARAM CumulateOrders = False // Cumulating positions deactivated
    
    // Conditions to enter long positions
    indicator1 = CALL "Scalping DAX M1"[1]
    c1 = (indicator1 = 1)
    
    IF c1 THEN
    BUY 1 CONTRACT AT MARKET
    ENDIF
    
    // Stops and targets
    SET STOP pLOSS 10
    SET TARGET pPROFIT 10
    

    Pourez tu me dire ou placer le code que tu ma donné juste en haut?

    if bleu and not bleu[1] then 
     signal = 1
    else 
     signal = 0
    endif
    #137612 quote
    Nicolas
    Keymaster
    Master

    Je ne sais pas où tu dois le mettre, et je me doute que ces variables n’existent pas chez toi 🙂 C’est un exemple de code pour te faire comprendre la phrase que j’ai énoncé juste avant soit :

    “le signal est celui qui voit la condition qui te permet de créer le rectangle être VRAI sur la bougie courante et FAUSSE sur la précédente.”

    Hors je ne sais pas quelle condition dans ton indicateur de signal te permet de créer ce rectangle bleu, d’où le code exemple. Si bougie courante condition BLEU est OK et que PAS OK (NOT) dans la précédente alors signal.

    #137615 quote
    Jonntradeauto
    Participant
    New

    ok je comprend,

    Voila valeur retourné par mon indicateur

    AchatEnCours = 0

    ou

    AchatEnCours = 1

    ensuite dans mon backtest je recupere cette valeur si c’est sur 1 on le rectangle et bleu et on prend la position d’achat et si c’est 0 rien ne ce passe

    donc ton code donnerez

    if AchatEnCours and not AchatEnCours[1] then
        AchatEnCours = 1
    else
      AchatEnCours = 0
    endif

    ce qui me parrais assez bizzare

    je te mets le code complet de mon indicateur, peut tu m’aider ?

    // -- Initialisation des variables
    ConditionMultiplesEMA = 1
    
    // ** Conditions EMA
    // -- Indicateurs
    MMRapide = ExponentialAverage[20](Close)
    MMNormale = ExponentialAverage[50](Close)
    MMLente = ExponentialAverage[100](Close)
    
    IF ConditionMultiplesEMA = 1 THEN
    // -- Conditions Signaux d'ouverture d'ACHAT EMA avec Multiples EMA
    CAEMA = Close >= MMRapide AND MMRapide > MMNormale AND MMNormale > MMLente
    // -- Conditions Signaux d'ouverture de VENTE EMA avec Multiples EMA
    CVEMA = Close <= MMRapide AND MMRapide < MMNormale AND MMNormale < MMLente
    ELSE
    // -- Conditions Signaux d'ouverture d'ACHAT EMA avec une seule EMA20
    CAEMA = 1
    // -- Conditions Signaux d'ouverture de VENTE EMA avec une seule EMA20
    CVEMA = 1
    ENDIF
    
    // ** Conditions Stochastic
    // -- Variables
    Periode = 14
    KPeriode = 3
    DPeriode = 5
    
    // -- Indicateurs
    Stoch = Stochastic[Periode,KPeriode](close)
    MStoch = ExponentialAverage[DPeriode](Stoch)
    
    // -- Conditions Signaux d'ouverture d'ACHAT MACD
    CAMACD = Stoch >= MStoch AND CAEMA
    IF CAMACD = 1 THEN
    AchatEnCours = 1
    ENDIF
    // -- Conditions Fin Signaux d'ouverture d'ACHAT MACD
    IF AchatEnCours = 1 AND Close < MMRapide AND Stoch <= MStoch THEN
    AchatEnCours = 0
    ENDIF
    
    // -- Conditions Signaux d'ouverture de VENTE MACD
    CVMACD = Stoch <= MStoch AND CVEMA
    IF CVMACD = 1 THEN
    VenteEnCours = 1
    ENDIF
    // -- Conditions Fin Signaux d'ouverture de VENTE MACD
    IF VenteEnCours = 1 AND Close > MMRapide AND Stoch >= MStoch THEN
    VenteEnCours = 0
    ENDIF
    
    
    
    IF AchatEnCours THEN
    BACKGROUNDCOLOR (0,200,200,30)
    ELSIF VenteEnCours THEN
    BACKGROUNDCOLOR (200,0,100,30)
    ENDIF
    
    RETURN AchatEnCours
    #137618 quote
    Nicolas
    Keymaster
    Master

    Voilà, l’indicateur renvoi maintenant la variable “signal”, si celle-ci  est égale à 1 alors c’est un signal valide au début de ta zone bleue. J’ai ajouté une petite flèche pour que tu comprennes bien.

    // -- Initialisation des variables
    ConditionMultiplesEMA = 1
    
    // ** Conditions EMA
    // -- Indicateurs
    MMRapide = ExponentialAverage[20](Close)
    MMNormale = ExponentialAverage[50](Close)
    MMLente = ExponentialAverage[100](Close)
    
    IF ConditionMultiplesEMA = 1 THEN
    // -- Conditions Signaux d'ouverture d'ACHAT EMA avec Multiples EMA
    CAEMA = Close >= MMRapide AND MMRapide > MMNormale AND MMNormale > MMLente
    // -- Conditions Signaux d'ouverture de VENTE EMA avec Multiples EMA
    CVEMA = Close <= MMRapide AND MMRapide < MMNormale AND MMNormale < MMLente
    ELSE
    // -- Conditions Signaux d'ouverture d'ACHAT EMA avec une seule EMA20
    CAEMA = 1
    // -- Conditions Signaux d'ouverture de VENTE EMA avec une seule EMA20
    CVEMA = 1
    ENDIF
    
    // ** Conditions Stochastic
    // -- Variables
    Periode = 14
    KPeriode = 3
    DPeriode = 5
    
    // -- Indicateurs
    Stoch = Stochastic[Periode,KPeriode](close)
    MStoch = ExponentialAverage[DPeriode](Stoch)
    
    // -- Conditions Signaux d'ouverture d'ACHAT MACD
    CAMACD = Stoch >= MStoch AND CAEMA
    IF CAMACD = 1 THEN
    AchatEnCours = 1
    ENDIF
    // -- Conditions Fin Signaux d'ouverture d'ACHAT MACD
    IF AchatEnCours = 1 AND Close < MMRapide AND Stoch <= MStoch THEN
    AchatEnCours = 0
    ENDIF
    
    // -- Conditions Signaux d'ouverture de VENTE MACD
    CVMACD = Stoch <= MStoch AND CVEMA
    IF CVMACD = 1 THEN
    VenteEnCours = 1
    ENDIF
    // -- Conditions Fin Signaux d'ouverture de VENTE MACD
    IF VenteEnCours = 1 AND Close > MMRapide AND Stoch >= MStoch THEN
    VenteEnCours = 0
    ENDIF
    
    
    
    IF AchatEnCours THEN
    BACKGROUNDCOLOR (0,200,200,30)
    ELSIF VenteEnCours THEN
    BACKGROUNDCOLOR (200,0,100,30)
    ENDIF
    
    signal=0
    if achatencours and not achatencours[1]then 
    signal=1
    drawarrowup(barindex,low) coloured(0,200,200)
    endif
    
    RETURN signal
    signal-zone-achat-dax.png signal-zone-achat-dax.png
    #137623 quote
    Jonntradeauto
    Participant
    New

    super merci, mais je ne suis toujours pas rentable en automatique, ce qui est bizzare car sur le graphe si on compte 10 de TP et 10 de SL je devrez être gagnant sur 70% des trades

    #137631 quote
    Jonntradeauto
    Participant
    New

    je pense que mon backtest n’est pas bien coder en fonctions de mon indicateurs, voila les deux codes sont ils bien coder pour fonctionner ensemble?

    / -- Initialisation des variables
    ConditionMultiplesEMA = 1
     
    // ** Conditions EMA
    // -- Indicateurs
    MMRapide = ExponentialAverage[20](Close)
    MMNormale = ExponentialAverage[50](Close)
    MMLente = ExponentialAverage[100](Close)
     
    IF ConditionMultiplesEMA = 1 THEN
    // -- Conditions Signaux d'ouverture d'ACHAT EMA avec Multiples EMA
    CAEMA = Close >= MMRapide AND MMRapide > MMNormale AND MMNormale > MMLente
    // -- Conditions Signaux d'ouverture de VENTE EMA avec Multiples EMA
    CVEMA = Close <= MMRapide AND MMRapide < MMNormale AND MMNormale < MMLente
    ELSE
    // -- Conditions Signaux d'ouverture d'ACHAT EMA avec une seule EMA20
    CAEMA = 1
    // -- Conditions Signaux d'ouverture de VENTE EMA avec une seule EMA20
    CVEMA = 1
    ENDIF
     
    // ** Conditions Stochastic
    // -- Variables
    Periode = 14
    KPeriode = 3
    DPeriode = 5
     
    // -- Indicateurs
    Stoch = Stochastic[Periode,KPeriode](close)
    MStoch = ExponentialAverage[DPeriode](Stoch)
     
    // -- Conditions Signaux d'ouverture d'ACHAT MACD
    CAMACD = Stoch >= MStoch AND CAEMA
    IF CAMACD = 1 THEN
    AchatEnCours = 1
    ENDIF
    // -- Conditions Fin Signaux d'ouverture d'ACHAT MACD
    IF AchatEnCours = 1 AND Close < MMRapide AND Stoch <= MStoch THEN
    AchatEnCours = 0
    ENDIF
     
    // -- Conditions Signaux d'ouverture de VENTE MACD
    CVMACD = Stoch <= MStoch AND CVEMA
    IF CVMACD = 1 THEN
    VenteEnCours = 1
    ENDIF
    // -- Conditions Fin Signaux d'ouverture de VENTE MACD
    IF VenteEnCours = 1 AND Close > MMRapide AND Stoch >= MStoch THEN
    VenteEnCours = 0
    ENDIF
     
     
     
    IF AchatEnCours THEN
    BACKGROUNDCOLOR (0,200,200,30)
    ELSIF VenteEnCours THEN
    BACKGROUNDCOLOR (200,0,100,30)
    ENDIF
     
    signal=0
    if achatencours and not achatencours[1]then
    signal=1
    drawarrowup(barindex,low) coloured(0,200,200)
    endif
    
    if VenteEnCours and not VenteEnCours[1]then
    signal=2
    drawarrowup(barindex,low) coloured(0,200,200)
    endif
     
    RETURN signal
    

    L’indicateur retourne 1 pour une position achat et 2 pour une position de ventes et 0 en temp normale, et voici le code de mon backtest

    // Definition of code parameters
    DEFPARAM CumulateOrders = False // Cumulating positions deactivated
    
    // Conditions to enter long positions
    indicator1 = CALL "saclp dax m1 auto"
    c1 = (indicator1 = 1)
    
    IF c1 THEN
    BUY 1 CONTRACT AT MARKET
    ENDIF
    
    // Conditions to exit long positions
    indicator2 = CALL "saclp dax m1 auto"
    c2 = (indicator2 = 2)
    
    IF c2 THEN
    SELL AT MARKET
    ENDIF
    
    // Stops and targets
    SET STOP pLOSS 10
    SET TARGET pPROFIT 20

    dans ce backtest creer en mode simplifié je ne voie pas la variable signal qui renvoie 1 pour l’achat 2 pour la vente et 0 en temps normale,

    #137728 quote
    Nicolas
    Keymaster
    Master

    L’instruction SELL est utilisé pour clôturer un achat (revendre).

    Pour vendre à découvert, il faut utiliser SELLSHORT.

    #138006 quote
    fifi743
    Participant
    Master

    bonsoir ,

    pour voir le retour de ton indicateur ,tu peux graphé ta variable comme ci dessous

    // Definition of code parameters
    DEFPARAM CumulateOrders = False // Cumulating positions deactivated
     
    // Conditions to enter long positions
    indicator1 = CALL "saclp dax m1 auto"
    c1 = (indicator1 = 1)
     
    IF c1 THEN
    BUY 1 CONTRACT AT MARKET
    ENDIF
     
    // Conditions to exit long positions
    
    c2 = (indicator1 = 2)
     
    IF c2 THEN
    SELL AT MARKET
    ENDIF
     
    // Stops and targets
    SET STOP pLOSS 10
    SET TARGET pPROFIT 20
    graph indicator1
Viewing 13 posts - 1 through 13 (of 13 total)
  • You must be logged in to reply to this topic.

Utiliser indicateur personnel dans une stratégie automatique


ProOrder : Trading Automatique & Backtests

New Reply
Author
Summary

This topic contains 12 replies,
has 3 voices, and was last updated by fifi743
5 years, 8 months ago.

Topic Details
Forum: ProOrder : Trading Automatique & Backtests
Language: French
Started: 06/29/2020
Status: Active
Attachments: 2 files
Logo Logo
Loading...