Somme de différentes conditions pour créer un signal de trading

Viewing 12 posts - 1 through 12 (of 12 total)
  • Author
    Posts
  • #162528 quote
    kats
    Participant
    Junior

    Bonjour

    Je souhaite créer un code dans lequel je définie  plusieurs indicateurs comme dans le code que je vais faire suivre .

    je souhaite donner une valeur numérique  quand chaque indicateur rempli une condition défini afin de pouvoir créer une addition des valeurs de chaque condition validée pour que cette somme donne un résultat qui permet d’obtenir une flèche validant l’achat ou la vente.

    en gros si chaque indicateur a une valeur de 1 et qu’il y a trois indicateurs il me faudra un résultat de 2 pour obtenir une flèche up ou une valeur de -2 pour une flèche down.

    C’est ce que j’ai tenté de faire pour un essai sur le code suivant mais ca ne fonctionn

    SLIPPAGE1=25
    
     
    
     
    
    indicator2=exponentialAverage[1](close)-exponentialAverage[7](close)
    indicator3=exponentialAverage[7](close)-exponentialAverage[20](close)
    indicator4=exponentialAverage[20](close)-exponentialAverage[50](close)
    
    indicator5=exponentialAverage[5](close)-exponentialAverage[35](close)
    indicator6=exponentialAverage[35](close)-exponentialAverage[100](close)
    indicator7=exponentialAverage[100](close)-exponentialAverage[250](close)
    
     
    
     
    
    cond1 = (close >= CLOSE[1])
    
    cond2 = (indicator2 >= 0)
    
    cond3 = (indicator3 >= 0)
    
    cond4 = (indicator4 >= 0)
    
    IF cond1 THEN
    indic1 = 1
    endif
    IF cond2 THEN
    indic2 = 1
    endif
    IF cond3 THEN
    indic3 = 1
    endif
    if indic1 + indic2 +indic3 >=2 then
    DRAWARROWUP (barindex,BollingerDown-slippage1)coloured(253,108,158)
    endif
    RETURN

     

    e pas..

    Help si possible

    #162532 quote
    Nicolas
    Keymaster
    Master

    Le problème c’est que tu fais une somme des variables indic1,2,3 mais ces variables ne sont jamais remise à zéro, donc il suffit d’une seule fois pour que la condition soit vrai à l’infini.

    Je pense qu’il aurait été plus simple de faire :

    if cond1 + cond2 + cond3 >=2 then
     DRAWARROWUP (barindex,BollingerDown-slippage1)coloured(253,108,158)
    endif

    directement utilisé tes variables booléennes, qui elle sont testés à chaque bougie puisqu’elles ne sont pas enfermés dans une autre condition.

    #162546 quote
    kats
    Participant
    Junior

    Bonsoir et merci pour la réponse

    j’avais bien compris qu’en faisant comme tu me le dis ca fonctionnerait

    le problème c’est que je voudrais donner des valeurs différentes a chaque indicateur en mixant les uts grâce a une règle de 3 et que donc il faut que je puisse donner une valeur numérique en fonction de l’ut.

    Je m’explique

    Dans mes conditions je veux que pour prendre la position soit égale ou sup a une valeur minimum mais cette valeur peut etre obtenue par la somme de valeurs predefinies a savoir

    un macd >0 en 5 mn aura forcement plus de valeur qu’en 1 mn donc je veux pouvoir lui attribuer une valeur de 5 par exemple alors que le meme macd en 1 mn aura une valeur de 2 et ainsi de suite

    et donc en utilisant la condition citée ci dessus ca ne fonctionne pas

     

    merci

    #162595 quote
    Nicolas
    Keymaster
    Master

    Bien compris, comme je l’explique dans mon précédent message, je pense que ton problème vient du fait que tu ne remets pas à zéro les variables à chaque lecture du code. Donc si indic1 vaut 5 par ce que cond1 est vrai, il vaudra toujours 5 à la bougie suivante, même si cond1 n’est plus vrai.

    #162667 quote
    kats
    Participant
    Junior

    BONJOUR

    merci pour la reponse , ce que je ne comprends pas c’est comment definir la valeur de chaque indic dès lors qu’une condition est remplie

    merci

    #162668 quote
    Nicolas
    Keymaster
    Master

    Ton code est correct, selon ma compréhension de ton besoin, tu dois simplement ajouter ces lignes en tête du code ou juste avant la ligne 26 du code posté ci-dessus :

    indic1 = 0
    indic2 = 0
    indic3 = 0

    Pour la valeur / poids, que doit prendre chaque “indic”, tu le définis comme tu le veux dans tes conditions entre les lignes 27 et 35 (exemple indic1= 10 ; indic2= 3; indic3= 1=)

    #162674 quote
    kats
    Participant
    Junior

    ok je vais essayer de traduire cela

    merci

    #162696 quote
    kats
    Participant
    Junior

    Bonjour

    j’ai un probleme avec un indicateur que je veux mettre en place en groupant plusieurs indics le premier indic c’est celui du superextended créé par nicolas avec le code suivant

    // --- settings
    //multiplier=2.236
    //period=66
    //type=1 //1 = use ATR , 2 = Use standard deviation , 3 = Use standard error
    //midperiod=10
    // --- end of settings
     
    type=max(1,type)
    if type=1 then
    moy=averagetruerange[period](close)
    elsif type=2 then
    moy=std[period](close)
    elsif type=3 then
    moy=ste[period](close)
    endif
     
    price=(highest[midperiod](high)+lowest[midperiod](low))/2
    up=price+multiplier*moy
    dn=price-multiplier*moy
    once trend=1
    if close>up[1] then
    trend=1
    elsif close<dn[1] then
    trend=-1
    endif
    if trend<0 and trend[1]>0 then
    flag=1
    else
    flag=0
    endif
    if trend>0 and trend[1]<0 then
    flagh=1
    else
    flagh=0
    endif
    if trend>0 and dn<dn[1] then
    dn=dn[1]
    endif
    if trend<0 and up>up[1] then
    up=up[1]
    endif
    if flag=1 then
    up=price+multiplier*moy
    endif
    if flagh=1 then
    dn=price-multiplier*moy
    endif
    if trend=1 then
    mysupertrend=dn
    offset=moy
    color1=0
    color2=191
    color3=255
    else
    mysupertrend=up
    offset=-moy
    color1=255
    color2=69
    color3=0
    endif
     
    drawcandle(mysupertrend,mysupertrend+offset,mysupertrend,mysupertrend+offset) coloured(color1,color2,color3,50)bordercolor(100,100,100,0)
     
    if trend=1 and trend[1]<>1 then
    //drawarrowup(barindex,mysupertrend) coloured(color1,color2,color3)
    endif
    if trend=-1 and trend[1]<>-1 then
    //drawarrowdown(barindex,mysupertrend) coloured(color1,color2,color3)
    endif
     
    cond11=(trend=1 )
    cond12=(trend=-1 )

    auquel je souhaite ajouter ce code ci pour donner deux autres conditions mais quand je mets celui ci du tdi le code du super extended ne fonctionne plus correctement

    il doit y avoir une contradiction ou une variable ou une appellation identique dans les deux codes qui met le “bordel”

    //tdi
    Once RsiPeriod = 35
    
    Once VolatilityBand = 92
    
    Once RsiPricePeriod = 5
    
    Once TradeSignalPeriod = 19
    
    Once TradeSignal2Period = 49
    
    
    r = Rsi[RsiPeriod](Close)
    
    Ma = Summation[VolatilityBand](r / VolatilityBand)
    
    
    //delta = 1.6185 * STD[VolatilityBand](r)
    
    //Up = Ma + delta
    
    //Down = Ma - delta
    
    
    RsiPriceLine = Average[RsiPricePeriod](r)
    
    TradeSignalLine = Average[TradeSignalPeriod](r)
    
    TradeSignalLine2 = Average[TradeSignal2Period](r)
    
    SLIPPAGE4=10
    
    
    cond40=(MA<=TradeSignalLine)
    //cond41=(d9>=0)
    //cond42=(d10>=0)
    //cond43=(d11>=0)
    
    //conditions à la baisse
    
    cond44=(MA>=TradeSignalLine)
    //cond45=(d9<=0)
    //cond46=(d10<=0)
    //cond47=(d11<=0)
    
    
    IF  cond40 THEN
    
    DRAWARROWUP (barindex,BollingerDown-slippage4)coloured(200,200,0)
    ENDIF
    IF  cond44 THEN
    DRAWARROWDOWN (barindex,BollingerUp+slippage4)coloured(200,200,0)
    endif
    RETURN
    

    merci

    #162802 quote
    Nicolas
    Keymaster
    Master

    Comment doivent opérer les deux codes en même temps, que doivent ils afficher et avec quelles conditions ? Une image peut être du signal souhaité ?

    #164662 quote
    kats
    Participant
    Junior

    Bonjour

    pas réussi a faire l indic d’addition , trop compliqué pour moi , pas assez douée.

    par contre j’ai un code pour l’indicateur magic trend qui fonctionne sur toutes les uts sans probleme.

    je vais mettre le code en dessous .

    J’essaye désespérément de le dupliquer pour mettre sur le 5 mn  sur le 1 mn  et je n’y arrive pas.

    if (CCI[50](typicalPrice)>=0) then
    magic=Low[1]-AverageTrueRange[5](close)
    endif
    
    if (CCI[50](typicalPrice)<0) then
    magic=High[1]+AverageTrueRange[5](close)
    endif
    
    if (CCI[50](typicalPrice)>=0 and magic<magic[1]) then
    magic=magic[1]
    endif
    
    if (CCI[50](typicalPrice)<0 and magic>magic[1]) then
    magic=magic[1]
    endif
    
    return magic
    

    je veux mettre celui ci sur le 1 mn et mettre le 5 mn sur le même

    //TimeFRAME= 1mn
    MAGIC=50
    TimeFRAME1Mn=1
    if (CCI[TimeFrame1mn*MAGIC](typicalPrice)>=0) then
    magic1mn=Low[1]-AverageTrueRange[5](close)
    endif
    
    if (CCI[TimeFrame1mn*MAGIC](typicalPrice)<0) then
    magic1mn=High[1]+AverageTrueRange[5](close)
    endif
    
    if (CCI[TimeFrame1mn*MAGIC](typicalPrice)>=0 and magic1mn<magic1mn[1]) then
    magic1mn=magic1mn[1]
    endif
    
    if (CCI[TimeFrame1mn*MAGIC](typicalPrice)<0 and magic1mn>magic1mn[1]) then
    magic1mn=magic1mn[1]
    endif
    //TimeFRAME= 5mn
    TimeFRAME5Mn=5
    if (CCI[TimeFrame5mn*MAGIC](typicalPrice)>=0) then
    magic5mn=Low[1]-AverageTrueRange[5](close)
    endif
    
    if (CCI[TimeFrame5mn*MAGIC](typicalPrice)<0) then
    magic5mn=High[1]+AverageTrueRange[5](close)
    endif
    
    if (CCI[TimeFrame5mn*MAGIC](typicalPrice)>=0 and magic5mn<magic5mn[1]) then
    magic5mn=magic5mn[1]
    endif
    
    if (CCI[TimeFrame5mn*MAGIC](typicalPrice)<0 and magic5mn>magic5mn[1]) then
    magic5mn=magic5mn[1]
    endif
    return magic1mn  as "Magic1mn Rouge/Vert",magic5mn  as "Magic5mn rouge/vert",ExponentialAverage(LinearRegression[MAGIC](close))+ slippageMM as "MM vert/rouge slippageMM as "
    
    

     

    graphe  j’ai donc fait ce code là mais rien a voir avec le 5 mn en comparaison ca marche pas

    merci

    #164663 quote
    kats
    Participant
    Junior

    j avais essayer ca aussi mais ca ne marche pas non plus

    if (CCI[1250](typicalPrice)>=0) then
    magic=Low[5]-AverageTrueRange[5](close)
    endif
    
    if (CCI[1250](typicalPrice)<0) then
    magic=High[5]+AverageTrueRange[5](close)
    endif
    
    if (CCI[1250](typicalPrice)>=0 and magic<magic[5]) then
    magic=magic[5]
    endif
    
    if (CCI[1250](typicalPrice)<0 and magic>magic[5]) then
    magic=magic[5]
    endif
    
    return magic
    

    merci

    #164673 quote
    Nicolas
    Keymaster
    Master

    On peut désormais utiliser le MTF pour les indicateurs, voir ce sujet : indicateurs MTF pour ProRealTime disponible! programmation MTF pour ProBuilder

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

Somme de différentes conditions pour créer un signal de trading


ProBuilder : Indicateurs & Outils Personnalisés

New Reply
Author
author-avatar
kats @kats Participant
Summary

This topic contains 11 replies,
has 2 voices, and was last updated by Nicolas
4 years, 11 months ago.

Topic Details
Forum: ProBuilder : Indicateurs & Outils Personnalisés
Language: French
Started: 02/24/2021
Status: Active
Attachments: No files
Logo Logo
Loading...