ProRealCode - Trading & Coding with ProRealTime™
Buongiorno ,scusate, ho scritto questo semplice sistema che andrebbe short al contemporaneo
verificarsi di 2 eventi (Macd <0 e williams acc dist <sua sma 34) ma invece va short come da chart
allegato al solo verificarsi di una condizione (Macd <0)……non riesco proprio a capire dove sbaglio o se
e’ un baco del programma prorealtime(non credo ci sara’ sicuramente una causa)
L’ho scritto con la funzione semplificata di creazione tra l’altro e non funziona lo stesso
ecco il sistema e in allegato il chart dove si vede chiaramente che va short nelle ultime barre con il solo
segnale short del macd ma il williams acc distrib sarebbe long perche’ sopra sua mm 34 per cui fornisce
un falso segnale…….grazie infinite e scusate Musoditopo cari saluti
// Definizione dei parametri del codice
DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate
// Condizioni per entrare su posizioni long
indicator1 = MACD[12,26,8](close)
c1 = (indicator1 >= 0)
indicator2 = WilliamsAccumDistr(close)
indicator3 = Average[34](WilliamsAccumDistr(close))
c2 = (indicator2 >= indicator3)
IF c1 AND c2 THEN
BUY 1 CONTRACT AT MARKET
ENDIF
// Condizioni per uscire da posizioni long
indicator4 = MACD[12,26,8](close)
c3 = (indicator4 <= 0)
indicator5 = WilliamsAccumDistr(close)
indicator6 = Average[34](WilliamsAccumDistr(close))
c4 = (indicator5 <= indicator6)
IF c3 OR c4 THEN
SELL AT MARKET
ENDIF
// Condizioni per entrare su posizioni short
indicator7 = MACD[12,26,8](close)
c5 = (indicator7 <= 0)
indicator8 = WilliamsAccumDistr(close)
indicator9 = Average[34](WilliamsAccumDistr(close))
c6 = (indicator8 <= indicator9)
IF c5 AND c6 THEN
SELLSHORT 1 CONTRACT AT MARKET
ENDIF
// Condizioni per uscire da posizioni short
indicator10 = MACD[12,26,8](close)
c7 = (indicator10 >= 0)
indicator11 = WilliamsAccumDistr(close)
indicator12 = Average[34](WilliamsAccumDistr(close))
c8 = (indicator11 >= indicator12)
IF c7 OR c8 THEN
EXITSHORT AT MARKET
ENDIF
Scusate ho provato anche a riscriverlo premettendo le condizioni di status sul
mercato (es if not longmarket o if shortonmarkets ecc) cosi’ come segue ma non funziona lo stesso:
va short ad es quando non dovrebbe andarci ma non capsco dove sbaglio
sono mesi che ci sbatto la testa grazie infinite
// Definizione dei parametri del codice
DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate
// Condizioni per entrare su posizioni long
IF NOT LongOnMarket then
indicator1 = MACD[12,26,8](close)
c1 = (indicator1 >= 0)
indicator2 = WilliamsAccumDistr(close)
indicator3 = Average[34](WilliamsAccumDistr(close))
c2 = (indicator2 >= indicator3)
IF c1 AND c2 THEN
BUY 1 CONTRACTS AT MARKET
ENDIF
endif
// Condizioni per uscire da posizioni long
If LongOnMarket then
indicator4 = MACD[12,26,8](close)
c3 = (indicator4 <= 0)
indicator5 = WilliamsAccumDistr(close)
indicator6 = Average[34](WilliamsAccumDistr(close))
c4 = (indicator5 <= indicator6)
IF c3 OR c4 THEN
SELL AT MARKET
ENDIF
ENDIF
// Condizioni per entrare su posizioni short
IF NOT ShortOnMarket then
indicator7 = MACD[12,26,8](close)
c5 = (indicator7 <= 0)
indicator8 = WilliamsAccumDistr(close)
indicator9 = Average[34](WilliamsAccumDistr(close))
c6 = (indicator8 <= indicator9)
IF c5 AND c6 THEN
SELLSHORT 1 CONTRACTS AT MARKET
ENDIF
ENDIF
// Condizioni per uscire da posizioni short
IF ShortOnMarket then
indicator10 = MACD[12,26,8](close)
c7 = (indicator10 >= 0)
indicator11 = WilliamsAccumDistr(close)
indicator12 = Average[34](WilliamsAccumDistr(close))
c8 = (indicator11 >= indicator12)
IF c7 OR c8 THEN
EXITSHORT AT MARKET
ENDIF
ENDIF
// Stop e target: Inserisci qui i tuoi stop di protezione e profit target
Il codice è corretto. Ho indagato sull'errore e ho visto che il calcolo dell'indicatore Williams differisce a seconda dello strumento. Nella coppia EUR/USD sta dando un risultato corretto. Nel Russell c'è un offset di 1 barra. Indirizzerò questo problema al supporto tecnico affinché possano esaminarlo.
Grazie infinite Ivan e complimenti per l’efficienza che avete in questo forum così cari saluti musoditopo
Buonasera Ivan,grazie ancora dell’intervento; a me comunque anche con eurousd non funziona perche’ ad es nelle barre long
blu ultime ad esempio,il sistema e’ long ma il williams acc dist e’ sotto la sua media mobile 34 per cui dovrebbe essere flat..…
ho allegato immagine di chart eurusd 3 mesi
grazie ancora ps riporto il codice in essere del sistema che e’ lo stesso del post iniziale
cai saluti
// Definizione dei parametri del codice
DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate
// Condizioni per entrare su posizioni long
IF NOT LongOnMarket then
indicator1 = MACD[12,26,8](close)
c1 = (indicator1 >= 0)
indicator2 = WilliamsAccumDistr(close)
indicator3 = Average[34](WilliamsAccumDistr(close))
c2 = (indicator2 >= indicator3)
IF c1 AND c2 THEN
BUY 1 CONTRACTS AT MARKET
ENDIF
endif
// Condizioni per uscire da posizioni long
If LongOnMarket then
indicator4 = MACD[12,26,8](close)
c3 = (indicator4 <= 0)
indicator5 = WilliamsAccumDistr(close)
indicator6 = Average[34](WilliamsAccumDistr(close))
c4 = (indicator5 <= indicator6)
IF c3 OR c4 THEN
SELL AT MARKET
ENDIF
ENDIF
// Condizioni per entrare su posizioni short
IF NOT ShortOnMarket then
indicator7 = MACD[12,26,8](close)
c5 = (indicator7 <= 0)
indicator8 = WilliamsAccumDistr(close)
indicator9 = Average[34](WilliamsAccumDistr(close))
c6 = (indicator8 <= indicator9)
IF c5 AND c6 THEN
SELLSHORT 1 CONTRACTS AT MARKET
ENDIF
ENDIF
// Condizioni per uscire da posizioni short
IF ShortOnMarket then
indicator10 = MACD[12,26,8](close)
c7 = (indicator10 >= 0)
indicator11 = WilliamsAccumDistr(close)
indicator12 = Average[34](WilliamsAccumDistr(close))
c8 = (indicator11 >= indicator12)
IF c7 OR c8 THEN
EXITSHORT AT MARKET
ENDIF
ENDIF
// Stop e target: Inserisci qui i tuoi stop di protezione e profit target
PS Ivan qua ho ripulito il chart dai pivot ecc e si vede forse meglio che non puo’ essere long
grazie ancora
Ho evidenziato sulla tua foto i punti in cui ha fatto un ingresso LONG (la freccia dell’entrata la vedi sulla candela successiva perché quando viene eseguita la strategia la candela di setup è ormai chiusa).
Mi sembrano tutti corretti.
Gentilissimo Roberto grazie mille dell’intervento; segnalo pero’ che il sistema legge solo i segnali del Macd e
ignora il Williams acc dist…..ad esempio tra il 2018 e 2019 del chart (che ho allegato) ,il sistema e’ sempre long
erroneamente ma nel codice riportato qualche post fa con il williams acc dist sotto la SMA 34 dovrebbe stare Flat.
riporto il codice cosi’ magari mi confermi o meno la correttezza.Grazie mille del fondamentale supporto .i migliori
saluti Musoditopo
// Definizione dei parametri del codice
DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate
// Condizioni per entrare su posizioni long
IF NOT LongOnMarket then
indicator1 = MACD[12,26,8](close)
c1 = (indicator1 >= 0)
indicator2 = WilliamsAccumDistr(close)
indicator3 = Average[34](WilliamsAccumDistr(close))
c2 = (indicator2 >= indicator3)
IF c1 AND c2 THEN
BUY 1 CONTRACTS AT MARKET
ENDIF
endif
// Condizioni per uscire da posizioni long
If LongOnMarket then
indicator4 = MACD[12,26,8](close)
c3 = (indicator4 <= 0)
indicator5 = WilliamsAccumDistr(close)
indicator6 = Average[34](WilliamsAccumDistr(close))
c4 = (indicator5 <= indicator6)
IF c3 OR c4 THEN
SELL AT MARKET
ENDIF
ENDIF
// Condizioni per entrare su posizioni short
IF NOT ShortOnMarket then
indicator7 = MACD[12,26,8](close)
c5 = (indicator7 <= 0)
indicator8 = WilliamsAccumDistr(close)
indicator9 = Average[34](WilliamsAccumDistr(close))
c6 = (indicator8 <= indicator9)
IF c5 AND c6 THEN
SELLSHORT 1 CONTRACTS AT MARKET
ENDIF
ENDIF
// Condizioni per uscire da posizioni short
IF ShortOnMarket then
indicator10 = MACD[12,26,8](close)
c7 = (indicator10 >= 0)
indicator11 = WilliamsAccumDistr(close)
indicator12 = Average[34](WilliamsAccumDistr(close))
c8 = (indicator11 >= indicator12)
IF c7 OR c8 THEN
EXITSHORT AT MARKET
ENDIF
ENDIF
// Stop e target: Inserisci qui i tuoi stop di protezione e profit target
Si, perché tu non utilizzi direttamente WilliamsAccumDist, ma solo per calcolarne la media:
Average[34](WilliamsAccumDistr(close))
Grazie mille Roberto ma la condizione C4 dice che se l’ indicatore William sta sotto la sua media che mi hai citato le posizioni long si chiudono : così non è stato perché il sistema nel 2018-2o19 rimane long anche se indicatore sotto sua media 34 citata ….da quello che capisco io non funziona o c’è un errore nel sistema come scriveva Ivan ma sono ignorante a riguardo e mi fermo qui . Grazie mille ancora
Si, nella foro ho messo i vari cerchietti delle condizioni degli indicatori, che sono LONG correttamente.
C4 è perl’uscita.
Prova a rispiegarmi (non importa allegare foto) cosa non ti sembra corretto, indicando lo strumento ed il timeframe utilizzato, nonché la data e l’ora di entrata.
Grazie mille Roberto sempre supergentile; se prendo il eur/usd 3 mesi come nella foto di prima es a gennaio 2019 (trimestre del gennaio 2019)
c’e’ il Macd>0 ma l’indicatore Williams acc dist e’ < della sua sma34 e quindi dovrebbe entrare la condizione c4 e chiudere il long
e rimanere flat ma invece rimane long
ecco il codice che avevo postato sopra scusa se lo scrivo cosi’ in corsivo ma tanto lo vedi subito esperto come sei
DEFPARAM CumulateOrders = False
iMacd = MACD[12,26,8](close)
iWad = WilliamsAccumDistr(close)
iAvg = Average[34,0](iWad)
c1 = iMacd >=0
c2 = iWad >= iAvg
c3 = iMACD <=0
c4 = iWad <= iAvg
IF NOT LongONMarket AND c1 AND c2 THEN
BUY 1 CONTRACT AT MARKET
ENDIF
IF LongOnMarket AND (c3 OR c4) THEN
SELL AT MARKET
ENDIF
IF NOT ShortOnMarket AND c3 AND c4 THEN
SELLSHORT 1 CONTRACT AT MARKET
ENDIF
IF ShortOnMArket AND (c1 OR c2) THEN
EXITSHORT AT MARKET
ENDIF
view = 3 // 0,1,2,3
if view = 1 then
graph c1*0.75+1 as"iMacd>=0"
graph c2*0.75+2 as"iWad>=iAvg"
graph c3*0.75+3 as"iMacd<=0"
graph c4*0.75+4 as"iWad<=iAvg"
graph (c1 AND c2)*0.75+5 coloured("lime")
graph (c3 OR c4)*0.75+5 coloured("yellow")
graph (c3 AND c4)*0.75+6 coloured("red")
graph (c1 OR c2)*0.75+6 coloured("orange")
elsif view = 2 then
graph iMacd coloured("aqua")
graph 0
elsif view = 3 then
graph iWad
graph iAvg
endif
Hola
Si intentas juzgar una posición a partir de los indicadores bursátiles, es más probable que los valores de esos indicadores en el back-test sean diferentes a los mismos.
Cuando hay una condición cercana con respecto a los valores presentados entre los indicadores y la prueba retrospectiva, a veces puede ir en cualquier dirección.
Reescribí su código en forma de que lo haría, y en comparación con el original.
La curva de renta variable y las posiciones se alinearon.
También agregué una serie de opciones de gráfico para mostrar, en función del valor de VIEW.
=0. Sin pantalla
=1. Diagrama lógico de varias condiciones x = falso x.75 = verdadero
=2. MACD (en inglés)
=3. WilliamsAccumDistr y Promedio
A partir de mi comparación de los indicadores de acciones y los del back-test, son diferentes.
Además, el indicador WilliamsAccumDistr de acciones como opción para incluir Volumen, es esa opción utilizada.
Es posible que no se use en la versión del código, no lo sé.
De la imagen, MySystem(58) es la versión de su código y MySystem(59) es mi versión.
La diferencia entre los gráficos lógicos se debe a los indicadores y las condiciones se incluyen en los bloques de código IF largo y corto en la versión del código.
Tal vez el problema que tienes esté en una de las líneas anteriores.
Espero que esto pueda ser útil.
Ciao, se provi a giudicare una posizione in base agli indicatori del mercato azionario, è più probabile che i valori di tali indicatori nel test retrospettivo siano diversi da loro.
Quando esiste una condizione di prossimità per quanto riguarda i valori presentati tra gli indicatori e il backtest, a volte può andare in entrambe le direzioni.
Ho riscritto il tuo codice come sarebbe stato e l’ho confrontato con l’originale. La curva azionaria e le posizioni sono allineate.
Ho anche aggiunto una serie di opzioni del grafico da visualizzare, in base al valore VIEW. =0. Senza schermo =1. Diagramma logico di varie condizioni x = falso x.75 = vero =2. MACD (in inglese) =3. WilliamsAccumDistr e Average Dal mio confronto tra gli indicatori azionari e gli indicatori dei test retrospettivi, sono diversi. Inoltre, l’indicatore WilliamsAccumDistr azionario come opzione per includere il volume è l’opzione utilizzata.
Potrebbe non essere utilizzato nella versione del codice, non lo so.
Dall’immagine, MySystem(58) è la versione del codice e MySystem(59) è la mia versione. La differenza tra i grafici logici è dovuta al fatto che gli indicatori e le condizioni sono inclusi nei blocchi di codice IF lungo e breve nella versione del codice.
Forse il problema che hai è in una delle righe precedenti.
Spero che questo possa essere utile
thks very much
Grazie mille
Indicatori mi sembra non seguano il sistema
This topic contains 24 replies,
has 4 voices, and was last updated by musoditopo
1 year, 5 months ago.
| Forum: | ProBuilder: Indicatori & Strumenti Personalizzati |
| Language: | Italian |
| Started: | 09/27/2024 |
| Status: | Active |
| Attachments: | 13 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.