Ingresso sui minimi delle candele precedenti
Forums › ProRealTime forum Italiano › Supporto ProOrder › Ingresso sui minimi delle candele precedenti
- This topic has 8 replies, 2 voices, and was last updated 3 years ago by robertogozzi.
-
-
11/25/2021 at 12:02 PM #182256
Salve, vorrei entrare a mercato al superamento dei minimi delle 2 candele precedenti. Ho scritto il codice qui sotto, però gli ordini vengono immessi anche se la condizione non è verificata. Ho sbagliato qualcosa nel codice?
Grazie per il supporto
Entrare al superamento dei minimi delle n candele precedenti12345678910111213141516DEFPARAM CumulateOrders = False// Regole d'ingressoIF NOT OnMarket AND Low < Lowest[2] THENBUY 1 SHARES AT MARKETENDIF// Condizioni per uscire da posizioni longIf LongOnMarket AND CurrentHour = 23 THENSELL AT MARKETENDIF// Stop loss e take profit: Inserisci qui i tuoi stop di protezione e profit targetSET STOP $LOSS 40SET TARGET $PROFIT 5011/25/2021 at 12:36 PM #182259Tieni presente che LOWEST non ti restituisce il prezzo minimo, ma il minimo di QUALUNQUE cosa sia inicata tra parentesi tonde, subito dopo le quadre. Per difetto PRT usa CLOSE quando non viene indicato niente (come nel tuo caso), da qui l’errore (il primo, poi ce n’è un altro), quindi devi scrivere:
1Lowest[2](low)Il secondo errore è che il MINIMO non può MAI essere inferiore a se stesso. Siccome tu prendi in considerazione le ultime due candele, quella corrente e quella precedente, la condizione (dopo che avrai fatto quanto indicato nella prima parte, sopra) non sarà MAI verificata. Devi fare riferimento alle due candele PRECEDENTI, per cui devi scrivere:
1Lowest[2](low[1])11/25/2021 at 1:25 PM #182262Ok grazie ho capito adesso. Per quanto riguarda il livello di ingresso vorrei inserire un ordine Buy limite allo stesso prezzo su cui faccio la verifica. Ho scritto questo codice, ma vedo che l’ordine entra all’apertura della candela. Ho sbagliato qualcosa?
Grazie per il supporto
BUY LIMIT ai minimi delle ultime due candele12345678910111213141516DEFPARAM CumulateOrders = False// Regole d'ingressoIF NOT OnMarket AND Low < Lowest[2](low[1]) THENBUY 1 SHARES AT Lowest[2](low[1]) LIMITENDIF// Condizioni per uscire da posizioni longIf LongOnMarket AND CurrentHour = 23 THENSELL AT MARKETENDIF// Stop loss e take profit: Inserisci qui i tuoi stop di protezione e profit targetSET STOP $LOSS 40SET TARGET $PROFIT 5011/25/2021 at 3:46 PM #182265Alla riga 5 devi usare STOP, non Limit, perché acquisti ad un prezzo maggiore rispetto a quello corrente.
Dovresti anche verificare che il prezzo a cui vuoi entrare sia ad una distanza maggiore, o uguale, al minimo richiesto da IG per lo strumento su cui operi.
11/25/2021 at 4:59 PM #182271Nel caso che ho disegnato qui sotto però il prezzo corrente è maggiore rispetto a quello dell’ordine pendente. Va bene sempre inserire un ordine BUY Stop o va scritto un codice diverso che prenda in considerazione tutte e due le casistiche?
Grazie
11/25/2021 at 7:33 PM #182280Ho risolto scrivendo il codice sotto e aggiunto la durata dell’ordine pendente a 92 candele successive.
Mi rimane il problema di verificare nel ciclo IF se ho già inserito un ordine pendente, altrimenti a fine candela l’ordine pendente precedentemente inserito può essere modificato da un nuovo ordine pendente.
Come posso inserire questa verifica?
Grazie
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647DEFPARAM CumulateOrders = False// Definizione della durata di validità dell'ordine in questo caso 92 con barre da 15 min per coprire la giornataONCE NbBarLimit = 92// Regole d'ingresso per ordine STOP (prezzo attuale < Lowest)IF NOT OnMarket AND Low < Lowest[2](low[1]) AND Close <= Lowest[2](low[1]) THEN// definiamo la variabile "MyStopBuy" e "MyIndex"MyStopBuy = Lowest[2](low[1])MyIndex = BarindexENDIF//verifico se la barra attuale è oltre la finestra di validità del ordine pendenteIF BarIndex >= MyIndex + NbBarLimit THENMyStopBuy = 0ENDIFIF MyStopBuy > 0 AND NOT OnMarket THENBUY 1 SHARES AT MyStopBuy STOPENDIF//Regole d'ingresso per ordine LIMIT (prezzo attuale > Lowest)IF NOT OnMarket AND Low < Lowest[2](low[1]) AND Close > Lowest[2](low[1]) THENMyLimitBuy = Lowest[2](low[1])MyIndex = BarindexENDIF//verifico se la barra attuale è oltre la finestra di validità del ordine pendenteIF BarIndex >= MyIndex + NbBarLimit THENMyLimitBuy = 0ENDIFIF MyLimitBuy > 0 AND NOT OnMarket THENBUY 1 SHARES AT Lowest[2](low[1]) LIMITENDIF// Condizioni per uscire da posizioni longIf OnMarket AND CurrentHour = 23 THENSELL AT MARKETENDIF// Stop loss e take profit: Inserisci qui i tuoi stop di protezione e profit targetSET STOP $LOSS 40SET TARGET $PROFIT 5011/25/2021 at 8:19 PM #182281Non preoccuparti dell’ordine pendente, è l’opposto di quello che credi.
Gli ordini pendenti scadono SEMPRE alla chiusura di ogni barra, quindi ogni barra devi piazzarli di nuovo, se ci sono ancora le condizioni.
11/25/2021 at 8:28 PM #182284Io vorrei che il primo ordine pendente immesso rimanesse in macchina per le prossime n candele (senza essere cancellato/sostituito) è possibile codificare questa condizione?
Grazie
11/26/2021 at 12:09 AM #182294Basta che per N candele tu ripeta l’ordine pendente.
-
AuthorPosts
Find exclusive trading pro-tools on