Parametro offset negativo o troppo alto

Viewing 7 posts - 1 through 7 (of 7 total)
  • Author
    Posts
  • #158127 quote
    tom81ad
    Participant
    Average

    Buongiorno e buona domenica a tutti,

    ho riscontratto un altro problema con gli screener ovvero l’errore bloccante allegato nell’immagine .

     

    Il messaggio compare quando utilizzo la funzione for do next in particolare mi è capitato in due occasioni

    Nella prima (uno screener derivante da un indice personalizzato) ho risolto frapponendo fra le diverse funzioni “FOR” un “IF” del tutto inutile, in pratica dopo ogni comando “NEXT” ho inserito un IF (del tipo IF 1>0)

    Nel secondo caso (uno screener a se stante in cui cioè tutti i comandi sono inclusi nello screener stesso) il problema si presenta quando inserisco la funzione FOR dove il parametro iniziale è dato da (Barindex-Abar) e quello finale da (Barinex-Bbar) dove Abar e Bbar sono delle posizioni calcolate in precedenza.

     

    La domanda è da cosa dipende questo errore ma soprattutto in cosa sbaglio e come è risolvibile senza sotterfugi tipo quello descritto sopra?

     

    Grazie

    errore.jpg errore.jpg
    #158132 quote
    robertogozzi
    Moderator
    Master

    Per il problema del negativo, un indice di riferimento non deve essere inferiore a 0 o ad 1 (dipende dove lo usi), quindi puoi usare MAX per risolverlo:

    Indice = .... //calcolo del valore
    If close[max(0,Indice)] ..... //assicurarsi che non sia < 0

    Per l’altro errore, ProScreener può solo accedere alle ultime 254 barre, non oltre.

    tom81ad thanked this post
    #158139 quote
    tom81ad
    Participant
    Average

    Capito.

    Grazie!

    #158165 quote
    tom81ad
    Participant
    Average

    Ciao Roberto,

    dunque ho fatto delle prove per verificare di rispettare i requisiti >0 e <254 (in pratica ho inserito le differenze barindex-Abar e barindex-Bbar come criteri) ed i valori riportati  sono tutti tra 49 e 20 (cosa corretta visto che sto ricercando dati nelle ultime 60 candele) quindi rispettano i vincoli detti sopra.

    Ma se riporto le due differenze come valori di riferimento per il “FOR” continua a darmi errore.

    Inoltre barindex-Abar  viene utilizzata poco prima nello stesso screen senza dare problemi

    Per farla breve questo screen funziona

     

    //Settings
    myA, myB, myC, myD, myE, myAbar, myEbar = CALL "1 TS Finder classic (screener)"
    
    //Codizioni
    //Configurazione base
    C1= myC<myA and MyC<MyE
    
    //Tempi
    C4 = ((Barindex-MyAbar) - (Barindex-MyEbar))=> 10//il tempo di formazione calcolato dalla spalla SX (A) alla spalla DX (E) non deve essere inferiore a 10 candele
    C5 = ((Barindex-MyAbar) - (Barindex-MyEbar))<= 30//il tempo di formazione calcolato dalla spalla SX (A) alla spalla DX (E) non deve essere inferiore a 10 candele
    
    //Volumi
    //Vol = Volume
    
    C7= barindex-myAbar
    
    SCREENER [C1 and C2 and C3 and C4 and C5] (C7 as "prova")

    questo invece mi restituisce errore

    //Settings
    myA, myB, myC, myD, myE, myAbar, myEbar = CALL "1 TS Finder classic (screener)"
    
    
    //Codizioni
    //Configurazione base
    C1= myC<myA and MyC<MyE
    
    
    //Tempi
    C4 = ((Barindex-MyAbar) - (Barindex-MyEbar))=> 10//il tempo di formazione calcolato dalla spalla SX (A) alla spalla DX (E) non deve essere inferiore a 10 candele
    C5 = ((Barindex-MyAbar) - (Barindex-MyEbar))<= 30//il tempo di formazione calcolato dalla spalla SX (A) alla spalla DX (E) non deve essere inferiore a 10 candele
    
    //Volumi
    Vol = Volume
    FOR i = barindex-myAbar TO 60 DO
    VolA=VolA+Vol[i]
    NEXT
    
    
    SCREENER [C1 and C2 and C3 and C4 and C5 and C7]
    

    Ancora una volta credo non dipenda dallo script in se ma da qualche bug (simile a quello che non restituisce risultati se nell’indice richiamato dallo screene si usano le funzioni draw)

     

    Alego anche printstamp dei risultati se uso il criterio C7 come si può notare tutti i valori sono ben lontani da 254 e sono positivi

    prova.jpg prova.jpg
    #158171 quote
    tom81ad
    Participant
    Average

    Eh nulla, scusate i post uno dietro l’altro ma alla fine ho tamponato così

     

    //Volume
    Vol = Volume
    
    //OA
    IF myObar<myAbar THEN
    VolOA=0
    FOR i=barindex-myAbar to barindex-myObar DO
    VolOA= VolOA+Vol[i]
    NEXT
    ENDIF

    Obar è sempre e comunque < di Abar quindi all’atto pratico non cambia nulla solo che così lo screen funge.

    Mi piacerebbe cmq capire da cosa dipende o se sbaglio qualcosa io nello script perchè francamentem i da un po’ fastidio ritrovarmi un codice con un IF inutile nel mezzo

    #158242 quote
    robertogozzi
    Moderator
    Master

    Prova a scrivere la riga 17 così:

    VolA=VolA+Vol[max(0,i)]
    #158328 quote
    tom81ad
    Participant
    Average

    Ciao Roberto,

    ora funziona anche senza l’IF ma giuro non ho modificato nulla, stavo provando ad inserire la riga di comando da te suggerita e quindi ho eliminato l’IF ho rilanciato lo screen senza IF ed ha funzionato.

     

    Non so che dire.

    Grazie della disponibilità

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

Parametro offset negativo o troppo alto


ProScreener: Scansione Mercati & Screener

New Reply
Author
author-avatar
tom81ad @tom81ad Participant
Summary

This topic contains 6 replies,
has 2 voices, and was last updated by tom81ad
5 years, 1 month ago.

Topic Details
Forum: ProScreener: Scansione Mercati & Screener
Language: Italian
Started: 01/17/2021
Status: Active
Attachments: 2 files
Logo Logo
Loading...