Proiezione punti su retta obliqua

Viewing 6 posts - 1 through 6 (of 6 total)
  • Author
    Posts
  • #181367 quote
    cventurer
    Participant
    Average

    Ciao, sto scrivendo un indicatore per evidenziare i brakeout su una trendline obliqua, per ora funziona tutto riesco a disegnare le rette ma ho bisogno di calcolare i prezzi che incontra la retta successivamente ai primi 2 punti.

    Mi spiego meglio se ho su un piano cartesiano (nel nostro caso barre sulla x e prezzo sulla y) e conosco i primi 2 punti A,B che creano la retta obliqua, come posso calcolare il punto C?

     

    Esempio:

    Punto A – Barra 1, Prezzo 100

    Punto B – Barra 5, Prezzo 200

    Punto C – Barra 10, Prezzo ?

     

    Ho provato semplicemente a dividere la differenza di prezzo per il numero di barre e poi moltiplicarla per il N barre del punto C [ ((200-100)/5)*10 ] , si avvicina ma non è corretta, credo esista una formula ben precisa la conoscete?

    #181371 quote
    robertogozzi
    Moderator
    Master

    Calcola la differenza di prezzo delle due prime barre, ed e 100, dividilo per 4 (differenza tra 1 e 5) ed ottieni l’incremento/decremento per ogni barra, ed è 25.

    Adesso calcoli il numero di barre tra C e B, che è 5.

    Moltiplichi l’incremento, 25, per il numero di barre future ed ottieni 125, che dovrai sommare a 200.

    Quindi la trendline sarà al prezzo 325 quando arriva a C.

    Se a C il prezzo sarà > (o < se la differenza era negativa, quindi ribassista) significa che c’è stata una rottura.

    #181374 quote
    cventurer
    Participant
    Average

    Grazie mille Roberto, avevo già provato questa soluzione, ma non viene preciso il risultato e non capisco bene il perchè.

    Ti allego l’indicatore, è un po confuso perchè stò plottando i dati per verificare.

    In pratica per ora il calcolo viene fatto sulle trendline ribassiste, ho plottato i valori che vengono calcolati  ai quali si dovrebbe trovare la riga rossa, ma differiscono.

    Il calcolo lo trovi dalla riga 166, i prezzi che vengono scritti hanno alla fine, tra parentesi quadrate, a quale trendline fanno riferimento (1,2,3, ecc)

    Andrebbe caricato su un timeframe molto basso,1minuto anche 10 secondi possibilmente sul dax cosi possiamo confrontare con gli stessi parametri

    quindi per fare la prova leggere il valore della trendline e confrontarlo con quello scritto sopra la candela (se ci sono più trendline, ci saranno più prezzi scritti

    i parametri ottimali con tf bassi e dax sono:

    ZZFVariation=15

    PointVariation=4

    Ti ringrazio tantissimo per l’aiuto

    VenturerLine.itf
    #181376 quote
    cventurer
    Participant
    Average
    DiffPrice=$indStartYRed[i]-$indLastYRed[i] //Calcolo differenza prezzo
    DiffBar=$indLastXRed[i]-$indStartXRed[i] //Calcolo differenza barre tra punto A e B
    PricexBar=DiffPrice/DiffBar //calcolo prezzo per barra
    BarAttuali=barindex-$indStartXRed[i] //calcolo N Barre dal Punto A ad auttuale
    PriceAttuale=$indStartYRed[i]-(PricexBar*BarAttuali) //calcolo prezzo del punto X
    
    DRAWTEXT("#PriceAttuale# [#i#]",barindex,close+(i*2)) coloured(0,200,0,255)
    
    if open<PriceAttuale and close>PriceAttuale then
    DRAWTEXT("B.OUT #i#",barindex,close,Dialog,Bold,10) coloured(0,200,0,255)
    endif
    #181388 quote
    robertogozzi
    Moderator
    Master

    Questo funziona, ti allego le foto di EurUsd, h1, con 20, 100 e 150 periodi:

    DEFPARAM DrawOnLastBarOnly = TRUE
    P   = 150
    HH2 = highest[P](max(open,close))
    FOR i = 0 TO (P - 1)
       IF max(open[i],close[i]) = HH2 THEN
          Bar2 = BarIndex[i]
          HH1 = highest[P](max(open[i+1],close[i+1]))
          FOR j = 1 TO P
             IF max(open[j + i],close[j + i]) = HH1 THEN
                Bar1 = BarIndex[j + i]
                break
             ENDIF
          NEXT
       ENDIF
    NEXT
    Bars  = Bar2 - Bar1
    Diff  = HH2 - HH1
    Units = Diff / Bars
    x     = (BarIndex + 10) - Bar2
    DrawSegment(Bar1,HH1,BarIndex + 10,HH2 + (x * Units)) coloured(0,0,255,255)
    RETURN

    Puoi anche usare questo indicatore per vedere il numero delle barre:

    RETURN BarIndex AS "BarIndex"
    EurUsd20.jpg EurUsd20.jpg EurUsd100.jpg EurUsd100.jpg EurUsd150.jpg EurUsd150.jpg
    #181485 quote
    cventurer
    Participant
    Average

    Grazie mille come sempre, preferisco utilizzare il mio perchè traccia le linee esattamente come vorrei.

    Comunque ho risolto, il problema non era nella formula (che era corretta, uguale a quella che mi hai proposto tu), ma stavo testando su tf a 10secondi e mi sono reso conto che il conteggio delle barre è “errato” nel senso che ci sono punti dove non ci sono barre ma i 10 secondi passano. In pratica ci sono dei vuoti , salendo di tf o utilizzando i tick il problema si risolve.

    Comunque la formula corretta per trovare i punti successivi al secondo è:

    (Xc-Xa):(Xb-Xa)=(Yc-Ya):(Yb-Ya)

    Utilizzando l’esempio che avevo fatto sopra sarebbe:

    Esempio:

    Punto A – Barra 1(Xa), Prezzo 100(Ya)

    Punto B – Barra 5(Xb), Prezzo 200(Yb)

    Punto C – Barra 10(Xc), Prezzo ?(Yc)

    (10-1):(5-1)=(Yc-100):(200-100)

    9:4=(Yc-100):100

    (2.25*100)+100=325(Yc)

     

     

    Quindi con questa formula possiamo trovare il Punto G 🙂 🙂 🙂

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

Proiezione punti su retta obliqua


ProBuilder: Indicatori & Strumenti Personalizzati

New Reply
Author
author-avatar
cventurer @cventurer Participant
Summary

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

Topic Details
Forum: ProBuilder: Indicatori & Strumenti Personalizzati
Language: Italian
Started: 11/10/2021
Status: Active
Attachments: 4 files
Logo Logo
Loading...