Condition additionnelle PRCTrend

Viewing 2 posts - 1 through 2 (of 2 total)
  • Author
    Posts
  • #167554 quote
    Guibourse
    Participant
    Average

    Suite à une question posée sur la page de l’indicateur ASCTrend dont le code suit,  je vous expose mon problème : j’aimerais trouver comment ajouter une condition à l’apparition des flèches par rapport à un autre indicateur. Par exemple : afficher les flèches qui montent uniquement si le close est supérieur à une moyenne mobile et inversement.

    Nicolas m’avait déjà répondu que ça s’annonce en effet compliqué dans la mesure où  cette version du code “trace dans le passé depuis la barre courante, plutôt qu’en lisant l’historique au chargement”.

    Merci à tous !

    //PRC_ASCTrend | indicator
    //13.01.2021
    //Nicolas @ www.prorealcode.com
    //Sharing ProRealTime knowledge
    //converted from MT4 version
    
    // --- settings 
    RISK=3
    CountBars=300
    // --- end of settings 
    
    value10=3+RISK*2
    x1=67+RISK
    x2=33-RISK
    value11=value10
    
    shift=CountBars-11-1
    
    if islastbarupdate and barindex>CountBars then 
    while(shift>=0) do 
    
    Counter=shift
    iRange=0.0
    AvgRange=0.0
    for Counter=shift to shift+9 do 
    AvgRange=AvgRange+Abs(High[Counter]-Low[Counter])
    next
    
    iRange=AvgRange/10
    Counter=shift
    TrueCount=0
    while (Counter<shift+9 and TrueCount<1) do 
    if (Abs(Open[Counter]-Close[Counter+1])>=iRange*2.0) then 
    TrueCount=TrueCount+1
    endif
    Counter=Counter+1
    wend
    if (TrueCount>=1) then 
    MRO1=Counter
    else 
    MRO1=-1
    endif 
    
    Counter=shift
    TrueCount=0
    while (Counter<shift+6 and TrueCount<1) do 
    if (Abs(Close[Counter+3]-Close[Counter])>=iRange*4.6) then 
    TrueCount=TrueCount+1
    endif
    Counter=Counter+1
    wend
    if (TrueCount>=1) then 
    MRO2=Counter
    else
    MRO2=-1
    endif
    
    
    if (MRO1>-1) then 
    value11=3
    else 
    value11=value10
    endif
    if (MRO2>-1) then 
    value11=4
    else 
    value11=value10
    endif 
    
    value2=100-Abs(Williams[value11](close)[shift]) // PercentR(value11=9)
    $Tablevalue2[shift]=value2
    $val1[shift]=0
    $val2[shift]=0
    value3=0
    
    if (value2<x2) then 
    i1=1
    while ($Tablevalue2[shift+i1]>=x2 and $Tablevalue2[shift+i1]<=x1) do 
    i1=i1+1
    wend
    if ($Tablevalue2[shift+i1]>x1) then 
    value3=High[shift]+iRange*0.5
    if (shift = 1 and flagval1=0) then
    flagval1=1
    flagval2=0
    endif
    $val1[shift]=value3
    drawarrowdown(barindex[shift],$val1[shift]) coloured(255,0,255)
    endif
    endif
    
    if (value2>x1) then 
    i1=1
    while ($Tablevalue2[shift+i1]>=x2 and $Tablevalue2[shift+i1]<=x1) do 
    i1=i1+1
    wend
    if ($Tablevalue2[shift+i1]<x2) then 
    value3=Low[shift]-iRange*0.5
    if (shift = 1 and flagval2=0) then 
    flagval2=1
    flagval1=0
    endif
    $val2[shift]=value3
    drawarrowup(barindex[shift],$val2[shift]) coloured(0,255,255)
    endif
    endif
    
    
    shift=shift-1
    wend
    endif 
    return
    #167575 quote
    Nicolas
    Keymaster
    Master

    Ci-dessous la version du code sans tableaux de données et qui utilise le temps réel pour s’afficher (version traditionnelle) :

    // --- settings
    //RISK=3
    // --- end of settings
    
    value10=3+RISK*2
    x1=67+RISK
    x2=33-RISK
    value11=value10
    
    shift=0//CountBars-11-1
    buysig=0
    sellsig = 0
    
    Counter=shift
    iRange=0.0
    AvgRange=0.0
    for Counter=shift to shift+9 do
    AvgRange=AvgRange+Abs(High[Counter]-Low[Counter])
    next
    
    iRange=AvgRange/10
    Counter=shift
    TrueCount=0
    while (Counter<shift+9 and TrueCount<1) do
    if (Abs(Open[Counter]-Close[Counter+1])>=iRange*2.0) then
    TrueCount=TrueCount+1
    endif
    Counter=Counter+1
    wend
    if (TrueCount>=1) then
    MRO1=Counter
    else
    MRO1=-1
    endif
    
    Counter=shift
    TrueCount=0
    while (Counter<shift+6 and TrueCount<1) do
    if (Abs(Close[Counter+3]-Close[Counter])>=iRange*4.6) then
    TrueCount=TrueCount+1
    endif
    Counter=Counter+1
    wend
    if (TrueCount>=1) then
    MRO2=Counter
    else
    MRO2=-1
    endif
    
    
    if (MRO1>-1) then
    value11=3
    else
    value11=value10
    endif
    if (MRO2>-1) then
    value11=4
    else
    value11=value10
    endif
    
    value2=100-Abs(Williams[value11](close)[shift]) // PercentR(value11=9)
    $Tablevalue2[shift]=value2
    $val1[shift]=0
    $val2[shift]=0
    value3=0
    
    atr=AverageTrueRange[14](close)
    if (value2<x2) then
    //signals
    if value2[1]>x2[1] and lastsig>=0 then
    sellsig = 1
    lastsig = -1
    drawarrowup(barindex,low-atr/2) coloured(0,255,0)
    endif
    endif
    
    if (value2>x1) then
    //signals
    if value2[1]<x1[1] and lastsig<=0 then
    buysig = 1
    lastsig = 1
    drawarrowdown(barindex,high+atr/2) coloured(255,0,0)
    endif
    endif
    
    return buysig coloured(0,255,0) style(histogram),sellsig coloured(255,0,0) style(histogram)
    

    Tu pourras donc y ajouter toutes les conditions que tu souhaites.

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

Condition additionnelle PRCTrend


ProBuilder : Indicateurs & Outils Personnalisés

New Reply
Author
author-avatar
Guibourse @guibourse Participant
Summary

This topic contains 1 reply,
has 2 voices, and was last updated by Nicolas
4 years, 10 months ago.

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