Parametro offset negativo o troppo alto
Forums › ProRealTime forum Italiano › Supporto ProScreener › Parametro offset negativo o troppo alto
- This topic has 6 replies, 2 voices, and was last updated 3 years ago by tom81ad.
-
-
01/17/2021 at 10:04 AM #158127
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
01/17/2021 at 11:00 AM #158132Per 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:
12Indice = .... //calcolo del valoreIf close[max(0,Indice)] ..... //assicurarsi che non sia < 0Per l’altro errore, ProScreener può solo accedere alle ultime 254 barre, non oltre.
1 user thanked author for this post.
01/17/2021 at 11:16 AM #15813901/17/2021 at 3:19 PM #158165Ciao 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
stralcio screen ok1234567891011121314151617//SettingsmyA, myB, myC, myD, myE, myAbar, myEbar = CALL "1 TS Finder classic (screener)"//Codizioni//Configurazione baseC1= myC<myA and MyC<MyE//TempiC4 = ((Barindex-MyAbar) - (Barindex-MyEbar))=> 10//il tempo di formazione calcolato dalla spalla SX (A) alla spalla DX (E) non deve essere inferiore a 10 candeleC5 = ((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 = VolumeC7= barindex-myAbarSCREENER [C1 and C2 and C3 and C4 and C5] (C7 as "prova")questo invece mi restituisce errore
123456789101112131415161718192021//SettingsmyA, myB, myC, myD, myE, myAbar, myEbar = CALL "1 TS Finder classic (screener)"//Codizioni//Configurazione baseC1= myC<myA and MyC<MyE//TempiC4 = ((Barindex-MyAbar) - (Barindex-MyEbar))=> 10//il tempo di formazione calcolato dalla spalla SX (A) alla spalla DX (E) non deve essere inferiore a 10 candeleC5 = ((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//VolumiVol = VolumeFOR i = barindex-myAbar TO 60 DOVolA=VolA+Vol[i]NEXTSCREENER [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
01/17/2021 at 3:54 PM #158171Eh nulla, scusate i post uno dietro l’altro ma alla fine ho tamponato così
12345678910//VolumeVol = Volume//OAIF myObar<myAbar THENVolOA=0FOR i=barindex-myAbar to barindex-myObar DOVolOA= VolOA+Vol[i]NEXTENDIFObar è 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
01/18/2021 at 10:25 AM #158242Prova a scrivere la riga 17 così:
1VolA=VolA+Vol[max(0,i)]01/18/2021 at 4:52 PM #158328Ciao 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à
-
AuthorPosts