Problem invio codice ProOrder
Forums › ProRealTime forum Italiano › Supporto ProOrder › Problem invio codice ProOrder
- This topic has 35 replies, 2 voices, and was last updated 6 years ago by robertogozzi.
-
-
11/19/2017 at 9:05 PM #53259
Ciao, a tutti.
Se cerco di inviare questo codice a ProOrder non me lo fa fare.
Il codice è il seguente :
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647// Definizione dei parametri del codiceDEFPARAM CumulateOrders = False // Posizioni cumulate disattivate//DEFPARAM FLATBEFORE = 080000//DEFPARAM FLATAFTER = 220000//Contrattic = 1// Condizioni per entrare su posizioni longindicator1 = MACD[12,26,9](close)c1 = (indicator1 >= 0)indicator2 = MACDline[12,26,9](close)c2 = (indicator2 CROSSES OVER 3) //3IF c1 AND c2 THENBUY c CONTRACT AT MARKETENDIF// Condizioni per uscire da posizioni longindicator3 = MACD[12,26,9](close)c3 = (indicator3 <= -4) //-4IF c3 THENSELL c CONTRACT AT MARKETENDIF// Condizioni per entrare su posizioni Shortindicator4 = MACD[12,26,9](close)c4 = (indicator4 <= 0)indicator5 = MACDline[12,26,9](close)c5 = (indicator5 CROSSES UNDER 9) //10IF c4 AND c5 THENSELL c CONTRACT AT MARKETENDIF// Condizioni per uscire da posizioni longindicator6 = MACD[12,26,9](close)c6 = (indicator6 >= 6) //6IF c6 THENSELL c CONTRACT AT MARKETENDIF// Loss, ProfitSET STOP LOSS 13*AverageTrueRange[8](close) //13 - 10SET TARGET PROFIT 14*AverageTrueRange[13](close) //14 - 12L’errore è quello indicato nell’immagine allegata.
11/20/2017 at 12:38 AM #53274Ti prego di utilizzare il pulsante “Insert PRT code” indicato con i simboli “<>” sulla barra grigia, in modo da facilitare la comprensione del codice.
Per quanto riguarda l’errore segnalato è piuttosto chiaro, NON si possono chiudere parzialmente ordini, quindi usa
12SELL AT MARKET //corretto//SELL c CONTRACT AT MARKET //errato, indipendentemente dal valore di cvedi link https://www.prorealcode.com/documentation/sell/.
Roberto
11/20/2017 at 2:56 PM #5331411/20/2017 at 3:37 PM #53315Posso darti consigli su come migliorare il codice, per il resto (indicatori, settaggi ecc…) devi provare a fare dei test seguendo qualche strategia che conosci o che trovi nel forum o sul web. Ad esempio, per evitare, nel MACD, di ripetere sempre 12,26,9 puoi creare tre variabili e chiamarle Macd1, macd2 e Macd3 con quei valori, così è più facile fare dei test cambiandoli di volta in volta all’inizio, senza doverli cambiare dappertutto, così:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051// Definizione dei parametri del codiceDEFPARAM CumulateOrders = False // Posizioni cumulate disattivate//DEFPARAM FLATBEFORE = 080000//DEFPARAM FLATAFTER = 220000ONCE Macd1 = 12 //12ONCE Macd2 = 26 //26ONCE Macd3 = 9 //9//Contrattic = 1// Condizioni per entrare su posizioni longindicator1 = MACD[Macd1,Macd2,Macd3](close)c1 = (indicator1 >= 0)indicator2 = MACDline[Macd1,Macd2,Macd3](close)c2 = (indicator2 CROSSES OVER 3) //3IF c1 AND c2 THENBUY c CONTRACT AT MARKETENDIF// Condizioni per uscire da posizioni longindicator3 = MACD[Macd1,Macd2,Macd3](close)c3 = (indicator3 <= -4) //-4IF c3 THENSELL c CONTRACT AT MARKETENDIF// Condizioni per entrare su posizioni Shortindicator4 = MACD[Macd1,Macd1,Macd1](close)c4 = (indicator4 <= 0)indicator5 = MACDline[Macd1,Macd2,Macd3](close)c5 = (indicator5 CROSSES UNDER 9) //10IF c4 AND c5 THENSELL c CONTRACT AT MARKETENDIF// Condizioni per uscire da posizioni longindicator6 = MACD[Macd1,Macd2,Macd3](close)c6 = (indicator6 >= 6) //6IF c6 THENSELL c CONTRACT AT MARKETENDIF// Loss, ProfitSET STOP LOSS 13*AverageTrueRange[8](close) //13 - 10SET TARGET PROFIT 14*AverageTrueRange[13](close) //14 - 1211/20/2017 at 3:49 PM #53317Alla stessa stregua nell’indicare il numero di contratti da acquistare con la variabile c 🙂
Quello che cercavo è un trailing che sia efficace al posto del target profit,così da seguire il movimento, ma allo stesso tempo definire un numero di punti per poter impostare anche un stop profit se in guadagno al posto dello stop loss fisso.
Può esistere un qualcosa del genere da applicare al mio codice ?
Grazie per la tua disponibilità 🙂
11/20/2017 at 4:03 PM #53320https://www.prorealcode.com/blog/trading/complete-trailing-stop-code-function (link al codice per il Trailing Stop).
https://www.prorealcode.com/blog/learning/breakeven-code-automated-trading-strategy (link al codice per il Breakeven).
https://www.prorealcode.com/topic/stop-e-trailing-stop/ (link ad una breve discussione sul Trailing Stop).
11/20/2017 at 4:11 PM #53321Ad ogni modo questa è la strategia come l’ho postata io sopra, a cui ho aggiunto il codice di Nicolas per il Trailing Stop:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192// Definizione dei parametri del codiceDEFPARAM CumulateOrders = False // Posizioni cumulate disattivate//DEFPARAM FLATBEFORE = 080000//DEFPARAM FLATAFTER = 220000ONCE Macd1 = 12 //12ONCE Macd2 = 26 //26ONCE Macd3 = 9 //9//Contrattic = 1//************************************************************************//trailing stop functiontrailingstart = 20 //trailing will start @trailinstart points profittrailingstep = 5 //trailing step to move the "stoploss"//reset the stoploss valueIF NOT ONMARKET THENnewSL=0ENDIF//manage long positionsIF LONGONMARKET THEN//first move (breakeven)IF newSL=0 AND close-tradeprice(1)>=trailingstart*pipsize THENnewSL = tradeprice(1)+trailingstep*pipsizeENDIF//next movesIF newSL>0 AND close-newSL>=trailingstep*pipsize THENnewSL = newSL+trailingstep*pipsizeENDIFENDIF//manage short positionsIF SHORTONMARKET THEN//first move (breakeven)IF newSL=0 AND tradeprice(1)-close>=trailingstart*pipsize THENnewSL = tradeprice(1)-trailingstep*pipsizeENDIF//next movesIF newSL>0 AND newSL-close>=trailingstep*pipsize THENnewSL = newSL-trailingstep*pipsizeENDIFENDIF//stop order to exit the positionsIF newSL>0 THENSELL AT newSL STOPEXITSHORT AT newSL STOPENDIF//************************************************************************// Condizioni per entrare su posizioni longindicator1 = MACD[Macd1,Macd2,Macd3](close)c1 = (indicator1 >= 0)indicator2 = MACDline[Macd1,Macd2,Macd3](close)c2 = (indicator2 CROSSES OVER 3) //3IF c1 AND c2 THENBUY c CONTRACT AT MARKETENDIF// Condizioni per uscire da posizioni longindicator3 = MACD[Macd1,Macd2,Macd3](close)c3 = (indicator3 <= -4) //-4IF c3 THENSELL c CONTRACT AT MARKETENDIF// Condizioni per entrare su posizioni Shortindicator4 = MACD[Macd1,Macd1,Macd1](close)c4 = (indicator4 <= 0)indicator5 = MACDline[Macd1,Macd2,Macd3](close)c5 = (indicator5 CROSSES UNDER 9) //10IF c4 AND c5 THENSELL c CONTRACT AT MARKETENDIF// Condizioni per uscire da posizioni longindicator6 = MACD[Macd1,Macd2,Macd3](close)c6 = (indicator6 >= 6) //6IF c6 THENSELL c CONTRACT AT MARKETENDIF// Loss, ProfitSET STOP LOSS 13*AverageTrueRange[8](close) //13 - 10SET TARGET PROFIT 14*AverageTrueRange[13](close) //14 - 12Con trailingstart indichi dopo quanti pips di profitto vuoi che parta il Trailing Stop (nell’esempio dopo 20 pips); se non raggiunge mai qual limite e torna indietro ti prenderà, ovviamente lo Stop Loss completo. Con trailingstep indichi ogni quanti pips di profitto il Trailing Stop deve essere aggiornato (nell’esempio sarà 20, 25, 30,…. di cinque in cinque). Tenere bene presente che essendo un codice che fa parte di una strategia sarà eseguito SOLO alla chiusura della candela, per cui se il prezzo ha raggiunto i 20 pips di profitto nel corso della candela, ma prima della chiusura è al di sotto, il Trailing Stop non partirà, per cui ti potrebbe capitare di arrivare a 19.9 pips di profitto, poi il prezzo gira e va a prenderti l’intero stop loss. Ovviamente questo problema può verificarsi maggiormente man mano che vai su timeframe più lunghi.
11/20/2017 at 4:36 PM #53322Ok, allora la domanda mi sorge spontanea.
Se arrivo ad avere, 19.9 di guadagno e il trailing non entra in funzione, non c’è un modo dove io possa indicare dopo quanti punti in guadagno lo stop, inizialmente inserito, si posizioni almeno alla pari all’ingresso, così da proteggersi da un possibile rintracciamento dei prezzi ?
non so se mi sono spiegato :))
11/20/2017 at 5:52 PM #53330Ti sei spiegato benissimo, intendi il breakeven della posizione. Prendi il codice indicato al secondo link del mio post https://www.prorealcode.com/topic/problem-invio-codice-proorder/#post-53320 sopra ed inseriscilo nella tua strategia. Tieni sempre presente che, anch’esso, essendo un codice, verrà eseguito SOLO dopo la chiusura della barra.
11/20/2017 at 8:25 PM #53343Perfetto proverò ad inserire il codice che mi hai indicato.
Grazie 🙂
Provando il mio codice, però, mi sono reso conto che per le posizioni long, si comporta abbastanza bene, mentre per le posizioni short, il codice non riesce a seguire il movimento.
Eppure le condizioni di ingresso per il long che per lo short sono identiche. Si, c’è qualche ottimizzazione, ma in linea di massima si dovrebbero comportare allo stesso modo.
Eppure così non è.
Quindi, anche qui la domanda sorge spontanea.
Finchè il mercato decide di salire, tutto bene. Ma nel momento in cui cambia direzione, sono rovinato.
Il dax a cui faccio riferimento per il mio trading è in un periodo di salita e il sottostante, per ora, non è stato violato.
Ma se cambiano direzione ? Perchè il mio codice non riesce a seguire almeno in parte lo short ?
Non dico che tute le tradate devono essere positive (altrimenti saremmo tutti ricchi), ma nemmeno tutte negative quando si tratta di scendere …
Grazie ancora per la tua disponibilità.
11/21/2017 at 9:40 AM #53391Probabilmente, essendo il DAX in fase di rialzo, necessita di settaggi diversi, anche per lo stesso indicatore, tra LONG e SHORT.
Magari prova con il Macd così com’è per i LONG e creane un altro con valori diversi per gli SHORT, lo stesso puoi fare con le medie, ecc…
Questo però potrebbe cambiare col tempo quando dovesse entrare, com’era a Giugno/Luglio/Agosto, in una fase ribassista.
Purtroppo nessuna strategia funziona come si vorrebbe, il mercato, nonostante sia ciclico, nel breve periodo è comunque imprevedibile. I timeframe bassi, ovviamente, comportano un maggiore numero di falsi segnali.
Solo col tempo e moltissime prove si possino affinare le strategie.
11/21/2017 at 10:38 AM #53404Ho inserito il codice che mi hai indicato, ma non mi sembra funzionare. Dove sto sbagliando ?
Grazie.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495// Definizione dei parametri del codiceDEFPARAM CumulateOrders = False // Posizioni cumulate disattivate//DEFPARAM FLATBEFORE = 080000//DEFPARAM FLATAFTER = 220000startBreakeven = 35 //how much pips/points in gain to activate the breakeven function?PointsToKeep = 1 //how much pips/points to keep in profit above of below our entry price when the breakeven is activated (beware of spread)//Definizione variabili MACD LongONCE Macd1 = 12 //12ONCE Macd2 = 26 //26ONCE Macd3 = 9 //9//Definizione variabili MACD ShortONCE Macd4 = 12 //12ONCE Macd5 = 26 //26ONCE Macd6 = 9 //9//Cross OVERONCE crover = 3 //3//Cross UNDERONCE crunder = 9 //9//Exit LongONCE exlong = 4 //4//Exit ShortONCE exshort = 6 //6//Stop LossONCE stploss = 13 //13ONCE avrtrangeloss = 8 //8//Target ProfitONCE tarprof = 14 //14ONCE avrtrangeprofit = 13 //13//Contrattic = 1//reset the breakevenLevel when no trade are on marketIF NOT ONMARKET THENbreakevenLevel=0ENDIF// --- BUY SIDE ---//test if the price have moved favourably of "startBreakeven" points alreadyIF LONGONMARKET AND close-tradeprice(1)>=startBreakeven*pipsize THEN//calculate the breakevenLevelbreakevenLevel = tradeprice(1)+PointsToKeep*pipsizeENDIF//place the new stop orders on market at breakevenLevelIF breakevenLevel>0 THENSELL AT breakevenLevel STOPENDIF// --- end of BUY SIDE ---// Condizioni per entrare su posizioni longindicator1 = MACD[Macd1,Macd2,Macd3](close)c1 = (indicator1 >= 0)indicator2 = MACDline[Macd1,Macd2,Macd3](close)c2 = (indicator2 CROSSES OVER crover) //3IF c1 AND c2 THENBUY c CONTRACT AT MARKETENDIF// Condizioni per uscire da posizioni longindicator3 = MACD[Macd1,Macd2,Macd3](close)c3 = (indicator3 <= -exlong) //-4IF c3 THENSELL AT MARKETENDIF// Condizioni per entrare su posizioni Shortindicator4 = MACD[Macd4,Macd5,Macd6](close)c4 = (indicator4 <= 0)indicator5 = MACDline[Macd4,Macd5,Macd6](close)c5 = (indicator5 CROSSES UNDER crunder) //10IF c4 AND c5 THENSELL AT MARKETENDIF// Condizioni per uscire da posizioni longindicator6 = MACD[Macd4,Macd5,Macd6](close)c6 = (indicator6 >= exshort) //6IF c6 THENSELL AT MARKETENDIF// Loss, ProfitSET STOP LOSS stploss*AverageTrueRange[avrtrangeloss](close) //8SET TARGET PROFIT tarprof*AverageTrueRange[avrtrangeprofit](close) //1311/21/2017 at 10:53 AM #53409Come puoi notare dal codice, quello nel link è solo per i LONG, nella stessa pagina, poco sotto, c’è un’aggiunta fatta da EDUARDO per gli SHORT. Comunque ti allego la versione completa:
123456789101112131415161718192021222324252627//******************************************************************************************************startBreakeven = 30 //30 pips in gain to activate the breakeven function?PointsToKeep = 5 //5 pips to keep in profit above/below entry price when the breakeven is activated//// test if the price have moved favourably of "startBreakeven" points already//reset the breakevenLevel when no trade are on marketIF NOT ONMARKET THENbreakevenLevel=0ENDIF//// --- LONG sideIF LONGONMARKET AND (close - tradeprice(1)) >= (startBreakeven * pipsize) THENbreakevenLevel = tradeprice(1) + (PointsToKeep * pipsize) //calculate the breakevenLevel//place the new stop orders on market at breakevenLevelIF breakevenLevel > 0 THENSELL AT breakevenLevel STOPENDIFENDIF// --- SHORT sideIF SHORTONMARKET AND (tradeprice(1) - close) >= (startBreakeven * pipsize) THENbreakevenLevel = tradeprice(1) + (PointsToKeep * pipsize) //calculate the breakevenLevel//place the new stop orders on market at breakevenLevelIF breakevenLevel > 0 THENEXITSHORT AT breakevenLevel STOPENDIFENDIF//******************************************************************************************************11/21/2017 at 11:00 AM #5341211/21/2017 at 11:01 AM #53413Mentre stavi scrivendo ho fatto una correzione.
Rifai il copia e incolla.
-
AuthorPosts
Find exclusive trading pro-tools on