trasformazione valore matematico in PRT

Viewing 15 posts - 1 through 15 (of 17 total)
  • Author
    Posts
  • #107664 quote
    coscar
    Participant
    Senior

    Salve vorrei sapere se è possibile trasformare tale formula matematica in codice PRT:

    XClose = (Close)^2 * 8.28171e-05

    Xclose = EXP(2*LOG(Close) * “?”

    Grazie

    #107686 quote
    Nicolas
    Keymaster
    Master

    Per favore, non aprire un nuovo argomento ogni volta che hai una domanda sulla stessa cosa … Non mi rispondi nemmeno all'ultima domanda che ho posto nell'altro argomento a riguardo. Comunque, se ti seguo, vuoi fare un valore esponente di -5 di 8,28171? La tua formula non è chiara, dal momento che non prendi in considerazione il tuo Close²? Per trasformare "XClose = (Close) ^ 2 * 8.28171e-05", farei:

    //XClose = (Close)^2 * 8.28171e-05
    
    xclose = square(close) * (1/(exp(5*log(8.28171))))
    #107696 quote
    coscar
    Participant
    Senior

    Grazie Nicolas

    scusa ma pensavo fosse una richiesta diversa dalla precedente, cerco di creare (come tutti) un indicatore che mi dia una previsione dei prezzi di chiusura giornaliera utilizzando i dati precedenti e l’apertura odierna alle ore 01:00. Attualmente ho creato un indicatore che ha un margine di errore in media del 20% nella settimana, cioè sbaglia previsione una candela su 5, e fornisce il prezzo di chiusura e posizione corrente.

    Ho iniziato da qualche giorno ad utilizzarlo su un conto reale in modalità manuale e sembra rispondere bene

    Con lo stesso procedimento vorrei crneare anche una previsione per il Massimo ed il minimo del giorno ed avviare una strategia automatica, ma alcune formule non sono in grado di trasformarle in PRT e senza il tuo aiuto non ci sarei riuscito.

    Allego una immagine dell’indicatore, pubblicherò il codice non appena completato.

    Grazie ancora per la tua disponibilità e professionalità.

    Previsione-EurUsd-V1.jpg Previsione-EurUsd-V1.jpg
    #107700 quote
    Nicolas
    Keymaster
    Master

    Buono! Grazie in anticipo per la condivisione di questo indicatore di previsione! 😉

    #107975 quote
    coscar
    Participant
    Senior

    Salve

    allego codice di un indicatore creato per prevedere la posizione (Long/Short) ed il prezzo di chiusura della candela giornaliera odierna valido solo su Eur/Usd Mini e relativo scarto dalla chiusura reale

    L’indicatore nasce da un modello creato ed analizzato da un software di rete neurale attraverso l’analisi di diversi parametri.

    L’indicatore funziona benissimo tanto da provare a tradare in modalità convenzionale con un buon successo su conto reale.

    Come da screenshots ho creato anche un indicatore esterno che mi evidenziasse il margine di errore settimanale con numero di candele e percentuale, in media l’indicatore mostra una previsione errata di  1 candela su 5 (circa 20%).

    Per comodità sono stati inseriti  nr.2 flag per la colorazione di background e l’ inserimento una regressione lineare con bande inferiori e superiori, per una futura strategia automatica.

    Ieri , 18/09/2019, ho notato qualcosa di strano:

    alle ore 08:00 l’indicatore prevedeva una posizione Long per la candela del 18/09/2019 ed ho aperto una posizione, ma chiusa comunque in profitto;

    questa mattina invece mi indica una posizione Short per la stessa candela.

    Vi chiedo cortesemente, se possibile, approffitare della vostra esperienze per verificare e risolvere questo bug .

    Allego il tutto.

    Saluti

    //
    //+--------------------------------------------------------------+
    //|              Previsione Chiusura EurUsd Giornaliero          |
    //|                       Prorealcode.com by Coscar              |
    //+--------------------------------------------------------------+
    
    
    DEFPARAM CALCULATEONLASTBARS=50
    If Hour=1 then
    GainUp  = Dclose(0)-Dclose(1)
    MediaUp = Average [2](GainUp)
    GainDw  = Max(GainUp,ABS(GainUp))
    
    MediaDwIeri = Average [2] (GainDw [1])
    GainDwIeri = GainDw[1]
    Apertura = DOpen (0)
    
    Media5 = Average[5](Dclose(0))
    ChiusuraIeri = Dclose(1)
    MinimoIeri = DLow (1)
    DPOx = Dclose(0)-Media5/2+1
    
    //Previsione Prezzo Chiusura Candela corrente
    Y1 = -0.0433353 + Apertura*0.789109 + Media5*(-0.0116908) + GainUp*0.954934 + MediaUp*(-0.0153857) + DPOx*0.0433544 + MinimoIeri*(-0.019257) + ChiusuraIeri*0.220101 + GainDwIeri*0.0571963 + MediaDwIeri*0.0443629
    PrezzoPrevisione=Y1
    
    //Previsione Chiusura Candela Giorno dopo
    // da elaborare , non affidabile
    //Y2 = 0.00827408 + Apertura*0.992705 + GainUp*0.933295 + GainDwIeri*0.0578514
    //PrezzoPrevisione2 = Y2
    
    endif
    
    Perc= ((Close-PrezzoPrevisione))
    Pos = Max(High,PrezzoPrevisione)
    if Perc>=0 then
    R=60
    G=179
    B=113
    else
    R=220
    G=20
    B=60
    ENDIF
    
    if PrezzoPrevisione>Dopen(0) then
    Rp=60
    Gp=179
    Bp=113
    DRAWTEXT("Long", barindex, (Pos+50*Pipsize),SansSerif,Bold,12) coloured (Rp,Gp,Bp)
    BACKGROUNDCOLOR(Rp,Gp,Bp,30)
    else
    Rp=220
    Gp=20
    Bp=60
    DRAWTEXT("Short", barindex, (Pos+50*Pipsize),SansSerif,Bold,12) coloured (Rp,Gp,Bp)
    BACKGROUNDCOLOR(Rp,Gp,Bp,30)
    ENDIF
    
    DRAWTEXT("Scarto", barindex, (Pos+30*Pipsize),SansSerif,standard,13) coloured (70,130,180)
    DRAWTEXT("#Perc#", barindex, (Pos+25*Pipsize),SansSerif,standard,12) coloured (R,G,B)
    DRAWTEXT("Previsione", barindex, (Pos+55*Pipsize),SansSerif,Bold,13) coloured (70,130,180)
    DRAWTEXT("#PrezzoPrevisione#", barindex, (Pos+45*Pipsize),SansSerif,Bold,12) coloured (Rp,Gp,Bp)
    drawtext("----------",barindex,PrezzoPrevisione,dialog,bold,16) coloured(255,155,0)
    
    giorno = Dayofweek = 1
    if giorno then
    DRAWvLINE(barindex) coloured (0,100,250)// linea di delimitazione settimanale
    endif
    
    
    //verifica
    If PrezzoPrevisione >Dopen(0)  then
    Value = 1
    ELSE
    Value = -1
    ENDIF
    
    If Dclose(0)>DOpen(0) then
    ValueReal = 1
    ELSE
    ValueReal = -1
    ENDIF
    
    p = ABS(value+valuereal)
    if p=0 then
    X=1
    else
    x=0
    endif
    Values = 0
    giorno = Dayofweek = 1
    IF OpenDayOfWeek >= 0 AND OpenDayOfWeek <= 6 THEN
    FOR i = 0 TO 5 DO
    IF (X[i]=1) THEN
    Values = Values + 1
    ELSE
    BREAK
    ENDIF
    NEXT
    valore = Values/5*100
    if valore>0 then
    DRAWELLIPSE(barindex-1, (Low-10*Pipsize), barindex+1, (High+10*Pipsize)) coloured (255,0,0,200)
    DRAWTEXT("#Valore#%", barindex, (Low+5*pipsize),SansSerif,Bold,15)
    endif
    endif
    AVg =Average [5](PrezzoPrevisione)
    
    //-------------------------------------------
    Return Avg as "Media Previsione",PrezzoPrevisione coloured (0,100,250) style(Point,5) as "Previsione Chiusura"//, Close coloured (119,136,153) style(Point,5) as "Close", Dopen(0) coloured (0,100,250) style(point,5) as "Open"
    Previsione-su-EurUsd.jpg Previsione-su-EurUsd.jpg Previsione-Chiusura-EurUsd-v2.itf
    #107980 quote
    coscar
    Participant
    Senior

    Scusate allego codice V2 , il file Itf allegato è comunque corretto.

    Non cosiderate il precedente.

    grazie

    //
    //+--------------------------------------------------------------+
    //|              Previsione Chiusura EurUsd Giornaliero          |
    //|                       Prorealcode.com by Coscar              |
    //+--------------------------------------------------------------+
    
    
    DEFPARAM CALCULATEONLASTBARS=50
    If Hour=1 then
    GainUp  = Dclose(0)-Dclose(1)
    MediaUp = Average [2](GainUp)
    GainDw  = Max(GainUp,ABS(GainUp))
    
    MediaDwIeri = Average [2] (GainDw [1])
    GainDwIeri = GainDw[1]
    Apertura = DOpen (0)
    
    Media5 = Average[5](Dclose(0))
    ChiusuraIeri = Dclose(1)
    MinimoIeri = DLow (1)
    DPOx = Dclose(0)-Media5/2+1
    
    //Previsione Prezzo Chiusura Candela corrente
    Y1 = -0.0433353 + Apertura*0.789109 + Media5*(-0.0116908) + GainUp*0.954934 + MediaUp*(-0.0153857) + DPOx*0.0433544 + MinimoIeri*(-0.019257) + ChiusuraIeri*0.220101 + GainDwIeri*0.0571963 + MediaDwIeri*0.0443629
    PrezzoPrevisione=Y1
    
    //Previsione Chiusura Candela Giorno dopo
    // da elaborare , non affidabile
    //Y2 = 0.00827408 + Apertura*0.992705 + GainUp*0.933295 + GainDwIeri*0.0578514
    //PrezzoPrevisione2 = Y2
    endif
    
    Perc= ((Close-PrezzoPrevisione))
    PosH = Max(High,PrezzoPrevisione)
    PosL = Min(Low,PrezzoPrevisione)
    
    if Perc>=0 then
    R=60
    G=179
    B=113
    else
    R=220
    G=20
    B=60
    ENDIF
    
    if PrezzoPrevisione>Dopen(0) then
    Rp=60
    Gp=179
    Bp=113
    DRAWTEXT("Long", barindex, (PosH+31*Pipsize),SansSerif,Bold,12) coloured (Rp,Gp,Bp)
    if BackGround=1 then
    BACKGROUNDCOLOR(Rp,Gp,Bp,25)
    endif
    else
    Rp=220
    Gp=20
    Bp=60
    DRAWTEXT("Short", barindex, (PosH+31*Pipsize),SansSerif,Bold,12) coloured (Rp,Gp,Bp)
    if BackGround=1 then
    BACKGROUNDCOLOR(Rp,Gp,Bp,12)
    endif
    ENDIF
    
    DRAWTEXT("Scarto", barindex, (PosL-20*Pipsize),SansSerif,standard,13) coloured (70,130,180)
    DRAWTEXT("#Perc#", barindex, (PosL-26*Pipsize),SansSerif,standard,12) coloured (R,G,B)
    DRAWTEXT("Previsione", barindex, (PosH+37*Pipsize),SansSerif,Bold,13) coloured (70,130,180)
    DRAWTEXT("#PrezzoPrevisione#", barindex, (PosH+25*Pipsize),SansSerif,Bold,12) coloured (Rp,Gp,Bp)
    drawtext("----------",barindex,PrezzoPrevisione,dialog,bold,16) coloured(255,155,0)
    
    giorno = Dayofweek = 1
    if giorno then
    DRAWvLINE(barindex) coloured (0,100,250)// linea di delimitazione settimanale
    endif
    
    
    //verifica
    If PrezzoPrevisione >Dopen(0)  then
    Value = 1
    ELSE
    Value = -1
    ENDIF
    
    If Dclose(0)>DOpen(0) then
    ValueReal = 1
    ELSE
    ValueReal = -1
    ENDIF
    
    p = ABS(value+valuereal)
    if p=0 then
    X=1
    else
    x=0
    endif
    Values = 0
    giorno = Dayofweek = 1
    IF OpenDayOfWeek >= 0 AND OpenDayOfWeek <= 6 THEN
    FOR i = 0 TO 5 DO
    IF (X[i]=1) THEN
    Values = Values + 1
    ELSE
    BREAK
    ENDIF
    NEXT
    valore = Values/5*100
    if valore>0 then
    DRAWELLIPSE(barindex-1, (Low-10*Pipsize), barindex+1, (High+10*Pipsize)) coloured (200,0,0,200)
    //DRAWTEXT("#Valore#%", barindex, (Low+5*pipsize),SansSerif,Bold,15)
    endif
    endif
    if Regression=1 then
    AVg =LinearRegression[Periodregression](PrezzoPrevisione)
    BandUp =LinearRegression[Periodregression](PrezzoPrevisione)+ Dev*STD[Periodregression](PrezzoPrevisione)
    BandDw =LinearRegression[Periodregression](PrezzoPrevisione)- Dev*STD[Periodregression](PrezzoPrevisione)
    endif
    //Average [5](PrezzoPrevisione)
    
    //-------------------------------------------
    Return Avg*Regression as "Media Previsione",BandUp*Regression as "band Up",BandDw*Regression as "Band down"//,PrezzoPrevisione coloured (0,100,250) style(Point,5) as "Previsione Chiusura"//, Close coloured (119,136,153) style(Point,5) as "Close", Dopen(0) coloured (0,100,250) style(point,5) as "Open"
    
    robertogozzi thanked this post
    #107981 quote
    robertogozzi
    Moderator
    Master

    Cosa desideri fare alla riga 9?

    Te lo chiedo perché HOUR ti da l’ora alla chiusura della candela, quindi 1 significa la candela aperta a mezzanotte.

    Siccome IG chiude il giorno alle ore 01:00 (Utc+2) probabilmente dovresti mettere una delle seguenti (per indicare il nuovo giorno):

    • 2 al posto di 1
    • OpenHour al posto di Hour

    almeno se ho capito bene le tue intenzioni.

    coscar thanked this post
    #107982 quote
    coscar
    Participant
    Senior

    Ciao Roberto

    in effetti hai ragione, mi serve il valore dell’apertura del nuovo giorno.

    Inizialmente la riga 9 prevedeva Time=010000 ma ho notato che sostituendola con Hour=1 non cambiava nulla.

    Proverò ad adottare le tue osservazione e vedrò come si comporta.

    grazie

    #107983 quote
    coscar
    Participant
    Senior

    Ho provato entrambe le varianti ma funziona solo con OpenHour.

    #107984 quote
    coscar
    Participant
    Senior

    Ho verificato con OpenHour=1 in effetti si riducono i margini di errore, grazie 1000 Roberto.

    #108041 quote
    coscar
    Participant
    Senior

    buongiorno Roberto

    ho inserito alla riga 9 il codice OpenHour=1 ma ho notato che su Timeframe Daily il valore del PrezzoPrevisione varia continuamente,

    mentre su timeframe inferiori (esempio 1h) rimane costante e fisso.

    Come posso risolvere questo imprevisto su Daily?

    Grazie per la collaborazione.

    #108043 quote
    robertogozzi
    Moderator
    Master

    Certo, sul Daily non esistono le ore, quindi quelle condizioni non verranno mai verificate.

    Quando la candela Daily apre sono le 1 per forza. Durante il giorno non ci sono altre  candele Daily, per cui la prossima sarà alle 1 del giorno successivo.

    Sul Daily le righe 9 e 31 non devono esserci, in ogni caso sono ignorate.

    #108058 quote
    coscar
    Participant
    Senior

    Come posso impostare i parametri richieste solo all’apertura della nuova candela?

    Grazie

    #108066 quote
    robertogozzi
    Moderator
    Master

    Basta che togli la riga 9 e la riga 31. Però devi farti un duplicato dell’indicatore, uno così com’è per l’intraday ed uno per il Daily senza quelle due righe.

    L’alternativa potrebbe essere di usare IF IntraDayBarIndex = 0 invece iF OpenHour, però, molto stranamente, IG considera come prima barra del giorno la prima dalle 00:00 in poi, quindi sul 4 ore prende quella delle 01:00, ma su quelle da 1 ora in giù prende quella delle 00:00. Però questo a te falsa i risultati, perché la stessa IG considera il giorno di trading chiuso alle 01:00.

    Diciamo che il comportamento di IG è piuttosto strano. La prima barra del giorno è quella delle 00:00, però il giorno lo chiude alle 01:00 ed il rollover lo calcola alle 23:00!

    coscar thanked this post
    #108072 quote
    coscar
    Participant
    Senior

    Roberto ho provato tutte le tue indicazione ma il valore di previsione varia con il variare delle oscillazioni di close, l’unica alternativa che mi consente sul Daily di mantenere fisso il prezzo di previsione è utilizzare IF Time=010000 ma questo genera qualche errore nella previsione in più , o eliminare le righe 9 e 31.

    SI potrebbe incapsulare i parametri solo nel momento in cui viene formato una nuova Barindex su Daily?

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

trasformazione valore matematico in PRT


ProBuilder: Indicatori & Strumenti Personalizzati

New Reply
Author
author-avatar
coscar @coscar Participant
Summary

This topic contains 16 replies,
has 3 voices, and was last updated by coscar
6 years, 6 months ago.

Topic Details
Forum: ProBuilder: Indicatori & Strumenti Personalizzati
Language: Italian
Started: 09/16/2019
Status: Active
Attachments: 3 files
Logo Logo
Loading...