Utilizzo di “tradeprice” e “Positionprice”
Forums › ProRealTime forum Italiano › Supporto ProOrder › Utilizzo di “tradeprice” e “Positionprice”
- This topic has 10 replies, 2 voices, and was last updated 1 year ago by robertogozzi.
-
-
05/09/2023 at 12:19 PM #214386
Buongiorno,
sto cercando di creare una strategia (una sorta di martingala) che acquista man mano che il prezzo scende per poi chiudere raggiunto un certo profitto.
La strategia deve acquistare ogni volta che il prezzo scende di “x” rispetto al prezzo di ingrezzo (per il quale ho usato tradeprice) della precedente operazione. La strategia deve chiudere tutte le posizioni quando vi è una chiusura superiore di y punti/pips rispetto al prezzo medio di carico (per il quale ho usato PositionPrice).
Lanciando la strategia, di cui riporto stralcio, non fa nessuna operazione. Ciò che è strano è che la stessa strategia, con le opportune modifiche nelle formule, funziona in caso di short.
Potete darmi una mano?
Grazie
//Condizioni di entrata
miasize = 0.1*i+1
IF i = 0 then
c1 = close[1]-close > 0.7
Elsif i<>0 then
c1 = tradeprice-close > 1
endifIF c1 AND timeEnterBefore AND timeEnterAfter AND NOT daysForbiddenEntry THEN
Buy miasize contracts at market
i = i+1
endif//Condizioni di uscita
mioprofit = 0.7
c3 = close – PositionPrice > mioprofit
IF c3 then
Sell AT Market
i = 005/09/2023 at 1:47 PM #214410Perché quando non è a mercato PositionPrice è 0, quindi c3 è vera ed esegue SELL subito dopo BUY, quindi l’entrata viene annullata.
05/09/2023 at 2:11 PM #21441705/09/2023 at 3:21 PM #214423Prova così. Ma non ho idea di cosa sia 0.7, non possono essere pips, non è accettabile un valore così basso, cosa intendi con quel numero?
05/09/2023 at 4:38 PM #21443105/09/2023 at 5:34 PM #214432Scusami, mi è venuto prova, ma volevo scrivere provo.
Su quale strumento l’utulizzi?
Ad ogni modo occorre usare PIPSIZE per le conversioni, non moltiplicatori propri che non sono portabili tra uno strumento e l’altro.
Te lo farò appena possibile.
05/09/2023 at 5:44 PM #21443305/09/2023 at 6:44 PM #21443505/10/2023 at 3:31 PM #214474Il valore della prima entrata “sembra” strano, in realtà è corretto perché ProOrder carica 2000 barre precedenti alle unità che hai sul grafico. Se hai 1000 unità, ne carica 2000, quindi inizia a fare i calcoli molto prima di quello che pensi.
Basta che metti, tra le righe iniziali (come prima o seconda riga è ininfluente), questa:
1DEFPARAM PreloadBars = 0in modo da NON fargli PRE-caricare le 2000 barre (se vuoi puoi arrivare ad un massimo di 10000 barre precaricate).
Inoltre ho usato * PIPSIZE per fare la conversione da pip a prezzo (o differenze tra prezzi), mentre per la conversione opposta, da prezzo (o differenze tra prezzi) a pip occorre dividere, cioè / PIPSIZE.
Ho anche verificato che non esca se non lo è ancora.
Ecco il codice funzionante, sia Long che Short:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465// Definizione dei parametri del codiceDEFPARAM CumulateOrders = true // Posizioni cumulate attivateDEFPARAM PreloadBars = 0// Impedisce al sistema di creare nuovi ordini per entrare a mercato o aumentare la taglia della posizione prima dell'orario specificatonoEntryBeforeTime = 010000timeEnterBefore = time >= noEntryBeforeTime// Impedisce al sistema di piazzare nuovi ordini per entrare a mercato o aumentare la taglia della posizione dopo l'orario indicatonoEntryAfterTime = 220000timeEnterAfter = time < noEntryAfterTime// Impedisce al sistema di tradare in giorni specifici della settimanadaysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0 OR OpenDayOfWeek = 5 OR OpenDayOfWeek = 1//Condizioni di entrata SHORTmiasize = 0.02*i+1IF i = 0 thenc1 = close - close[1] > 5 * PipSize //0.0005Elsif i <>0 thenc1 = close - tradeprice > 9 * PipSize//0.0009endifIF c1 AND timeEnterBefore AND timeEnterAfter AND NOT daysForbiddenEntry and ((not OnMarket) OR ShortOnMarket) THENSellshort miasize contracts at marketi = i+1endif//Condizioni di uscitamioprofit = 6 * PipSize //0.0006c3 = PositionPrice-close > mioprofitIF c3 and ShortOnMarket thenExitshort AT Marketi = 0endif// Stop e targetSET STOP $LOSS 0SET TARGET pPROFIT 0//Condizioni di entrata LONGmiasize = 0.1*i+1IF i = 0 thenc1 = close[1]-close > 7 * PipSize //0.0007Elsif i<>0 thenc1 = tradeprice-close > 10 * PipSize //0.001endifIF c1 AND timeEnterBefore AND timeEnterAfter AND NOT daysForbiddenEntry and ((not OnMarket) OR LongOnMarket) THENBuy miasize contracts at marketi = i+1endif//Condizioni di uscitamioprofit = 7 * PipSize //0.0007c3 = close - PositionPrice > mioprofitIF c3 and LongOnmarket thenSell AT Marketi = 0endif////graph miasize//graph i05/10/2023 at 4:42 PM #214476Grazie mille.
Davvero non so come ringraziarti, mi ero impantanato.
Ora però temo per te che ti chiederò supporto spesso.
Intanto spero ora di essere in grado di creare il TS opposto, ossia incrementare lo short man mano che il prezzo scende ed incrementare il long quando il prezzo sale.
Ancora grazie
05/10/2023 at 11:10 PM #214485Bene, se si tratta di questioni diverse da queste (anche di poco), è preferibile che tu apra un nuovo argomento con un titolo diverso.
Grazie 🙂
-
AuthorPosts