Richiamo variabili indicatore personalizzato
Forums › ProRealTime forum Italiano › Supporto ProScreener › Richiamo variabili indicatore personalizzato
- This topic has 7 replies, 2 voices, and was last updated 5 years ago by robertogozzi.
-
-
11/14/2019 at 11:40 PM #112848
Salve a tutti, ho un problema quando provo a far funzionare uno screener con condizioni prese in contemporanea da un indicatore personalizzato e dal grafico dei prezzi.
Faccio un esempio, se faccio girare lo screener che deve soddisfare 2 condizioni entrambe prese da 3 valori dell’indicatore personalizzato, funziona:
12345indicator1, indicator2, indicator3 = CALL "mioindicatore"c1 = (indicator1 > indicator2)c2 = (indicator2 > indicator3)SCREENER[c1 and c2] ((close/DClose(1)-1)*100 AS "% Var ieri")Se invece aggiungo una condizione presa dal grafico dei prezzi (esempio prezzo maggiore di MM 200 barre) mi da sempre zero risultati:
12345678indicator1, indicator2, indicator3 = CALL "mioindicatore"c1 = (indicator1 > indicator2)c2 = (indicator2 > indicator3)MM200 = Average[200](close)c3= (close > MM200)SCREENER[c1 and c2 and c3] ((close/DClose(1)-1)*100 AS "% Var ieri")Cosa sbaglio? Grazie in anticipo
Matteo
11/15/2019 at 1:37 AM #112854Non posso testarlo perché non so cosa sia quell’indicatore. Posta il codice o un link dove reperirlo.
Il codice sembra vada bene.
Probabilmente la condizione C3 è incompatibile con le altre due, non saprei cos’altro dirti.
Tieni presente che ProScreener non accetta periodi oltre 254, quindi:
- average[254] va bene
- average[255] è errata perché eccede il massimo consentito
- average[250](rsi[14](close)) è errata perché 250+14 fa 264 che eccede il massimo consentito
11/16/2019 at 10:54 PM #112951Ciao Roberto, l’indicatore restituisce il barindex di un certo evento, quindi un numero intero. Nello specifico sono restituiti 3 risultati X, A e B.
Ti copio qui il codice.
12345678910111213141516171819c1=low<lowest[30](low)[1]IF c1 thenmyindexX=barindexendifXindex=barindex-myindexXc2=high>highest[Xindex+1](high)[1]if c2 thenmyindexA=barindexendifAindex=barindex-myindexAc3=low<lowest[Aindex+1](low)[1]if c3 thenmyindexB=barindexendifBindex=barindex-myindexBreturn Xindex+1 as "X", Aindex+1 as "A", Bindex+1 as "B"11/16/2019 at 11:54 PM #112955Probabilmente in alcuni casi il numero supera 254 barre.
Non posso verificarlo fino a lunedì.
11/18/2019 at 8:43 PM #113060Si effettivamente può essere perchè finchè la condizione non è soddisfatta il conteggio delle barre continua, infatti l’indicatore su certi titoli da errore se carico 15 o 10k barre, mentre praticamente mai se ne visualizzo 200.
E’ possibile limitare l’indicatore agli ultimi 6 mesi per esempio?
11/18/2019 at 11:51 PM #113074Si, devi dichiarare una variabile per la data di partenza (ad esempio DataInizio) ed usarla per fare in modo che l’indicatore parta solo da quella data in poi (devi aggiungerla te nell’indicatore, io la metto fissa):
1234567891011121314151617181920212223IF barindex = 0 THENXindex = 0Aindex = 0Bindex = 0ENDIFIF date >= DataInizio THENc1=low<lowest[30](low)[1]IF c1 thenmyindexX=barindexendifXindex=barindex-myindexXc2=high>highest[Xindex+1](high)[1]if c2 thenmyindexA=barindexendifAindex=barindex-myindexAc3=low<lowest[Aindex+1](low)[1]if c3 thenmyindexB=barindexendifBindex=barindex-myindexBENDIFreturn Xindex+1 as "X", Aindex+1 as "A", Bindex+1 as "B"dopodiché richiamerai l’indicatore usando sempre CALL, ma in più dovrai passargli la data che desideri (puoi inserirla in una variabile, anziché passarla come costante):
1indicator1, indicator2, indicator3 = CALL "mioindicatore" [20190701](close)11/20/2019 at 7:51 PM #113256Grazie Roberto, ora l’indicatore funziona sempre e si limita agli ultimi mesi. Come output ho aggiunto i 3 prezzi relativi ai 3 punti X A e B.
123456789101112131415161718192021222324252627IF barindex = 0 THENXindex = 0Aindex = 0Bindex = 0ENDIFIF date >= DataInizio THENc1=low<lowest[30](low)[1]IF c1 thenmyindexX=barindexendifXindex=barindex-myindexXc2=high>highest[Xindex+1](high)[1]if c2 thenmyindexA=barindexendifAindex=barindex-myindexAc3=low<lowest[Aindex+1](low)[1]if c3 thenmyindexB=barindexendifBindex=barindex-myindexBENDIFXprice = lowest[Xindex+1](low)[1]Aprice = highest[Xindex+1](high)[1]Bprice = lowest[Aindex+1](low)[1]return Xindex+1 as "X", Xprice as "Xp", Aindex+1 as "A", Aprice as "Ap", Bindex+1 as "B", Bprice as "Bp"Però se provo a fare lo screener che richiama l’indicatore, finchè metto 3 condizioni ovvero 2 relative ai bar index ed una al prezzo funziona. Quando ne aggiungo una quarta relativa al prezzo non gira più… non capisco come mai. Qui sotto i due codici, il primo funzionante ed il secondo no se mi volessi dare una mano.
1234567X, Xp, A, Ap, B, ignored = CALL "mioindicatore"[20190101]c1 = (X > A)c2 = (A > B)c3 = (Xp < Ap)SCREENER[c1 AND c2 AND c3] ((close/DClose(1)-1)*100 AS "% Var ieri")12345678X, Xp, A, Ap, B, Bp = CALL "mioindicatore"[20190101]c1 = (X > A)c2 = (A > B)c3 = (Xp < Ap)c4 = (Ap > Bp)SCREENER[c1 AND c2 AND c3 AND c4] ((close/DClose(1)-1)*100 AS "% Var ieri")Grazie mille in ogni caso
11/20/2019 at 9:30 PM #113264Dovresti verificare sul grafico se Aprice > Bprice, cioè AP > BP.
Se non lo è significa che quella condizione non si verifica.
Prova a scrivere la riga 6 così:
1c4 = (Ap < Bp)1 user thanked author for this post.
-
AuthorPosts
Find exclusive trading pro-tools on