DEMANDE D'INDICATEUR STOCHASTIQUE TimeSeries

Viewing 10 posts - 1 through 10 (of 10 total)
  • Author
    Posts
  • #81270 quote
    WE ARE SOCIETY
    Participant
    Senior

    Bonjour,

    Je souhaiterai obtenir le code de l’indicateur intégré à Proorder sur la STochastique Méthode Time Series

    En effet, cette dernière est réactive au variation et je l’ai cherché sur tous les supports mais pas moyen de la trouver

    Je ne suis pas assez sachant en programmation et mathématiques pour la créer

    Pouvez-vous, s’il vous plait, m’aider ?

    #81276 quote
    Nicolas
    Keymaster
    Master

    Ci-dessous le code de l’oscillateur Stochastique associé à la moyenne mobile de type TimeSeries:

    p=14
    q=3
    r=5
    
    plusHaut = HIGHEST[p](HIGH)
    plusBas = LOWEST[p](LOW)
    
    oscillateur = (CLOSE - plusBas) / (plusHaut - plusBas) * 100
    
    ligneK = AVERAGE[q,6](oscillateur)
    ligneD = AVERAGE[r,6](ligneK)
    
    RETURN ligneK AS "%K", ligneD AS "%D"

    Le résultat est bien le même que la version de la plateforme.

    ginko thanked this post
    stochastic-timeseries.png stochastic-timeseries.png
    #81309 quote
    WE ARE SOCIETY
    Participant
    Senior

    Bonjour Nicolas et merci pour votre aide.

    Croyez-vous qu’il soit possible d’approcher par les résultats du code 2 fois ci-dessous quasi parfait qui triche avec le DPO

    J’ai déjà essayé de remplacer le DPO par les MM mais celà ne donne que 25% du résultat avec le code suivant

    Je l’ai testé sur le DAX 30 mon support favori

    k=33
    once rr=1
    n=(k*2)-4
    p=(n/2)-1
     
    pprc=n
    avg1 = average[pprc](high)
    r = round(pprc/2) +1
    myDPO1 = high - avg1[r]
    avg2 = average[pprc](low)
    myDPO2 = low - avg2[r]
    avg3=average[pprc](close)
    myDP03=close-avg3[r]
     
    h1=myDPO1
    moyh=high-h1
    hi=(moyh-moyh[1]+(high[p])/n)*n
    hi=(round(hi*100))/100
    l1=myDPO2
    moyl=low-l1
    lo=(moyl-moyl[1]+(low[p])/n)*n
    lo=(round(lo*100))/100
    clo1=myDP03
    moyc=close-clo1
    clot=(moyc-moyc[1]+(close[p])/n)*n
    clot=(round(clot*100))/100

     

    Cependant j’ai observé sa façon d’agir et j’ai pu en dégager sa technique partielle :

    OPEN[2]>OPEN AND LOW[1]<open pour les achats et

    OPEN[2]<OPEN AND HIGH[1]>open pour les ventes et je pense lié à une sorte de stochastique Time Series …

    Qu’en pensez-vous ?

    DEFPARAM CUMULATEORDERS = FALSE
    DEFPARAM FLATAFTER=163000
    Positionsize = 3
     
    once rr=1
    mb=average[20](typicalprice)
    k=48
    n=(k*2)-4
    p=(n/2)-1
     
    h1=DPO[n](high)
    moyh=high-h1
    hi=(moyh-moyh[1]+(high[p])/n)*n
    hi=(round(hi*100))/100
     
    l1=dpo[n](low)
    moyl=low-l1
    lo=(moyl-moyl[1]+(low[p])/n)*n
    lo=(round(lo*100))/100
     
    clo1=dpo[n](close)
    moyc=close-clo1
    clot=(moyc-moyc[1]+(close[p])/n)*n
    clot=(round(clot*100))/100
     
    cond1=(high>high[1] and high>high[2])
    cond2=(cond1 and high>hi[46]) and (barindex>bari or rr=-1)
    if cond1 and cond2 then
    flagg=1
    targeth=high
    targetl=lo[46]
    else
    flagg=0
    signa=mb
    endif
    for zz=0 to 45
    if clot[45-zz]<targetl and hi[45-zz]<=targeth and flagg=1  then
    signa=high+(averagetruerange[20](close))*.5
    rr=1
    bari=barindex+zz+2
    break
    elsif     hi[45-zz]>targeth then
    signa=mb
    break
    endif
    next
    condi=(low<low[1] and low<low[2]) and low<lo[46] and (barindex>bar or rr=1)
    if condi then
    fflag=1
    target1=low
    target2=hi[46]
    else
    fflag=0
    siigna=mb
    endif
    for kk=0 to 45
    if clot[45-kk]>target2 and lo[45-kk]>=target1 and fflag=1 then
    siigna=low-(averagetruerange[20](close))*.5
    rr=-1
    bar=barindex+kk+2
    break
    elsif lo[45-kk]<target1 then
    siigna=mb
    break
    endif
    next
    if barindex < 100 then
    signa=undefined
    siigna=undefined
    endif
     
    // Conditions pour ouvrir une position acheteuse
    IF siigna < mb THEN
    BUY Positionsize CONTRACTS AT MARKET
    ENDIF
     
    //Conditions pour ouvrir une position vendeuse
    IF signa > mb THEN
    Sellshort Positionsize CONTRACTS AT MARKET
    ENDIF
     
    //STOP
    SET STOP LOSS 94
    #81373 quote
    Nicolas
    Keymaster
    Master

    L’utilisation du DPO dans l’indicateur n’a d’utilité que parce qu’il connaît le future, on en extrait donc les bonnes “coordonnées” pour tracer le canal (si je me souviens bien à quoi l’indicateur que tu as posté ressembles), et ainsi obtenir une parfaite visualisation de ce qui a était. Remplacer le DPO par des moyennes mobiles, c’est une idée mais, comme tu l’as constaté, n’amène pas grand chose au final, puisque il n’y a rien de mieux que de connaître le futur ! N’est ce pas ? 😆

    #81672 quote
    WE ARE SOCIETY
    Participant
    Senior

    Bonjour Nicolas,

    Je souhaiterai dans mon code sur le Dax30 en 5 min, faire référence au DOW JONES, par exemple, si le Dow Jones descends depuis 10 bougies , ne faire que des ventes.

    Ce que je ne sais pas c’est : est-ce que c’est possible et aussi comment faire appel au Cours du DOW JONES sur CFD

    D’avance merci pour ta réponse.

    #81677 quote
    Nicolas
    Keymaster
    Master

    Il n’est pas possible au jour d’aujourd’hui de tester un autre instrument que celui sur lequel l’indicateur est appliqué, désolé.

    #82671 quote
    WE ARE SOCIETY
    Participant
    Senior

    Bonjour Nicolas,

    Je ne comprends pas pourquoi il y a des écarts si importants en Backtest lorsque je change l’horaire de l’affichage du Dax30 dans les options de la plateforme avec le code ci-dessous qui est pour le DAX30 en 5 min. Lorsque je règle en heure anglaise 8:40 jusque 19:00 j’ai un super résultat et si je passe à 19:30 j’ai un résultat beaucoup moins important alors que les ordres n’ont pas changé et que je suis flat à 16:30 (heure anglaise) dans le code. As-tu une idée ?

    DEFPARAM CUMULATEORDERS = FALSE
    DEFPARAM FLATAFTER=163000
    defparam preloadbars = 300
    Positionsize = 2
    REM LE WEEK END C'EST FERME
    if dayofweek=6 or dayofweek=7 then
    repos=0
    else
    repos=1
    endif
    rem on arrete plus tot le vendredi
    IF DayOfWeek=5 and time>150000 then
    vendredi=1
    else
    vendredi=1
    endif
    rem on ne trade que la journée
    if time<084000 and time>162500 then
    journee=0
    else
    journee=1
    endif
    rem on ne trade pas le midi
    if (time>105500 and time<120000) then
    tradetime=1
    else
    tradetime=1
    endif
    rem on ne vends pas en début d'après midi entre 13h30 et 14h15
    IF TIME >123000 and time <131500 then
    vente=1
    Else
    vente=1
    endif
    rem on ne vends pas  pas durant la phase haussière fin de séance
    if time>152000 and time<163000 then
    vente2=1
    else
    vente2=1
    endif
    rem on n'achète pas durant la phase baissière entre 12h55 et 13h25
    if time>115500 and time<122500 then
    achat=0
    else
    achat=1
    endif
    rem on n'achète pas durant la phase baissière de 16h00 à 16h35
    if time>150000 and time<153500 then
    achat2=0
    else
    achat2=1
    endif
    rem on ne vends pas entre 11h28 et 12h00
    if time>102800 and time<110000 then
    vente3=1
    else
    vente3=1
    endif
    rem on évite les extrêmes en cas de retournement brutal
    IF (CLOSE[50]-close)>45 then
    stopvente=1
    else
    stopvente=1
    endif
    if (close-close[50])>45 then
    stopachat=1
    else
    stopachat=1
    endif
    condachat=(ACHAT2=1 and achat=1 and vendredi=1 and tradetime=1 and journee=1 and repos=1 and stopachat=1)
    condivente=(VENTE2=1 AND VENTE=1 and vente3=1 and vendredi=1 and tradetime=1 and journee=1 and repos=1 and stopvente=1)
    once rr=1
    mb=average[10](medianprice)
    k=28
    n=(k*2)-4
    p=(n/2)+1
    
    
    avg = average[k](high)
    r = round(k/2) +1
    h4 = high - avg[r]
    myDPO = h4
     
    h1=myDPO
    moyh=high-h1
    hi=(moyh-moyh[1]+(high[p])/n)*n
    hi=(round(hi*100))/100
     
    avg1 = average[k](low)
    r1 = round(k/2) +1
    h1 = low - avg1[r1]
    myDPOl = h1
     
    l1=mydpol
    moyl=low-l1
    lo=(moyl-moyl[1]+(low[p])/n)*n
    lo=(round(lo*100))/100
     
    avg2 = average[k](close)
    r4 = round(k/2) +1
    h2 = close - avg2[r4]
    myDPO2 = h2
      
    clo1=mydpo2
    moyc=close-clo1
    clot=(moyc-moyc[1]+(close[p])/n)*n
    clot=(round(clot*100))/100
     
    cond1=(high>high[1] and high>high[2])
    cond2=(cond1 and high>hi[46]) and (barindex>bari or rr=-1)
    if cond1 and cond2 then
    flagg=1
    targeth=high
    targetl=lo[46]
    else
    flagg=0
    signa=mb
    endif
    for zz=0 to 45
    if clot[45-zz]<targetl and hi[45-zz]<=targeth and flagg=1  then
    signa=high+(averagetruerange[20](close))*.5
    rr=1
    bari=barindex+zz+2
    break
    elsif     hi[45-zz]>targeth then
    signa=mb
    break
    endif
    next
    condi=(low<low[1] and low<low[2]) and low<lo[46] and (barindex>bar or rr=1)
    if condi then
    fflag=1
    target1=low
    target2=hi[46]
    else
    fflag=0
    siigna=mb
    endif
    for kk=0 to 45
    if clot[45-kk]>target2 and lo[45-kk]>=target1 and fflag=1 then
    siigna=low-(averagetruerange[20](close))*.5
    rr=-1
    bar=barindex+kk+2
    break
    elsif lo[45-kk]<target1 then
    siigna=mb
    break
    endif
    next
    if barindex < 100 then
    signa=undefined
    siigna=undefined
    endif
     
    // Conditions pour ouvrir une position acheteuse
    IF siigna < mb and condachat THEN
    BUY Positionsize CONTRACTS AT MARKET
    ENDIF
     
    //Conditions pour ouvrir une position vendeuse
    IF signa > mb and condivente THEN
    Sellshort Positionsize CONTRACTS AT MARKET
    ENDIF
     
    //STOP
    SET STOP LOSS 900
    
    #82766 quote
    Nicolas
    Keymaster
    Master

    La modification des horaires pourrait influencer la valeur des indicateurs ? As-tu essayé de grapher tes variables à minima ?

    #82832 quote
    WE ARE SOCIETY
    Participant
    Senior

    Bonsoir Nicolas, je précise mon soucis, d’ailleurs je ne sais pas si tu travailles pour Prorealtime et si c’est à toi que je dois m’adresser ou directement au support technique, enfin bref : lorsque je code : if time<084000 or time>180000 afin de limiter le créneau horaire d’intervention, j’ai par exemple un profit de 700 € hors si je change les horaires d’affichage du dax dans les options de la plateforme, les résultats changent.

    Pourtant , les horaires sont contraints et le robot n’intervient que dans cette plage horaire

    Et par défaut, 200 bougies sont preload, alors que ma plus grande période est de 56 pour une moyenne mobile, même si je charge 300 bougies, celà ne change rien, c’est vraiment les horaires de la plateforme qui font tout changer au niveau du résultat

    Alors je me dis que peut-être lorsque l’on contraint à une plage horaire, il n’y a de bougies preload et que l’algo utilise peut-être l’historique avant 18h00 de la veille lors du démarrage à 8h40

    Je ne sais pas si je suis trés explicite

    Aussi, je pense que les ingénieurs de prorealtime pourraient trés facilement coder une fonction qui fait appel au cours du Dow Jones dans un code qui s’exécute sur le Dax 30 5 min, car à partir de 15h30 ( heure française) et à plus forte raison à partir de 17h30, c’est bien le Dow Jones qui donne la tendance au Dax, tout comme le Dax donne la tendance au France 40 en journée…..

    Peut-être que celà est possible en MQL4 sur Metatrader 4 ?????

    D’avance merci pour tes réponses, si tu ne les as pas, je les transmettrai au support technique et je tiendrai informé

    See You Soon

    #82841 quote
    Nicolas
    Keymaster
    Master

    On s’éloigne vraiment beaucoup du sujet de base ici 🙄

    Bref, rien qu’en utilisant l’instruction GRAPH, on débloque 90% des soucis de programmation et on apprend en même temps pourquoi on a eu ces problèmes pour ne plus les reproduire. Si tu as créé des horaires personnalisés, il est logique que les indicateurs ne se calculent plus de la même manière et donc tes résultats en ressortent différent.

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

DEMANDE D'INDICATEUR STOCHASTIQUE TimeSeries


ProBuilder : Indicateurs & Outils Personnalisés

New Reply
Author
Summary

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

Topic Details
Forum: ProBuilder : Indicateurs & Outils Personnalisés
Language: French
Started: 09/25/2018
Status: Active
Attachments: 1 files
Logo Logo
Loading...