Richiesta aiuto per settaggio TARGET PROFIT
Forums › ProRealTime forum Italiano › Supporto ProOrder › Richiesta aiuto per settaggio TARGET PROFIT
- This topic has 116 replies, 2 voices, and was last updated 5 years ago by robertogozzi.
-
-
02/23/2019 at 6:13 PM #92139
ciao,
grazie per la risposta.
ho provato a far girare il codice che mi hai fornito ma mancherebbe ancora qualche aggiustamento finale.
il pattern viene correttamente individuato.
l’entrata long viene correttamente eseguita.
il sistema però non mantiene l’operazione aperta fino al raggiungimento del TP ma sembra che la chiuda ogni giorno per poi riaprirla il giorno seguente (in assenza ovviamente di un eventuale SL).
è ovvio che l’operazione deve essere mantenuta aperta anche per più giorni fino a quando o si raggiunge il TP o scatta lo SL.
ho fatto girare una prova su EURUSD daily, 1000 unità dal 1 marzo 2013 fino a ieri.
ti allego una immagine dove si vede chiaramente che non è scattato lo SL e saremmo andati tranquillamente a prendere il nostro TP, ma invece sono state fatte una grossa serie di operazioni aperte/chiuse.
cosa non ha funzionato secondo te ? (ho fatto un copia/incolla del tuo codice senza apportare alcuna modifica)
grazie mille come sempre.
(nell’esempio allegato, il pattern è avvenuto correttamente nelle giornate del 16,17 e 18 luglio 2013 e siamo entrati correttamente in posizione il 22 luglio 2013 al superamento del massimo del 17 luglio 2013. poi si è verificata quella strana sequenza di operazioni. l’operazione si sarebbe dovuta chiudere in TP in data 31 luglio 2013)
02/25/2019 at 12:33 PM #92247Non è che apre e chiude ogni giorno, apre, prende il TP (di soli 4.2 pips), poi entra di nuovo perché le condizioni precedenti non sono state azzerate.
Se usi GRAPH con le variabili d’interesse, vedrai i valori candela per candela.
Per il TP, sul grafico Daily 4.2 pips sono veramente pochi, basta che entri ed esce in pochi minuti (o secondi).
Per le condizioni una volta che sei entrato devi azzerare la variabile PREZZO, altrimenti la strategia continua ad entrare. Il problema, con un TP di pochi pips è che apre la posizione e la richiude nella stessa candela, per cui ProOrder quando arriva alla chiusura della candela ed esegue la stgrategia NON trova nessuna operazione aperta ed ONMARKET (riga 2) non è vero, quindi non azzera il prezzo.
Per vedere come ovviare puoi leggere questo link di pochi giorni fa (è inglese, ma puoi tradurlo con il traduttore Google) in risposta ad un quesito https://www.prorealcode.com/topic/defparam-cumulateorders-false/#post-92062.
02/25/2019 at 1:12 PM #92254grazie mille per la risposta.
vado immediatamente a vedere il link che mi hai suggerito.
nel frattempo, volevo soltanto chiederti se cortesemente potevi rivedere un attimo l’istruzione del TP nell’ultimo codice che mi hai dato (che è quello che sto utilizzando attualmente per i miei test.
dovrebbe essere proprio lì l’errore/problema poiché la differenza i pips tra il mio prezzo di ingresso (massimo del 17) ed il mio prezzo di SL (minimo del 16) dovrebbe essere ben maggiore di soli 4.2 pips.
hai ragione quando dici che chiude subito l’operazione perché “chiedo poco”, ma è anche vero che chiedo poco (solo 4.2 pips) perché sto sbagliando a chiedere, quindi quasi sicuramente sistemando il corretto valore di TP si dovrebbe risolvere tutto.
Grazie.
(non ti posto un nuovo codice perché l’ultimo che mi hai fornito è proprio quello che sto usando)
02/25/2019 at 1:31 PM #92257Dipende da dove vuoi te che sia calcolato, su cosa deve essere calcolato il TP?
02/25/2019 at 2:39 PM #92260ciao,
come prima cosa ti chiedo un chiarimento che sta alla base di ogni mia considerazione: il TP è un numero di pips raggiunto il quale il sistema mi chiude l’operazione in utile oppure è un prezzo (sempre al cui raggiungimento si chiude l’operazione) ??
se il TP è un numero di pips che il sistema deve conoscere per far chiudere l’operazione, ti dico subito che è dato dalla differenza tra HIGH[1] -LOW[2]
se invece si tratta di un livello di prezzo, tale valore allora dovrà essere dato dal mio prezzo di ingresso HIGH[1] + (HIGH[1] -LOW[2]) che sono i pips che ho citato qui sopra e che mi darebbero quindi il mio prezzo TP di uscita.
probabilmente, anzi sicuramente, il codice che mi hai fornito è concettualmente corretto ma forse non viene espresso nella giusta sintassi affinché il programma lo recepisca come lo intendo io.
Grazie mille.
02/25/2019 at 3:28 PM #92269E’ il numero di pips, e nel caso specifico, va bene, è proprio quel numero li, in differenza di prezzo (0..0042, o 4.2 pips se vuoi convertirlo in pips, ma allora dovresti mettere una “P” davanti a PROFIT e/o LOSS), non hai visto la foto allegata?
Comunque, anche per non stare a fare una discussione lunghissima, fai un pò di prove, vedi te come calcolare TP e SL, adesso hai una sufficiente conoscenza basilare per potere operare. Anche perché altrimenti più che la risposta ad un quesito diventa un corso di programmazione che monopolizza la disussione a scapito di altri.
Puoi vedere esempi di codice cercando nella libreria e filmati qui sul sito, oppure anche in italiano sul canale ProRealTime Italia di YouTube.
02/25/2019 at 3:50 PM #9227102/26/2019 at 2:38 PM #92368ciao,
dopo vari tentativi ed un’altra nottata passata su PRT sono riuscito a sistemare praticamente tutto 🙂
adesso (per non aprire un altro topic, visto che si tratta comunque di argomenti relativi al Target Profit) vorrei ancora chiederti un suggerimento su come gestire il discorso TP.
…molto brevemente…
vorrei mettere (nei parametri di inizio codice) due valori che vorrei chiamare ad esempio “PercStop” e “PercTrail” (entrambi con valori numerici che possono variare da 0 a 100).
adesso che so come gestire i valori di TP e SL (impostandoli sempre in Pips derivanti da differenze di prezzo), vorrei trovare un comando nel codice che al raggiungimento di una certa percentuale del mio numero di Pips tra il mio prezzo di ingresso ed il mio TP mi possa spostare il valore di SL allo stesso valore di ingresso. Stessa cosa anche per il TP.
faccio un brevissimo esempio: entro long su EUR/USD a 1,1350 con un valore di TP posizionato a 1,1400 (50 pips di differenza). Se nel campo “PercStop” metto il valore 50, vorrei che quando il prezzo raggiunge il 50% della “strada” che deve percorrere verso il mio TP (ovvero 25 pips, ovvero 1,1375) il mio valore si SL venisse automaticamente spostato dall’attuale SL al mio prezzo di ingresso 1,1350.
stessa cosa vorrei fare modificando il mio TP in trail al raggiungimento di una certa % degli stessi 50 pips indicati sopra come esempio.
Potresti per favore indicarmi come procedere e quali istruzioni utilizzare ?
Grazie mille
(ovviamente faccio riferimento al tuo ultimo codice che mi hai fornito che è diventato per me un punto di riferimento).
02/26/2019 at 3:02 PM #92372Per il breakeven (trovi molti esempi se cerchi BREAKEVEN o BREAK EVEN o magari anche PAREGGIO) eccolo (non l’ho provato):
123456789101112TargetProfit = 50 * pipsize //50 pips di TPPercStop = 0.50 //attiva il pareggio al 50% del profittoIF Not OnMarket THENBreakEven = 0ENDIFIF LongOnMarket AND ((close - Tradeprice) >= (TargetProfit * PercStop)) OR ShortOnMarket AND ((Tradeprice - close) >= (TargetProfit * PercStop)) THENBreakeven = TradepriceENDIFIF OnMarket THENSELL AT Breakeven STOPEXITSHORT AT BreakEven STOPENDIFQuanto al trailing stop, di quanto deve essere l’incremento?
02/26/2019 at 3:29 PM #92375Grazie mille !!
tra poco proverò ad aggiornare il codice 🙂
per il trailing l’incremento potrebbe essere la metà dei pips tra il mio prezzo di entrata e lo SL iniziale e lo farei partire (come per il discorso del “pareggio” da un valore percentuale al cui raggiungimento si passa dallo SL al trailing, ovvero il “PercTrail” (magari anche qui posso partire dal 50% per poi vedere se si riesce ad ottimizzare un poco senza ovviamente cadere nell’ overfitting).
inoltre vorrei sostituire il valore 50 fisso presente nella prima riga del tuo codice (visto che varierebbe da operazione ad operazione) con la relativa formula che dovrebbe essere il prezzo di entrata dell’operazione meno il valore di stop loss iniziale. quali voci dovrei usare ? non penso “trade price” perché l’operazione non è ancora aperta (corretto ?). riferendomi al tuo codice dovrebbe essere “Prezzo” – “StopLoss” poiché sono due valori che conosciamo appena si completa il pattern anche se non siamo ancora entrati in posizione, giusto ?
Grazie mille !!!
02/26/2019 at 6:03 PM #92393Devi fare riferimento al prezzo d’entrata, contenuto nella variabile Prezzo.
02/26/2019 at 7:53 PM #92397123456789101112131415161718192021222324252627282930313233343536DEFPARAM CumulateOrders = False // Posizioni cumulate disattivateIF OnMarket OR Close < low[3] THEN //Azzerare il prezzo serve a non inserire ancora l'ordine pendente...Prezzo = 0 //... una volta entrato oppure quando non ci sono più le condizioniENDIFIF LOW[0] > LOW[2] AND LOW[1] > LOW[2] AND LOW[1] > LOW[0] AND HIGH[1] > HIGH[2] AND HIGH [1] > HIGH[0] THENTargetProfitPip = (abs(LOW[2] - Prezzo))*pipsizePercStop = 0.50Prezzo = HIGH[1] //Salvo il prezzo d'entrataStopLoss = abs(LOW[2] - Prezzo) //SL sul minimo del patternTargetProfit = abs(high[2] - Prezzo) //Target Profit pari all'ampiezza del patternENDIFIF Prezzo AND Not OnMarket THENBreakEven=0 //Inserire l'ordine pendente ad ogni candelaBUY 10000 SHARES AT Prezzo STOPSET STOP LOSS StopLossSET TARGET PROFIT StopLoss//SET TARGET PROFIT TargetProfitENDIFIF LongOnMarket AND ((Close-Tradeprice) >= (TargetProfitPip*PercStop)) THENBreakEven=TradepriceENDIFIF OnMarket THENSELL AT BreakEven + 0.0005 STOPENDIFgraphonprice tradeprice - StopLoss coloured(255,0,0,255) AS "S"graphonprice tradeprice + TargetProfit coloured(0,128,0,255) AS "T"graph closegraph high[1]graph low[2]graph Prezzograph low[2] - high[1]ciao,
le cose stanno incominciando a funzionare e anche piuttosto bene :):) (finalmente!)
spero di incominciare a farti domande sempre meno frequenti e sempre più mirate…
al momento vorrei chiederti soltanto un paio di cose
1. mi daresti cortesemente un’occhiata al codice dove ho inserito i tuoi suggerimenti per lo spostamento dello SL a pareggio. Questa sera controllerò ancora molte operazioni ma per adesso sembra funzionare molto bene. Volevo soltanto sapere se a livello di programmazione/struttura del codice non ci sono grossi errori.
2. adesso che incomincio ad avere un codice di base abbastanza solido su cui lavorare, volevo tornare molto brevemente su un quesito che è diventato (anzi è ritornato) molto pertinente. Allego una immagine dove si vede che il pattern che uso per le mie prove si è correttamente formato il 25,26 e 27 maggio. Nell’attesa dell’entrata long avvenuta correttamente in data 3 giugno al superamento del massimo del 26 maggio, vi sono tre candele (31 maggio, 1 e 2 giugno) che hanno un minimo inferiore al minimo del pattern (candela del 25 maggio). Indipendentemente dal Time Frame e dalla valuta specifica, avrei l’esigenza di inserire nel codice un comando che mi cancella l’ordine pendente se mentre sto aspettando di entrare long si verifica una giornata/candela avente il minimo inferiore al minimo del pattern. (Joe Ross la chiama “nullifying bar” ovvero la barra che scendendo sotto il minimo del pattern fa azzerare tutto).
Grazie veramente per il tuo aiuto.
03/20/2019 at 4:50 PM #94175Ciao,
sto effettuando numerosi test e per il momento (fortunatamente 🙂 ) non ho più avuto bisogno di grossi aiuti…
vorrei però ritornare un attimo sul discorso dello spostamento dello stop in pari al raggiungimento di una determinata % di pips tra l’entry ed il TP, concetto che ho compreso e che sto usando abbastanza agevolmente.
per evitare però le eventuali insidie tipiche dell’utilizzo del Trailing Stop (con il rischio di trovarsi a volte 1 pip sopra il trailing e poi torna tutto indietro), Vorrei chiederti cortesemente un aiuto su come e dove inserire nel codice una seconda percentuale dalla quale far entrare in funzione il trailing stop.
mi spiego meglio: tra il mio punto di entry e il TP iniziale ho ad esempio 20 pips. io imposto 0,5 nella percentuale “PercStop” che mi avevi gentilmente indicato e quando supero i 10 pips (ovvero il 50% della distranza tra entry e TP) sposto lo stop in pari per proteggere la mia posizione e da qui parte il trailing. Fin qui tutto ok. io a questo punto però vorrei inserire una seconda % (ovviamente superiore alla prima) per spostare per la seconda volta il livello di uscita facendo al contempo partire il trailing. Ad esempio a 80% (ovvero al raggiungimento di 16 pips su 20) vorrei spostare lo Stop dal livello di ingresso alla metà tra entry e TP e far partire da qui il trail (e se dovesse tornare indietro non aspetto fino a chiudere la mia posizione in pari ma almeno porto a casa la metà di quanto avrei voluto inizialmente realizzare.
Come posso fare ?
Ti ringrazio per la Tua consueta disponibilità e pazienza.
Grazie.
03/21/2019 at 12:35 PM #94262Prova questa variante (non l’ho provata):
1234567891011121314151617181920TargetProfit = 50 * pipsize //50 pips di TPPercStop1 = 0.50 //attiva il pareggio al 50% del profittoPercStop2 = 0.80 //attiva lo SL a metà del profitto quanto questo ragguinge l'80%IF Not OnMarket THENBreakEven = 0ENDIFIF LongOnMarket AND ((close - Tradeprice) >= (TargetProfit * PercStop2)) OR ShortOnMarket AND ((Tradeprice - close) >= (TargetProfit * PercStop2)) AND BreakEven = 1 THENIF LongOnMarket THENBreakeven = max(BreakEven,Tradeprice + (TargetProfit / 2)) //mettere al sicuro il 50% del profitto (è un BreakEven + metà profitto)ELSIF ShortOnMarket THENBreakeven = min(BreakEven,Tradeprice - (TargetProfit / 2)) //mettere al sicuro il 50% del profitto (è un BreakEven + metà profitto)ENDIFENDIFIF LongOnMarket AND ((close - Tradeprice) >= (TargetProfit * PercStop1)) OR ShortOnMarket AND ((Tradeprice - close) >= (TargetProfit * PercStop1)) AND BreakEven = 0 THENBreakeven = TradepriceENDIFIF OnMarket THENSELL AT Breakeven STOPEXITSHORT AT BreakEven STOPENDIF03/21/2019 at 12:51 PM #94263 -
AuthorPosts
Find exclusive trading pro-tools on