Come mantenere valida una condizione per N barre
Forums › ProRealTime forum Italiano › Supporto ProOrder › Come mantenere valida una condizione per N barre
- This topic has 12 replies, 2 voices, and was last updated 3 years ago by MauroPro.
-
-
01/07/2021 at 5:06 PM #156789
Salve, vorrei sapere qual’è il modo più semplice per tenere valida una condizione per n barre. Un semplice esempio : supponiamo che dopo essere entrati long si voglia uscire dalla strategia con due condizioni, C1 e C2.
C1= rottura del massimo a 10 periodi , mentre C2 = low<low[2]. Come faccio a tener valida la condizione C1 per 10 barre, in modo che se entro 10 barre si verifica anche C2 la strategia esce, altrimenti si utilizzano altre uscite (trailing….).
Ho provato a fissare la rottura con barIndex, riprendendo un esempio dal manuale, ma sicuramente sbaglio qualcosa. Riporto un semplice esempio inventato al volo. Il problema è che il Ts non esce mai dal mercato una volta entrato.
123456789101112131415If not longOnMarket and close>close[20] thenbuy 1 contract at marketendifhh=highest[10](high)nBar=10if close>hh and close[1]<hh[1] thenmyBuy =closemyIndex =barIndexendifif barIndex<myIndex+nBar and low<low[2] thenmyBuy =0endifif longOnMarket and myBuy>0 thensell 1 contract at marketendifGRAZIE
01/07/2021 at 5:28 PM #156791Per favore usa sempre il pulsante “Insert PRT code” quando inserisci il codice nei tuoi post per facilitare la lettura degli altri.
Grazie 🙂
01/07/2021 at 5:37 PM #156792Eccolo:
123456789101112131415If not longOnMarket and close>close[20] thenbuy 1 contract at marketendifhh=highest[10](high)nBar=10if close crosses over hh[1] thenmyBuy =closemyIndex =barIndexendifif barIndex>(myIndex+nBar) thenmyBuy =0endifif longOnMarket and myBuy>0 and low<low[2] thensell 1 contract at marketendif01/07/2021 at 6:03 PM #156795Ciao Roberto, seguirò la regola di usare il pulsante “Insert PRT” per i codici in futuro. Ho provato il Ts corretto. Ora esce, però non rispetta sempre la condizione c1, ossia non tiene sempre conto del breakout del massimo hh. Nell’immagine allegata, nel primo segnale si rispettano sia c1 che c2, nel secondo segnale solo c2.
01/07/2021 at 6:09 PM #15679701/08/2021 at 9:07 AM #156857Aggiungi la riga:
1myBuy = 0tra la 14 e la 15, perché se myBuy non viene azzerato continua ad uscire.
01/08/2021 at 9:44 AM #15686401/08/2021 at 10:37 AM #156874CLOSE come può essere > HIGH?
Però in caso di Break Out può essere > del precedente HIGH.
01/08/2021 at 10:59 AM #15687701/08/2021 at 11:10 AM #156881Si, certo, puoi eliminare le righe 7 e 10-12, sostituendo alla riga 13 myBuy > 0 con:
1barIndex <= (myIndex+nBar)01/08/2021 at 1:47 PM #156905Ho provato a riscrivere il codice senza “myBuy”, come mi h
Prova con myBuy123456789101112131415161718hh=highest[10](high)nBar=10if not longOnMarket and close>close[20] thenbuy 1 contract at marketendifif close crosses over hh[1] thenmyBuy = closemyIndex = barIndexendifif barIndex>=(myIndex+nBar) thenmyBuy = 0endifif longOnMarket and myBuy>0 and low<low[2] thensell 1 contract at marketmyBuy = 0endifai consigliato sopra, ma i risultati sono molto differenti. Il primo codice, quello con myBuy funziona, quindi è il secondo da rivedere. Allego i due esempi di TS con insertPRT.
Prova senza myBuy1234567891011121314hh=highest[10](high)nBar = 10if not longOnMarket and close>close[20] thenbuy 1 contract at marketendifif close crosses over hh[1] thenmyIndex = barIndexendifif longOnMarket and barIndex <= (myIndex + nBar) and low<low[2] thensell 1 contract at marketendif01/08/2021 at 2:41 PM #156916Usa il primo.
Non è obbligatorio togliere myBuy.
01/08/2021 at 7:08 PM #156982Ciao Roberto, chiudo questo topic, riscrivendo nel modo più semplice e chiaro l’esempio di sopra per mantenere mobile una condizione (di acquisto o vendita), sperando possa servire ad altri utenti
Condizione mobile1234567891011121314151617181920hh=highest[10](high)nBar=10if not longOnMarket and close>close[20] thenbuy 1 contract at marketendifif close crosses over hh[1] thencrossOverIndex=barIndexcExit=1endifif barIndex>=(crossOverIndex+nBar) thencExit=0endifif longOnMarket and cExit=1 and low<low[2] thensell 1 contract at marketcExit=0endif1 user thanked author for this post.
-
AuthorPosts
Find exclusive trading pro-tools on