ProRealCode - Trading & Coding with ProRealTime™
Buongiorno,
al fine di selezionare delle azioni come sottostante di opzioni, avrei bisogno dei seguenti 6 screener:
2) ribassisti (con volatilità bassa):
3) non rialzisti (con volatilità alta):
4) non ribassisti (con volatilità alta):
5) neutrali in acquisto (con volatilità bassa):
6) neutrali in vendita (con volatilità alta):
Ringrazio tanto.
Roberto Palma
Riguardo al secondo punto del primo screener, cosa significa “ma dal quale i prezzi stanno per ripartire al rialzo”?
O meglio, come definisci un “prezzo che sta per ripartire”?
almeno una prima candela verde in caso di ripartenza verso l’alto da uno swing ribassista, candela che riattraversa la media 20
Sono molti, te li farò in modo scaglionato.
ok
Quanto all’analisi del prezzo, lo screener 1 e 4 sono uguali così come rispettivamente il 2 e il 3 e il 5 e il 6.
Quanto alla volatilità il 1 e 2 e 5 f(volatilità bassa) sono uguali così come il 3, il 4 e il 6 (volatilità alta).
Ti ringrazio
Questo è il primo:
// 1. rialzisti (con volatilità bassa)
//
N = 10 //10 periodi per considerare STABILE la posizione del prezzo sopra Sma200
P = 20 //20 periodi per verificare lo swing basso di ripartenza
LB = 5 //5 periodi di osservazione (look back) per verifica del'incrocio ribassista prima della ripartenza
Bull = close > open
Bear = close < open
Sma200 = average[200,0](close)
L1 = summation[N](Sma200 > Sma200[1]) = N //prezzo stabilmente sopra la Sma200 per N periodi
Sma20 = average[20,0](close)
L2 = Sma20 > Sma20[1] //Sma200 inclinata positivamente
Cross = close CROSSES UNDER Sma20
Swing = (min(low,low[1]) = lowest[P](low)) AND Bear[1] AND Bull
L3 = Swing AND summation[LB](Cross)
HV100 = HistoricVolatility[100](close)
HV20 = HistoricVolatility[20](close)
CV100 = CALL "Volatility Chaikin"[100, 1, 10, 0]
L4 = (HV20 = lowest[20](HV20)) //Volatilità storica a 20 periodi sul minimo degli ultimi 20 giorni
L5 = (HV100 <= HV100[1]) //Volatilità storica a 100 periodi in discesa o piatta
L6 = CV100 < HV20 //Volatilità CHAIKIN (a 100 periodi) < a quella storica a 20 periodi
Cond = L1 AND L2 AND L3 AND L4 AND L5 AND L6
SCREENER[Cond]
La volatilità implicita non c’è su ProRealTime (almeno non l’ho notata). L’ho sostituita con la Volatilità Chaikin, ma non so se può essere ugualmente valida. Se conosci un indicatore tu fammi avere un link al codice.
Per il resto ho saltato ogni tua indicazione “meglio se…“, in quanto non si può rappresentare con il codice. L’unica è se tu mi dai un valore numerico, ad esempio quando dici “pronta ad essere tagliata…“, in modo da poterla codificare.
Verifica che vada bene, altrimenti dimmi le modifiche da fare (se fattibili).
Quando questo andrà bene passerò agli altri, per non farli tutti e poi scoprire che vanno tutti corretti o cambiati.
Ok verifico il tutto e ti faccio sapere subito.
Ciao Roberto,
quanto alla volatilità implicita pare non ci sia in Prorealtime (trattandosi di volatilità prezzata dal mercato nei premi delle opzioni quotate e rilevabile nelle piattaforme dedicate alle opzioni), pertanto non consideriamo più l’ultimo punto di ogni screener.
L’esame della volatilità implicita la farò successivamente quando esaminerò le opzioni relative alle azioni candidate dallo screener…
Quindi puoi eliminare, credo, i righi 17 e 20.
Quanto all’analisi della volatilità storica a 20 giorni, puoi considerare “meglio se taglia dal basso verso l’alto la volatilità a 100 giorni” con l’incrocio della “HV20 crosses over HV100” , come condizione alternativa (credo OR anzichè AND) alla condizione volatilità storica a 20 giorni sui minimi. Infatti come condizione alternativa, credo, aggiunga nuovi candidati anzichè creare un filtro ulteriore.
Quanto all’analisi del prezzo, la selezione può essere migliorata aggiungendo al ritracciamento del prezzo con la sfondamento della EMA 20 una ripartenza del prezzo verso l’alto anzichè con una semplice candela “bull” (così mi pare di aver capito…), con un pattern di inversione rialzista espresso come l’Engulfing bullish, l’hammer rialzista e il swing point low (ponendoli nello screener con la congiunzione OR).
Ho trovato su un articolo i seguenti codici (non so se sono giusti..):
engulfing rialzista=
C1 = range[0]>=range[1] AND close[1]<open[1] AND close[0]>open[0] AND open[0]<=close[1] AND close [0]>=open[1]
hammer rialzista=
C1 = close[1]<open[1] AND open[0]>low[0]+(range*0.66) AND close[0]>low[0] + (range*0.66) AND range[0]>abs(open-close)*4 AND low[0]<low[1]
swing point low + one white soldier (rialzista)
C1 = close[2]>open[2] AND high[2]<high[1] AND high[0]<high[1] AND close[0]<open[0] AND close[0]<low[1] AND low[2]<low[1] AND low[0]<low[1] AND low[0]<low[2] AND close[0]<open[2] AND close[0]<=high[0]-(range[1]*0.50)
Resto in attesa e spero di essere stato propositivo…
Scusami mi sono dimenticato …
In un trend di fondo rialzista chiaramente la EMA 20 deve essere più alta della Media mobile a 200, con i prezzi di solito anche al di sopra della Ema 20 tranne chiaramente nel caso del ritracciamento su evidenziato.
Così eliminiamo i casi di azioni con prezzi al di sotto della media mobile più lenta…
Potremmo inoltre considerare sempre nell’analisi del prezzo anche la condizione di esistenza di un trend rialzista con l’ADX >=20 e con +DI superiore al –DI .
Infine mi sono accorto che hai codificato la SMA 20; cortesemente se puoi considerare invece la EMA 20.
Scusami per queste aggiunte, ma sono frutto di approfondimenti al fine di migliorare il risultato della selezione.
Riepilogo le condizioni (solo del n. 1):
Per quanto riguartda l’engulfing si dovrebbero considerare solo i CORPI delle candele, non anche le ombre, certamente così può essere più restrittivo.
Cosa intendi con “tranne chiaramente nel caso del ritracciamento su evidenziato“? Non ho trovato l’accenno al ritracciamento.
Ho modificato la regola della Sma200 perché avevo messo la condizione che fosse stabilmente cresecente, ma non avevo messo la verifica deio prezzi nel primo codice.
// 1. rialzisti (con volatilità bassa)
//
N = 5 //5 periodi per considerare STABILE la posizione del prezzo sopra Sma200
P = 10 //10 periodi per verificare lo swing basso di ripartenza
LB = 5 //5 periodi di osservazione (look back) per verifica del'incrocio ribassista prima della ripartenza
Bull = close > open
Bear = close < open
Sma200 = average[200,0](close)
L1 = summation[N]((Sma200 > Sma200[1]) AND (close > Sma200)) = N //Sma200 inclinata positivamente prezzo stabilmente sopra di essa per N periodi
Ema20 = average[20,1](close)
L2 = summation[N]((Ema20 > Ema20[1]) AND (close > Ema20)) = N //Ema20 inclinata positivamente prezzo stabilmente sopra di essa per N periodi
Cross = close CROSSES UNDER Ema20
Swing = (min(low,low[1]) = lowest[P](low)) AND Bear[1] AND Bull
L3 = Swing AND summation[LB](Cross)
HV100 = HistoricVolatility[100](close)
HV20 = HistoricVolatility[20](close)
L4 = (HV20 = lowest[20](HV20)) //Volatilità storica a 20 periodi sul minimo degli ultimi 20 giorni
L5 = (HV100 <= HV100[1]) //Volatilità storica a 100 periodi in discesa o piatta
L6 = HV20 CROSSES OVER HV100
L7 = Adx[14] >= 20
L8 = DIplus[14] > DIminus[14]
//
Engulf = range[0]>=range[1] AND close[1]<open[1] AND close[0]>open[0] AND open[0]<=close[1] AND close [0]>=open[1]
//
Hammer =close[1]<open[1] AND open[0]>low[0]+(range*0.66) AND close[0]>low[0] + (range*0.66) AND range[0]>abs(open-close)*4 AND low[0]<low[1]
//
SwingL = close[2]>open[2] AND high[2]<high[1] AND high[0]<high[1] AND close[0]<open[0] AND close[0]<low[1] AND low[2]<low[1] AND low[0]<low[1] AND low[0]<low[2] AND close[0]<open[2] AND close[0]<=high[0]-(range[1]*0.50)
//
Cond = L1 AND L2 AND L3 AND (L4 OR L6) AND L5 AND L7 AND L8 AND Engulf AND Hammer AND SwingL
SCREENER[Cond]
Anzi, il tuo rigo sul ritracciamento l’ho vito, ma non ho capito cosa intendi.
Per ritracciamento del prezzo intendo dire il pullback sulla EMA 20 (ossia la violazione delle EMA 20 del prezzo dall’alto verso il basso con successiva ripartenza).
provo a testare lo screener.
Inoltre per conferma (non sono un programmatore…): i pattern di inversione codificati (engulfing, hammer e swing point low) non dovrebbero essere alternativi ed indicare la ripartenza del trend rialzista dopo il pullback??
Non trovo azioni nè sul Nasdaq nè sul Nyse.
Cortesemente puoi illustrarmi il codice 13 Swing. .. sinceramente non ho compreso..
Ho messo i tuoi codici senza verificarli, penso vadano vene a parte l’engulfing. Se non vanno bene puoi variarli.
Il swing della rioga 13 si ha quando una candela inverte un’altra, in questo caso una rialzista dopo una ribassista, in corrispondenza di un minimo degli ultimi N periodi.
Come deve essere applicato il ritracciamento?
Forse è opportuna una chiarificazione dei vari passaggi. Tieni presente che il codice lavorasulla candela CORRENTE, quindi occorre verificare ciò che è accaduto PRIMA o durante. Quindi occorre stabilire quando una certa cosa deve essere accaduta, rispetto ad adesso.
Screener per azioni come sottostante di opzioni
This topic contains 25 replies,
has 2 voices, and was last updated by Robpa0464
4 years, 4 months ago.
| Forum: | ProScreener: Scansione Mercati & Screener |
| Language: | Italian |
| Started: | 09/27/2021 |
| Status: | Active |
| Attachments: | No files |
The information collected on this form is stored in a computer file by ProRealCode to create and access your ProRealCode profile. This data is kept in a secure database for the duration of the member's membership. They will be kept as long as you use our services and will be automatically deleted after 3 years of inactivity. Your personal data is used to create your private profile on ProRealCode. This data is maintained by SAS ProRealCode, 407 rue Freycinet, 59151 Arleux, France. If you subscribe to our newsletters, your email address is provided to our service provider "MailChimp" located in the United States, with whom we have signed a confidentiality agreement. This company is also compliant with the EU/Swiss Privacy Shield, and the GDPR. For any request for correction or deletion concerning your data, you can directly contact the ProRealCode team by email at privacy@prorealcode.com If you would like to lodge a complaint regarding the use of your personal data, you can contact your data protection supervisory authority.