Ordini su livelli predeterminati
Forums › ProRealTime forum Italiano › Supporto ProOrder › Ordini su livelli predeterminati
- This topic has 9 replies, 2 voices, and was last updated 6 years ago by Marco Tampellini.
-
-
02/13/2018 at 7:17 PM #62646
Ciao a tutti, mi chiedevo come si possa impostare codice che permetta ingressi e chiusure a livelli predeterminati (che siano essi numerici, quindi un determinato prezzo, o indicatori, ad esempio resistenze supporti ecc), anche tenendo conto del timeframe considerato.
Vi propongo un esempio in modo che il discorso sia più chiaro e poi riadattabile ad altre situazioni simili da chiunque.
Supponiamo di considerare livelli pivot mensili (S2 S1 Piv R1 R2). e di voler fare quanto segue:
Ad inizio periodo (apertura del mese), 2 ordini in attesa: un ordine long che si attiverebbe qualora il prezzo toccasse Resistenza 1, con target Resistenza 2, e stop loss il Pivot; ordine Short che si attiverebbe qualora il prezzo toccasse Supporto 1, con target Supporto 2, e stop loss il Pivot. Una delle due esclude l’altra, ovvero, se per prima viene toccata R1, viene annullato l’ordine short in attesa su S1, e viceversa.
Esempio: mese x
– R2 1,30
– R1 1,20
-Pivot 1,10
-S1 1,00
-S2 0,90All’inizio del mese avremo 2 ordini in attesa: uno long da R1 a R2 con stop pivot, uno short da S1 a S2 con stop pivot. Il primo che viene aperto annulla l’altro, avremo un solo trade nell’arco del time frame considerato.
Può poi capitare che il prezzo, una volta partito il trade, non arrivi nè a Target, nè a stop loss. In questo caso vorrei che venisse chiuso con la chiusura dell’ultima candela del timeframe considerato (in questo caso erano pivot mensili, quindi chiusura all’ultimo giorno del mese).
Se poi nel corso del time frame considerato non si attivassero gli ordini in quanto il prezzo non raggiunge nè R1 nè S1, annullamento ordini a fine dell’ultima candela del tf considerato.Penso sia più lungo da leggere che da codificare per chi è ferrato, io ho provato ma ho trovato varie difficoltà.
Più che per trading automatico, vorrei utilizzarlo per backtest per analizzare comportamenti simulando ingressi / uscite a determinati livelli. Qui ho inserito i pivot points, ma ovviamente può essere valido anche per livelli numerici o altro preterminati ad inizio periodo. Anche interessante il poter cambiare intervallo di tf per queste analisi.Grazie a chiunque mi aiuterà!
02/13/2018 at 10:45 PM #62666Ho spostato il topic nel supportp ProOrder in Italiano.
Per favore aggiorna la bandiera del tuo paese nel profilo.
Grazie.
02/13/2018 at 10:50 PM #62668Per poterti aiutare vorrei sapere su quale strumento e TF lo vuoi utilizzare?
Poi vedremo se e come cambiare TF e/o strumento, ma per partire preferisco avere un’indicazione precisa.
Roberto
1 user thanked author for this post.
02/14/2018 at 9:12 AM #62681Buongiorno Roberto,
grazie. Si in effetti ho dimenticato di scrivere lo strumento che era la cosa fondamentale. Vorrei testarlo solo su forex, qualsiasi coppia andrebbe bene. Prendiamo come esempio lo strumento spot Eur/Usd, diciamo TF settimanale. Qundi considerando pivot resistenze e supporti ecc nell’arco di una settimana, con eventuale chiusura per trade non arrivati a stop/target il venerdi sera.
P.S. ho aggiornato la bandiera come mi hai chiesto, non avevo notato che era preselezionato Australia 🙂
02/15/2018 at 8:00 PM #62855Ciao Roberto,
sei riuscito a tirar giù qualcosa?
rileggendo il tutto vedo che ci potrebbero essere anche dei casi limite che non rientrano in quelle supposizioni: ad esempio apertura (settimanale in questo caso) con prezzo già sopra R1 o sotto S1.
Però diciamo che sono casi che non capitano spesso e che semmai si possono valutare in un secondo step!02/16/2018 at 5:33 PM #62936Intanto devi importare ed installare il file dei Pivot Giornalieri-Settimanali-Mensili (https://www.prorealcode.com/topic/customised-pivot-point-indicator/) creato da ProRealTime su richiesta di un utente, perché dovrà essere richiamato dalla strategia.
Allego anche il file della strategia (parzialmente funzionante) che puoi importare e di cui riporto il testo qui di seguito:
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate// Pivot GiornalieriONCE dP = UndefinedONCE dR1 = UndefinedONCE dS1 = UndefinedONCE dR2 = UndefinedONCE dS2 = UndefinedONCE dR3 = UndefinedONCE dS3 = Undefined// Pivot SetgtimanaliONCE wP = UndefinedONCE wR1 = UndefinedONCE wS1 = UndefinedONCE wR2 = UndefinedONCE wS2 = UndefinedONCE wR3 = UndefinedONCE wS3 = Undefined// Pivoy MensiliONCE mP = UndefinedONCE mR1 = UndefinedONCE mS1 = UndefinedONCE mR2 = UndefinedONCE mS2 = UndefinedONCE mR3 = UndefinedONCE mS3 = UndefinedIF OnMarket THENSELL AT MARKETEXITSHORT AT MARKETENDIFdP, dR1, dS1, dR2, dS2, dR3, dS3, wP, wR1, wS1, wR2, wS2, wR3, wS3, mP, mR1, mS1, mR2, mS2, mR3, mS3 = CALL "Pivots D-W-M"BUY 1 CONTRACT AT dR1 STOPSELLSHORT 1 CONTRACT AT dS1 STOPSET TARGET PROFIT dR2 - dR1SET STOP LOSS dS1// dummy lines to avoid errors being reported by ProOrder because some variables are not used// linee inutili e superflue, messe solo per evitare che ProOrder segnali che alcune variabili non sono utilizzatex = dP + dR1 + dS1 + dR2 + dS2 + dR3 + dS3 + wP + wR1 + wS1 + wR2 + wS2 + wR3 + wS3 + mP + mR1 + mS1 + mR2 + mS2 + mR3 + mS3IF x < 0 thenbuy at marketendifLe righe iniziali sono l’inizializzaziine delle variabili (in realtà non servono, è solo per chiarezza). Ogni variabile ha un nome che inizia con
- “d” per i pivot Daily (giornalieri)
- “w” per i pivot Weekly (Settimanali)
- “m” per i pivot Monthly (Mensili)
seguiti da “P” per Pivot, oppure R1 per Resistenza1, S1 per Supporto1 ecc…
Siamo, come hai detto tu, sul TF settimanale, per cui alla chiusura della settimana la strategia verrà eseguita (ovviamente lo sarà all’inizio della candela successiva, alla riapertura settimanale) e verificherà se è già a mercato, in tal caso chiude le operazioni (tu vuoi chiuderle a fine settimana, ma non è possibile, si può fare solo alla riapertura) , dopodiché piazza due ordini STOP, uno d’acquisto su R1 ed uno di vendita su S1.
Il problema grosso è alle righe relative al TARGET ed allo STOP LOSS, perché si può solo indicare un Target e solo uno SL, siccome non sappiamo quale dei due ordini, lo SHORT o il LONG, entrerà (se entrerà) a mercato, io li ho messi per i Long.
Ovviamente così non può andare.
Si potrebbero inserire alla canxdela successiva, una volta verificato se siamo a mercato LONG o SHORT, ma allora dovresti tenere l’operazione aperta per più di una settimana e rischieresti, comunque, nella settimana in cui entra a mercato, di non essere tutelato da uno SL!
Credo vada ripensata la strategia, a meno che non ci sia qualche soluzione che non conosco e che magari @nicolas può suggerirci.
02/16/2018 at 11:57 PM #62947Ciao Roberto,
grazie per la risposta.
Si effettivamente cosi non funziona perchè il rischio di prendersi parecchi pip in faccia è alto.
Mi sembra il minimo condividere le mie osservazioni con voi. Il tutto nasce dal fatto che ho notato che, a prescindere dai time frame, il prezzo a seconda degli strumenti ha dei comportamenti statisticamente ripetitivi che hanno a che vedere coi pivot. Ad esempio su pivot mensile / settimanale forex, per alcune coppie che ho analizzato (eurusd, usdjpy, eurjpy ecc), circa nell’80% dei mesi/settimane, il prezzo intercetta il pivot.
Ho svolto analisi su excel (uno sbattimento infinito) impostando formule per il calcolo dello stop loss ottimale, e su diversi strumenti analizzando gli ultimi 3-4 anni ho trovato riscontri profittevoli. Il problema è che ci vogliono giorni se non settimane per analizzare un singolo strumento, con una sola tipologia di ingressi, un solo timeframe. Chi può dire che con un altro tf i risultati non siano migliori? o non si abbia minori perdite nelle settimane negative?
Da qui la volontà di sviluppare un codice che svolga questi ingressi/uscite basati sui pivot, all’interno di una finestra temporale predefinita, per testare meglio tutte le possibili alternative: ad esempio cosa succede se da R1 entro short verso Pivot, o se entro long verso R2 e via dicendo.
Insomma permetterebbe di analizzare tutte le variabili e tf e vedere meglio su cosa sia più profittevole.
Comunque, anche operativamente avevo lo stesso “problema”: la domenica sera impostavo già i due ordini, uno Long e uno Short, ciascuno con proprio stop loss e target. Chiaramente poi appena uno si attivava dovevo chiudere manualmente l’altro, il che implicava costante osservazione della piattaforma.
Se si riuscisse a fare in modo che l’ordine parta non appena prezzo tocca o R1 o S1 (in questo esempio), e contestualmente tenga aperto relativo stop loss e target ma chiuda gli altri, è fatto.
Però ho letto un po di thread dove hai partecipato, e mi pare di aver capito che prorealcode non funzioni con la candela in corso, ma solo a chiusura.
Per fugare ogni dubbio sul fatto di non essermi spiegato a dovere in precedenza, propongo un esempio con immagine allegata:
EurUsd – Settimanale.
Qui avrei impostato i 2 ordini per la prossima settimana: Short da R1w, con stop su R2w, e Target su Pivw; Long da S1w, con stop S2w, e target Pivw. Se dopo l’apertura domenica, il prezzo mi va a toccare R1w, allora ingresso short e contestualmente chisura dell’ordine long su S1 (con relativo stop e target collegati ad esso).
Questa tipologia di ingressi per altro era quella che mi risultava più profittevole (nel primo post avevo chiesto il contrario, da S1 target S2, e da R1 target a R2, proprio per provare qualcosa di diverso).
02/17/2018 at 11:42 AM #62959Ho buttato giù una versione leggermente modificata, invece di usare le istruzioni per SL e TP, ho messo i relativi ordini pendenti, in pratica 3 per i LONG e 3 per gli SHORT:
- ordine pendente di entrata
- ordine pendente di SL (se non è entrato è ininfluente)
- ordine pendente di TP (se non è entrato è ininfluente)
Questo è il nuovo codice, di cui allego anche il file da importare. Provalo e vedi se fa qualche entrata/uscita corretta:
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate// Pivot GiornalieriONCE dP = UndefinedONCE dR1 = UndefinedONCE dS1 = UndefinedONCE dR2 = UndefinedONCE dS2 = UndefinedONCE dR3 = UndefinedONCE dS3 = Undefined// Pivot SetgtimanaliONCE wP = UndefinedONCE wR1 = UndefinedONCE wS1 = UndefinedONCE wR2 = UndefinedONCE wS2 = UndefinedONCE wR3 = UndefinedONCE wS3 = Undefined// Pivoy MensiliONCE mP = UndefinedONCE mR1 = UndefinedONCE mS1 = UndefinedONCE mR2 = UndefinedONCE mS2 = UndefinedONCE mR3 = UndefinedONCE mS3 = UndefinedIF OnMarket THENSELL AT MARKETEXITSHORT AT MARKETENDIFdP, dR1, dS1, dR2, dS2, dR3, dS3, wP, wR1, wS1, wR2, wS2, wR3, wS3, mP, mR1, mS1, mR2, mS2, mR3, mS3 = CALL "Pivots D-W-M"// entrata LONGBUY 1 CONTRACT AT dR1 STOP //ordine pendente su Resistenza 1 giornalieraSELL AT dS1 STOP //SL su Supporto 1SELL AT dR1 + ((dR1 - dS1) * 1.5) LIMIT //TP 1.5 volte lo SL// entrata SHORTSELLSHORT 1 CONTRACT AT dS1 STOP //ordine pendente su Supporto 1 giornalieroEXITSHORT AT dR1 STOP //SL su Resistenza 1EXITSHORT AT dS1 + ((dR1 - dS1) * 1.5) LIMIT //TP 1.5 volte lo SL// righe superflue per evitare la segnalazione di errore causa variabili non utilizzatex = dP + dR1 + dS1 + dR2 + dS2 + dR3 + dS3 + wP + wR1 + wS1 + wR2 + wS2 + wR3 + wS3 + mP + mR1 + mS1 + mR2 + mS2 + mR3 + mS3IF x < 0 then //un IF...ENDIF vuoto è sufficienteendif02/17/2018 at 4:55 PM #62989Grazie Roberto! Verifico! 🙂
02/17/2018 at 5:47 PM #62992Parrebbe non girare mi genera troppi ordini.
L’ho cmq modificato per simulare esattamente l’esempio nell’immagine allegata, ovvero ordine SHORT pendente da wR1, con TP pendente sul pivot wP, e SL pendente su wR2. E ordine LONG pendente da wS1, con TP pendente su wP e SL pendente su wS2.Però niente, mi genera sempre un elevato numero di ordini settimanali, e per altro non in corrispondenza dei livelli pivot predeterminati.
Di seguito il codice modificato
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate// Pivot GiornalieriONCE dP = UndefinedONCE dR1 = UndefinedONCE dS1 = UndefinedONCE dR2 = UndefinedONCE dS2 = UndefinedONCE dR3 = UndefinedONCE dS3 = Undefined// Pivot SetgtimanaliONCE wP = UndefinedONCE wR1 = UndefinedONCE wS1 = UndefinedONCE wR2 = UndefinedONCE wS2 = UndefinedONCE wR3 = UndefinedONCE wS3 = Undefined// Pivoy MensiliONCE mP = UndefinedONCE mR1 = UndefinedONCE mS1 = UndefinedONCE mR2 = UndefinedONCE mS2 = UndefinedONCE mR3 = UndefinedONCE mS3 = UndefinedIF OnMarket THENSELL AT MARKETEXITSHORT AT MARKETENDIFdP, dR1, dS1, dR2, dS2, dR3, dS3, wP, wR1, wS1, wR2, wS2, wR3, wS3, mP, mR1, mS1, mR2, mS2, mR3, mS3 = CALL "Pivots D-W-M"// entrata LONGBUY 1 CONTRACT AT wS1 STOP //ordine long pendente su supporto 1 settimanaleSELL AT wS2 STOP //SL su Supporto 2SELL AT wP LIMIT //TP pivot settimanale// entrata SHORTSELLSHORT 1 CONTRACT AT wR1 STOP //ordine pendente su Resistenza 1 settimanaleEXITSHORT AT wR2 STOP //SL su Resistenza 2EXITSHORT AT wP LIMIT //TP pivot settimanale// dummy lines to avoid errors being reported by ProOrder because some variables may not be usedx = dP + dR1 + dS1 + dR2 + dS2 + dR3 + dS3 + wP + wR1 + wS1 + wR2 + wS2 + wR3 + wS3 + mP + mR1 + mS1 + mR2 + mS2 + mR3 + mS3IF x < 0 thenendif -
AuthorPosts
Find exclusive trading pro-tools on