Istruzione IF nidificata che sembra non funzionare
Forums › ProRealTime forum Italiano › Supporto ProBuilder › Istruzione IF nidificata che sembra non funzionare
- This topic has 4 replies, 2 voices, and was last updated 4 years ago by
RockerGab.
-
-
02/14/2021 at 10:44 PM #161434
Buongiorno a tutti;
Sto chiedendo aiuto per capire perché le istruzioni “IF” annidate identificate dal commento “// Questa condizione non …”. Secondo le mie aspettative, la variabile “flagprofitLong” dovrebbe assumere il valore “1” quando la variabile c3, nella terza barra dall’inizio dello scambio, ha un valore di zero. Sfortunatamente, questo non accade. Stesso problema nel caso di Short trade con variabili associate.
Grazie a tutti coloro che possono fornire una spiegazione.
RockerGab
02/15/2021 at 12:10 AM #161437Perché non basta la IF, devi vedere il valore di c3 e c4 in quella candela.
Devi mettere c3[3], anche per c4.
1 user thanked author for this post.
02/16/2021 at 7:01 PM #161699Grazie “robertogozzi”. In effetti inserendo la modifica che mi hai suggerito, le variabili “flagprofitLong” e “flagprofitShort” assumono il valore “1” ma in modo contrario rispetto a quelli che sono i miei obiettivi. Io vorrei che il TS testasse nella terza barra dopo l’ingresso se è iniziato un trend oppure no. In un trade Long la variabile c3 dovrebbe avere valore “1” in presenza di 3 barre con la Media Mobile di Close a 2 barre in aumento e “0” invece quando non è così. Ora il “flagprofitLong” assume valore “1” soltanto nei trade Short in trend che fanno “scattare” la variabile “c3” al valore zero (non è sbagliato ma non è ciò che vorrei…). Ho provato a modificare il TS nel modo sotto indicato ma in questo modo le variabili “flagprofit” Long e Short restano sempre a zero.
Modifica1234567IF LONGONMARKET THENIF (BARINDEX - TRADEINDEX[1]) = 3 THENIF not c3[3] THENflagprofitLong = 1ENDIFENDIFENDIFSpero di essere riuscito a spiegare qual è il mio intento.
Grazie ancora per un altro suggerimento.
RockerGab
02/16/2021 at 9:50 PM #161718Per verificare ls barra successiva all’entrata basta che fai riferimento a c3[2], invece di c3[3].
02/19/2021 at 7:31 PM #162041Grazie “robertogozzi”. Mi sembra di aver compreso il nocciolo della questione ed ho modificato il mio TS invertendo la sua logica e, soprattutto, andando a testare le variabili c3 e c4 nella terza barra a partire da quella di ingresso. Allego il mio TS modificato che ora funziona nel modo che intendevo.
TS modificato12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061defparam cumulateorders = falseBUDGET = 10000c1 = HIGH > HIGH[1] AND LOW > LOW[1]// AND HIGH[1] > HIGH[2] AND LOW[1] > LOW[2] PEGGIORAMENTOc2 = HIGH < HIGH[1] AND LOW < LOW[1]// AND HIGH[1] < HIGH[2] AND LOW[1] < LOW[2] PEGGIORAMENTOc3 = AVERAGE[2](CLOSE[0]) > AVERAGE[2](CLOSE[1]) AND AVERAGE[2](CLOSE[1]) > AVERAGE[2](CLOSE[2])c4 = AVERAGE[2](CLOSE[0]) < AVERAGE[2](CLOSE[1]) AND AVERAGE[2](CLOSE[1]) < AVERAGE[2](CLOSE[2])IF c1 AND NOT SHORTONMARKET THENBUY BUDGET CASH AT MARKETSET STOP %LOSS SLENDIFIF c2 AND NOT LONGONMARKET THENSELLSHORT BUDGET CASH AT MARKETSET STOP %LOSS SLENDIFIF (BARINDEX - TRADEINDEX[1]) = 4 THENIF c3[1] THENflagprofitLong = 1ENDIFENDIFIF NOT ONMARKET THENflagprofitLong = 0flagprofitShort = 0ENDIFIF LONGONMARKET AND NOT flagprofitLong THENSELL AT TRADEPRICE*(1+profitvalue)LIMITflagprofitLong = 0ENDIFIF (BARINDEX - TRADEINDEX[1]) = 4 THENIF c4[1] THENflagprofitShort = 1ENDIFENDIFIF SHORTONMARKET AND NOT flagprofitShort THENEXITSHORT AT TRADEPRICE*(1-profitvalue)LIMITflagprofitShort = 0ENDIF//************************************************************************//GRAPH c3 as "average"GRAPH flagprofitLong as "flagLONG"GRAPH flagprofitShort as "flagSHORT"//GRAPH BARINDEX as "bar"Alla prossima.
RockerGab
-
AuthorPosts
Find exclusive trading pro-tools on