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.
-
-
04/11/2019 at 1:11 PM #96077123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960//PARAMETRI//inserire qui sotto tutti i parametri BASE del codice// Definizione dei parametri del codiceDEFPARAM CumulateOrders = False // Posizioni cumulate disattivateMioRischio = 100 //importo massimo in euro che voglio rischiare per ogni singola operazionePercStop1 = 0.50 //attiva il pareggio al 50% del profitto//PercStop2 = 0.80 //attiva lo SL a metà del profitto quanto questo ragguinge l’80%//DEFPARAM FlatAfter = 220000 //Range orario DOPO il quale non bisogna più essere in posizione (eventuale)//DEFPARAM FLATBEFORE = 090000 //Range orario PRIMA del quale non bisogna ancora essere in posizione (eventuale)//INSERIRE EVENTUALE PARAMETRO DAY OF THE WEEK PER ULTERIORE FILTRO DA TESTARE//IF OnMarket THEN//Prezzo=0 //azzera la variabile Prezzo per non soddisfare le condizioni del pattern//ENDIF //se si è già a mercatoIF Not OnMarket THENBreakEven = 0ENDIF//CONDIZIONI//inserire qui sotto tutte le condizioni che caratterizzano il pattern o la strategia da tradareAO=Average[5](MedianPrice)-Average[34](MedianPrice)Cond1 = AO[0]>AO[1] AND AO[0]<0Cond2 = AO[1]<AO[2] AND AO[1]<0Cond3 = AO[2]<AO[3] AND AO[2]<0Cond4 = AO[3]<AO[4] AND AO[3]<0Cond5 = AO[4]<0CondTOT = Cond1 AND Cond2 AND Cond3 AND Cond4 AND Cond5 //Condizione globale da tradare//COMPORTAMENTI//inserire qui sotto come si deve comportare la strategia quando è ONMARKETIF CondTOT THENTargetProfit = (HIGH[0] – LOW[0])/pipsize //VALORE in PIPS del mio TARGET INIZIALEPrezzo = HIGH[0] //VALORE al quale si entra in posizione se vengono soddisfatte TUTTE le CONDIZIONIStopLoss = (HIGH[0] – LOW[0])/pipsize //VALORE in PIPS dello STOP LOSS INIZIALE da settare in base allaENDIFMoltiplicatore = (MioRischio/(StopLoss*Prezzo))/pipsize //QUANTITA’ dello strumento da negoziare per avere in caso di perdita un valore//corrispondente a MIORISCHIO (nei parametri iniziali)IF not onmarket AND CondTOT THENBUY Moltiplicatore lots AT (Prezzo+0.0000) STOP //Ordine automatico di ENTRATA LONG in posizione con eventuale aggiunta di pipsENDIF//IF LongOnMarket AND ((close – Tradeprice) >= (TargetProfit * PercStop2)) THEN//IF LongOnMarket THEN//Breakeven = max(BreakEven,Tradeprice + (TargetProfit / 2)) //mettere al sicuro il 50% del profitto (è un BreakEven + metà profitto)//ENDIF//ENDIFIF LongOnMarket AND ((close – Tradeprice) >= (TargetProfit * PercStop1)) THENBreakeven = TradepriceENDIFIF LongOnMarket THENSELL Moltiplicatore lots AT Breakeven STOPENDIFSET STOP pLOSS StopLossgraph Moltiplicatore
hai assolutamente ragione, infatti io nel mio post del 04/10/2019 at 2:37 PM ho indicato “USD/CAD daily dal 3 aprile 2017 ad oggi”, proprio perché sapevo che per metterti in condizione di replicare il mio problema dovevo (come giustamente mi avevi ricordato in uno dei primi post) darti indicazioni precise 🙂
l’operazione rimane aperta perché per il momento non ho ancora inserito nessun TP o Trailing… (che sarebbe stata la prossima modifica non appena risolti gli attuali problemi)
gli attuali problemi però riguardano:
- il sistema entra in posizione solo se scatta il segnale di acquisto nel giorno immediatamente successivo alla candela di setup. Se tale segnale avviene anche solo due giorni dopo il sistema lo ignora e non entra i posizione. L’ordine dovrebbe rimanere pendente fino a quando non supera il massimo della candela di setup, oppure fino a quando non si forma un nuovo pattern oppure fino a quando il prezzo scende sotto il minimo della candela di setup. Ma ciò purtroppo al momento non avviene.
- il sistema dovrebbe portare lo SL al prezzo di ingresso quando raggiungo il 50% del mio target iniziale. Ma ciò non avviene.
Successivamente il sistema dovrebbe nuovamente spostare lo SL, al 50% del target iniziale quando si raggiunge 80% di tale target e contemporaneamente far partire un trailing profit pari al valore del target iniziale espresso alla riga 40 (ma questo sarebbe stato lo step successivo).
per il momento preferisco procedere per gradi a comprendere bene di volta in volta i vari passaggi e le varie aggiunte di istruzioni (così come ho fatto per il discorso delle Condizioni che ora ho compreso e che so gestire nel modo desiderato 🙂 )
ti allego l’ultimissima versione del codice al quale ho semplicemente apportato la divisione pipsize anziché 10000.
GRAZIE !!
04/11/2019 at 1:13 PM #9608104/11/2019 at 2:47 PM #96105Intanto modifica la riga 40, perché devi convertire solo il PREZZO, non gli altri dati:
1Moltiplicatore = (MioRischio/(StopLoss*(Prezzo/pipsize)))Quando entra in posizione è corretyto, Venerdì 19/5/1978 ci sono le condizione e piazza l’ordine pendente che entra Lunedì 22/5/1978. Ho come ultima operazione aperta l’11/11/2007 ed è ancora in corso.
Per quanto riguarda gli ordini pendenti è normale che sia così, durano UNA sola barra e, se t’interessano ancora, devi reimmetterli ad ogni barra successiva. Nel caso non ci siano più le condizioni nella barra successiva però vuoi che ProOrder li piazzi di nuovo, devi salvare le condizioni (quando si verificano) in una variabile di tuo piacimento (in gergo detta flag) che utilizzerai per piazzare l’ordine pendente. Quando sei a mercato, oppure quando non desideri più piazzare l’ordine pendente, azzeri questa variabile e così via fino alle prossime condizioni.
04/11/2019 at 5:53 PM #96151123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172//PARAMETRI//inserire qui sotto tutti i parametri BASE del codice// Definizione dei parametri del codiceDEFPARAM CumulateOrders = False // Posizioni cumulate disattivateMioRischio = 100 //importo massimo in euro che voglio rischiare per ogni singola operazionePercStop1 = 0.50 //attiva il pareggio al 50% del profitto//PercStop2 = 0.80 //attiva lo SL a metà del profitto quanto questo ragguinge l'80%//DEFPARAM FlatAfter = 220000 //Range orario DOPO il quale non bisogna più essere in posizione (eventuale)//DEFPARAM FLATBEFORE = 090000 //Range orario PRIMA del quale non bisogna ancora essere in posizione (eventuale)//INSERIRE EVENTUALE PARAMETRO DAY OF THE WEEK PER ULTERIORE FILTRO DA TESTAREIF OnMarket OR Close < LOW[0] THENPrezzo=0 //Azzerare il prezzo serve a non inserire ancora l'ordine pendente...ENDIF //... una volta entrato oppure quando non ci sono più le condizioni//IF Not OnMarket THEN//BreakEven = 0//ENDIF//CONDIZIONI//inserire qui sotto tutte le condizioni che caratterizzano il pattern o la strategia da tradareAO=Average[5](MedianPrice)-Average[34](MedianPrice)Cond1 = AO[0]>AO[1] AND AO[0]<0Cond2 = AO[1]<AO[2] AND AO[1]<0Cond3 = AO[2]<AO[3] AND AO[2]<0Cond4 = AO[3]<AO[4] AND AO[3]<0Cond5 = AO[4]<0CondTOT = Cond1 AND Cond2 AND Cond3 AND Cond4 AND Cond5 //Condizione globale da tradare//COMPORTAMENTI//inserire qui sotto come si deve comportare la strategia quando è ONMARKETIF CondTOT THENTargetProfit = (HIGH[0] - LOW[0])/pipsize //VALORE in PIPS del mio TARGET INIZIALEPrezzo = HIGH[0] //VALORE al quale si entra in posizione se vengono soddisfatte TUTTE le CONDIZIONIStopLoss = (HIGH[0] - LOW[0])/pipsize //VALORE in PIPS dello STOP LOSS INIZIALE da settare in base allaENDIFMoltiplicatore = (MioRischio/(StopLoss*(Prezzo/pipsize))) //QUANTITA' dello strumento da negoziare per avere in caso di perdita un valore//corrispondente a MIORISCHIO (nei parametri iniziali)IF not onmarket AND CondTOT THENBUY Moltiplicatore lots AT (Prezzo+0.0000) STOP //Ordine automatico di ENTRATA LONG in posizione con eventuale aggiunta di pipsENDIF//IF LongOnMarket AND ((close - Tradeprice) >= (TargetProfit * PercStop2)) THEN//IF LongOnMarket THEN//Breakeven = max(BreakEven,Tradeprice + (TargetProfit / 2)) //mettere al sicuro il 50% del profitto (è un BreakEven + metà profitto)//ENDIF//ENDIFIF LongOnMarket AND ((close - Tradeprice) >= (TargetProfit * PercStop1)) THENBreakeven = TradepriceENDIFIF LongOnMarket THENSELL Moltiplicatore lots AT Breakeven STOPENDIFSET STOP pLOSS StopLossgraph Moltiplicatoreciao,
il tuo suggerimento di dividere solo il prezzo per il pipsize non va però nella direzione giusta, secondo me…
se io divido tutto per pipsize, ovvero “Moltiplicatore = (MioRischio/(StopLoss*Prezzo))/pipsize”, io ottengo delle quantità di valuta acquistate diverse da operazione ad operazione che mi permettono (in base al prezzo ed al numero dei pips del mio SL) di rispettare il valore “MioRischio” espresso in valuta e che rappresenta la massima perdita che sono disposto a subire. (prima immagine allegata).
Se invece divido solo il prezzo per pipsize la quantità di valuta acquistata risulta sempre uguale a 1 e non è corretto visto che l’ampiezza in pips del mio SL ed il prezzo varia da operazione ad operazione e dovrebbe anche variare quindi il quantitativo di valuta acquistata. (seconda immagine allegata).
le due videate scaturiscono con il sistema impostato a 10000 CAD come capitale iniziale e lotto FX uguale a 1.
inoltre, seguendo le tue indicazioni della variabile flag, ho riattivato alle righe 13-14-15 la variabile denominata prezzo e a tal proposito volevo chiederti:
- devo scrivere “AND Prezzo” alla riga 30 dopo Cond5 ?
- le variabile flag Prezzo alla riga 14 non è che va in conflitto con il valore Prezzo della riga 41 ? è meglio dare un altro nome al flag di riga 14 o sono e devono corrispondere tra loro riga 14 e riga 41 ?
se puoi darmi una risposta su questo quesito possiamo procedere con l’analizzare perché non sposta lo stop in pari al raggiungimento del 50% del target.
nell’attesa di una tua gentile risposta vado avanti con qualche prova.
GRAZIE !! 🙂
04/11/2019 at 6:02 PM #96154se scrivo “AND Prezzo” alla riga 30 dopo Cond5 il sistema non genera alcuna operazione mentre se non aggiungo nulla alla riga 30 dopo Cond5 il sistema genera le “solite” 5 operazioni.
quindi non ho capito e non sto usando la variabile flag “Prezzo” nel modo corretto.
e purtroppo non saprei nemmeno come o dove modificarla 🙁
04/11/2019 at 6:14 PM #96157Hai già fatto la conversione di STOPLOSS alla linea 42.
Inoltre MioRischio è in valuta, quindi bisognerà convertirlo tenendo conto del valore di ogni pips. Qual’è la formula che vuoi usare?
Per il flag, alla riga 30 non devi aggiungere niente. Alla riga 12 scrivi:
1ONCE Flag = 0All riga 31 scrivi:
123IF CondTOT THENFlag = 1ENDIFAlla riga 53 invece di CONDTOT usa la variabile FLAG.
Poi alla riga 12, o alla 20, dovrai azzerare FLAG quando sei a mercato oppure quando non ci sono più le condizioni (stabilisci tu quando) per piazzare di nuovo l’ordine:
123IF OnMarket OR MieCondizioni THENFlag = 0ENDIF04/11/2019 at 6:22 PM #96159Grazie !!!
provo immediatamente il discorso FLAG
per quanto riguarda invece il discorso MioRischio non ho capito bene la tua domanda ma adesso ci ragiono e cerco di fare qualche tentativo e poi magari più tardi riscrivo.
sinceramente, vedendo i quantitativi acquistati tutti diversi da operazione ad operazione, pensavo che la formula Moltiplicatore della riga 45 fosse già ok così com’è 🙁
grazie mille.
04/11/2019 at 7:14 PM #96163Grazie per i preziosi suggerimenti.
ho effettuato le modifiche da te indicate e penso di aver eseguito correttamente quanto mi hai indicato. Non ho capito però cosa vuol dire l’azzeramento del flag (ovvero la tua ultima indicazione). Ho comunque provato ed ho inserito un azzeramento alle righe 13-14-15.
purtroppo però non funziona perché continuano ad esserci delle operazioni mancanti rispetto a ciò che vedo sul grafico.
ti allego nuovamente l’ultimissima versione del codice chiedendoti cortesemente di darci uno sguardo e di dirmi dove ho sbagliato apportando eventualmente le giuste modifiche.
poi sistemeremo anche il “MioRischio” (anche se pensavo fosse già ok ) ma per adesso vorrei vedere gli ingressi in posizione anche per quelle operazioni che scattano non soltanto il giorno successivo al pattern ma anche nei giorni seguenti. 🙂
GRAZIE !!
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374//PARAMETRI//inserire qui sotto tutti i parametri BASE del codice// Definizione dei parametri del codiceDEFPARAM CumulateOrders = False // Posizioni cumulate disattivateMioRischio = 100 //importo massimo in euro che voglio rischiare per ogni singola operazionePercStop1 = 0.50 //attiva il pareggio al 50% del profitto//PercStop2 = 0.80 //attiva lo SL a metà del profitto quanto questo ragguinge l'80%//DEFPARAM FlatAfter = 220000 //Range orario DOPO il quale non bisogna più essere in posizione (eventuale)//DEFPARAM FLATBEFORE = 090000 //Range orario PRIMA del quale non bisogna ancora essere in posizione (eventuale)//INSERIRE EVENTUALE PARAMETRO DAY OF THE WEEK PER ULTERIORE FILTRO DA TESTAREONCE Flag = 0IF OnMarket OR Close < LOW[0] THENFlag=0 //Azzerare il prezzo serve a non inserire ancora l'ordine pendente...ENDIF //... una volta entrato oppure quando non ci sono più le condizioni//IF Not OnMarket THEN//BreakEven = 0//ENDIF//CONDIZIONI//inserire qui sotto tutte le condizioni che caratterizzano il pattern o la strategia da tradareAO=Average[5](MedianPrice)-Average[34](MedianPrice)Cond1 = AO[0]>AO[1] AND AO[0]<0Cond2 = AO[1]<AO[2] AND AO[1]<0Cond3 = AO[2]<AO[3] AND AO[2]<0Cond4 = AO[3]<AO[4] AND AO[3]<0Cond5 = AO[4]<0CondTOT = Cond1 AND Cond2 AND Cond3 AND Cond4 AND Cond5 //Condizione globale da tradareIF CondTOT THENFlag = 1ENDIF//COMPORTAMENTI//inserire qui sotto come si deve comportare la strategia quando è ONMARKETIF CondTOT THENTargetProfit = (HIGH[0] - LOW[0])/pipsize //VALORE in PIPS del mio TARGET INIZIALEPrezzo = HIGH[0] //VALORE al quale si entra in posizione se vengono soddisfatte TUTTE le CONDIZIONIStopLoss = (HIGH[0] - LOW[0])/pipsize //VALORE in PIPS dello STOP LOSS INIZIALEENDIFMoltiplicatore = (MioRischio/(StopLoss*Prezzo)/pipsize) //QUANTITA' dello strumento da negoziare per avere in caso di perdita un valore//corrispondente a MIORISCHIO (nei parametri iniziali)IF not onmarket AND Flag THENBUY Moltiplicatore lots AT (Prezzo+0.0000) STOP //Ordine automatico di ENTRATA LONG in posizione con eventuale aggiunta di pipsENDIF//IF LongOnMarket AND ((close - Tradeprice) >= (TargetProfit * PercStop2)) THEN//IF LongOnMarket THEN//Breakeven = max(BreakEven,Tradeprice + (TargetProfit / 2)) //mettere al sicuro il 50% del profitto (è un BreakEven + metà profitto)//ENDIF//ENDIFIF LongOnMarket AND ((close - Tradeprice) >= (TargetProfit * PercStop1)) THENBreakeven = TradepriceENDIFIF LongOnMarket THENSELL Moltiplicatore lots AT Breakeven STOPENDIFSET STOP pLOSS StopLossgraph Moltiplicatore04/11/2019 at 10:30 PM #96184Creati un indicatore con le tue condizione e mettilo sotto il grafico, in modo da segnalarti quando ci sono le condizioni, dopodiché verifichi gli ingressi:
123456789101112IF BarIndex > 40 THENAO=Average[5](MedianPrice)-Average[34](MedianPrice)Cond1 = AO[0]>AO[1] AND AO[0]<0Cond2 = AO[1]<AO[2] AND AO[1]<0Cond3 = AO[2]<AO[3] AND AO[2]<0Cond4 = AO[3]<AO[4] AND AO[3]<0Cond5 = AO[4]<0ELSECondTOT = 0ENDIFCondTOT = Cond1 AND Cond2 AND Cond3 AND Cond4 AND Cond5RETURN CondTOTPer quanto riguarda Moltiplicatore, che valori ti segnala GRAPH quando entra a mercato?
04/12/2019 at 10:23 AM #96240123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475//PARAMETRI//inserire qui sotto tutti i parametri BASE del codice// Definizione dei parametri del codiceDEFPARAM CumulateOrders = False // Posizioni cumulate disattivateMioRischio = 100 //importo massimo in euro che voglio rischiare per ogni singola operazionePercStop1 = 0.50 //attiva il pareggio al 50% del profitto//PercStop2 = 0.80 //attiva lo SL a metà del profitto quanto questo ragguinge l'80%//DEFPARAM FlatAfter = 220000 //Range orario DOPO il quale non bisogna più essere in posizione (eventuale)//DEFPARAM FLATBEFORE = 090000 //Range orario PRIMA del quale non bisogna ancora essere in posizione (eventuale)//INSERIRE EVENTUALE PARAMETRO DAY OF THE WEEK PER ULTERIORE FILTRO DA TESTAREONCE Flag = 0IF OnMarket OR Close < LOW[0] THENFlag=0 //Azzerare il prezzo serve a non inserire ancora l'ordine pendente...ENDIF //... una volta entrato oppure quando non ci sono più le condizioni//IF Not OnMarket THEN//BreakEven = 0//ENDIF//CONDIZIONI//inserire qui sotto tutte le condizioni che caratterizzano il pattern o la strategia da tradareAO=Average[5](MedianPrice)-Average[34](MedianPrice)Cond1 = AO[0]>AO[1] AND AO[0]<0Cond2 = AO[1]<AO[2] AND AO[1]<0Cond3 = AO[2]<AO[3] AND AO[2]<0Cond4 = AO[3]<AO[4] AND AO[3]<0Cond5 = AO[4]<0CondTOT = Cond1 AND Cond2 AND Cond3 AND Cond4 AND Cond5 //Condizione globale da tradareIF CondTOT THENFlag = 1ENDIF//COMPORTAMENTI//inserire qui sotto come si deve comportare la strategia quando è ONMARKETIF CondTOT THENTargetProfit = (HIGH[0] - LOW[0])/pipsize //VALORE in PIPS del mio TARGET INIZIALEPrezzo = HIGH[0] //VALORE al quale si entra in posizione se vengono soddisfatte TUTTE le CONDIZIONIStopLoss = (HIGH[0] - LOW[0])/pipsize //VALORE in PIPS dello STOP LOSS INIZIALEENDIFMoltiplicatore = (MioRischio/(StopLoss*Prezzo)/pipsize) //QUANTITA' dello strumento da negoziare per avere in caso di perdita un valore//corrispondente a MIORISCHIO (nei parametri iniziali)IF not onmarket AND Flag THENBUY Moltiplicatore lots AT (Prezzo+0.0000) STOP //Ordine automatico di ENTRATA LONG in posizione con eventuale aggiunta di pipsENDIF//IF LongOnMarket AND ((close - Tradeprice) >= (TargetProfit * PercStop2)) THEN//IF LongOnMarket THEN//Breakeven = max(BreakEven,Tradeprice + (TargetProfit / 2)) //mettere al sicuro il 50% del profitto (è un BreakEven + metà profitto)//ENDIF//ENDIFIF LongOnMarket AND ((close - Tradeprice) >= (TargetProfit * PercStop1)) THENBreakeven = TradepriceENDIFIF LongOnMarket THENSELL Moltiplicatore lots AT Breakeven STOPENDIFSET STOP pLOSS StopLoss//SET STOP pTRAILING TargetProfitgraph Moltiplicatoreciao,
seguendo le tue indicazioni sono riuscito a risolvere la prima serie di problemi 🙂
adesso (nell’attesa di introdurre lo spostamento dello stop in pari e poi successivamente al 50% del target…) il sistema entra correttamente !! entra al superamento del max della candela di setup ed esce allo sfondamento del minimo della stessa candela. E sono anche riuscito a mantenere i livelli di ingresso anche per i giorni successivi nel caso la sfondamento del massimo della candela di setup non dovesse avvenire subito il giorno seguente (e per me è un grande risultato).
non riesco però a resettare il segnale qualora nell’attesa di entrare i posizione il prezzo scenda sotto il minimo della candela di setup 🙁
allego una immagine di un’operazione, soltanto come esempio a livello visivo, dove si può chiaramente riscontrare questo problema (sempre USD/CAD daily, l’operazione è datata 18 settembre 2017 e il giorno prima si ha un minimo inferiore al minimo della candela di setup del 14 settembre che dovrebbe annullare il segnale ma ciò non avviene)
ho analizzato ogni singola operazione generata nel 2017-2018 ed i problema si ripete (sono perfetti tutti gli ingressi/uscite anche nei giorni successivi ma manca questo reset).
potresti per favore far girare il codice che allego e dirmi cosa modificare al fine di poter stornare l’ordine pendente se si scende sotto il minimo della candela di setup ? pensavo che il comando alla riga 13 (dove dico “IF OnMarket OR Close < LOW[0] THEN”) fosse sufficiente ma evidentemente manca ancora un piccolo dettaglio…
(intanto vado avanti con il controllo del moltiplicatore)
GRAZIE !!
04/12/2019 at 12:12 PM #96248Ovviamente va resettato il FLAG quando è a mercato, poi quando ritieni non vada più inserito l’ordine pendente, tu hai messo “< low”. Se non ti va bene cambialo con un’altra condizione.
Gli ordini a mercato non si stornano, o si chiudono o si lasciano aperti.
Gli ordini pendenti non si stornano, vengono cancellati alla chiusura della barra oppure entrano a mercato. Se interessa vanno reinseriti, altrimenti finisce li.
04/12/2019 at 1:55 PM #96264ok, sei stato chiarissimo come sempre, grazie.
ho compreso (ovviamente) che gli ordini a mercato, ovvero quando entro effettivamente in posizione, o si chiudono (SL, TP, effettuando una operazione con segno opposto) o si lasciano aperti (in attesa del raggiungimento di un taeget, di uno stop…)
ma per gli ordini pendenti, ovvero per tutte quelle volte che si è verificato un certo pattern e che il sistema ha regolarmente immesso un ordine in attesa di esecuzione, quale soluzione si dovrebbe adottare per eventualmente “cancellare” tale ordine se non sussistono più le condizioni affinché esso rimanga in attesa di esecuzione ?
da quanto mi pare di capire è sufficiente non reimmetterlo alla candela successiva, giusto ? ho fatto tanta fatica 🙁 per capire come reimmettere nuovamente un ordine in attesa della sua esecuzione che adesso non so proprio che fare per “stoppare” il suo inserimento…
mi va bene attendere la fine della candela per capire se ho un nuovo minimo oppure no (come in questo caso), ma dove devo intervenire per non reimmettere più l’ordine se Close < LOW[0] ?
nella riga 13 dico chiaramente “IF OnMarket OR Close < LOW[0] THEN” e siccome non sono ancora a mercato perché sto aspettando di superare il massimo del pattern per entrare, ma il Close della candela è minore del LOW[0] perché il flag non viene azzerato ? ho messo apposta la funzione OR ed una delle due eventualità (la seconda) si è avverata e quindi non sussistono più tutte le condizioni.
mi sta sfuggendo qualcosa 🙁
allego una immagine di esempio. si tratta del pattern 123 di Joe Ross che sicuramente conoscerai benissimo (l’ho presa semplicemente cercando su Google immagini e quindi penso e spero di poterla tranquillamente allegare). Nell’attesa di entrare in posizione al superamento del punto 2 dopo che si è completato il pattern (quindi un ordine pendente a tutti gli effetti) io devo monitorare il prezzo affinché non scenda sotto il livello del punto 1, condizione questa che farebbe “cancellare” l’ordine pendente non entrando più a mercato, nemmeno se il prezzo dovesse poi risalire sopra il punto due.
tenendo conto delle caratteristiche e/o limitazioni del sistema, Tu come procederesti (a livello di programmazione) per cancellare l’ordine ??
(scusa se continuo ad usare la parola “cancellare”, che ho capito bene che non si può, ma è solo per cercare di spiegarmi nel modo più chiaro possibile).
GRAZIE MILLE.
ciao.
04/12/2019 at 2:26 PM #96270Se sei a mercato, oppure CLOSE < LOW viene sicuramente azzerato. Magari alle righe 24-30 ci sono ancora le condizione e viene posto nuovamente a 1, verificalo!
DEVE funzionare, basta inserire la condizione giusta.
04/12/2019 at 6:07 PM #96288123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475//PARAMETRI//inserire qui sotto tutti i parametri BASE del codice// Definizione dei parametri del codiceDEFPARAM CumulateOrders = False // Posizioni cumulate disattivateMioRischio = 100 //importo massimo in euro che voglio rischiare per ogni singola operazionePercStop1 = 0.50 //attiva il pareggio al 50% del profitto//PercStop2 = 0.80 //attiva lo SL a metà del profitto quanto questo ragguinge l'80%//DEFPARAM FlatAfter = 220000 //Range orario DOPO il quale non bisogna più essere in posizione (eventuale)//DEFPARAM FLATBEFORE = 090000 //Range orario PRIMA del quale non bisogna ancora essere in posizione (eventuale)//INSERIRE EVENTUALE PARAMETRO DAY OF THE WEEK PER ULTERIORE FILTRO DA TESTAREONCE Flag = 0IF OnMarket OR CLOSE < LOW[0] THENFlag=0 //Azzerare il prezzo serve a non inserire ancora l'ordine pendente...ENDIF //... una volta entrato oppure quando non ci sono più le condizioni//IF Not OnMarket THEN//BreakEven = 0//ENDIF//CONDIZIONI//inserire qui sotto tutte le condizioni che caratterizzano il pattern o la strategia da tradareAO=Average[5](MedianPrice)-Average[34](MedianPrice)Cond1 = AO[0]>AO[1] AND AO[0]<0Cond2 = AO[1]<AO[2] AND AO[1]<0Cond3 = AO[2]<AO[3] AND AO[2]<0Cond4 = AO[3]<AO[4] AND AO[3]<0Cond5 = AO[4]<0CondTOT = Cond1 AND Cond2 AND Cond3 AND Cond4 AND Cond5 //Condizione globale da tradareIF CondTOT THENFlag = 1ENDIF//COMPORTAMENTI//inserire qui sotto come si deve comportare la strategia quando è ONMARKETIF CondTOT THENTargetProfit = (HIGH[0] - LOW[0])/pipsize //VALORE in PIPS del mio TARGET INIZIALEPrezzo = HIGH[0] //VALORE al quale si entra in posizione se vengono soddisfatte TUTTE le CONDIZIONIStopLoss = (HIGH[0] - LOW[0])/pipsize //VALORE in PIPS dello STOP LOSS INIZIALEENDIFMoltiplicatore = (MioRischio/(StopLoss*Prezzo)/pipsize) //QUANTITA' dello strumento da negoziare per avere in caso di perdita un valore//corrispondente a MIORISCHIO (nei parametri iniziali)IF not onmarket AND Flag THENBUY Moltiplicatore lots AT (Prezzo+0.0000) STOP //Ordine automatico di ENTRATA LONG in posizione con eventuale aggiunta di pipsENDIF//IF LongOnMarket AND ((close - Tradeprice) >= (TargetProfit * PercStop2)) THEN//IF LongOnMarket THEN//Breakeven = max(BreakEven,Tradeprice + (TargetProfit / 2)) //mettere al sicuro il 50% del profitto (è un BreakEven + metà profitto)//ENDIF//ENDIFIF LongOnMarket AND ((close - Tradeprice) >= (TargetProfit * PercStop1)) THENBreakeven = TradepriceENDIFIF LongOnMarket THENSELL Moltiplicatore lots AT Breakeven STOPENDIFSET STOP pLOSS StopLoss//SET STOP pTRAILING TargetProfitgraph Moltiplicatoreciao,
hai ragione che DEVE funzionare… io però purtroppo non ho ancora tutta quella esperienza/capacità di riconoscere eventuali errori o incongruenze nel codice 🙁
Ho riguardato decine di volte il codice e non mi pare di vedere nulla di sbagliato.
Però mi sorge un dubbio: ma le righe 31-32-33 sono giuste ? o quell’ IF con il flag =1 è di troppo ?
Ma alla riga 53 quale flag legge ?
Ma le righe 13-14-15 è giusto che stiano così all’inizio ? Non dovrebbero magari stare alla riga 34-35-36 ? così solo dopo che le condizioni si sono verificate vado a ANCHE vedere se non sono ancora in posizione e se il prezzo non è sotto il minimo…
Purtroppo non so ancora maneggiare bene tutti questi IF. (infatti ho visto che avevi incapsulato due IF per lo spostamento dello stop al 50% e poi 80% e volevo chiederti dei chiarimenti…ma ne parleremo poi, appena avremo risolto questo discorso.)
Potresti per favore darci uno sguardo ?
GRAZIE.
04/12/2019 at 6:28 PM #96295Ah…. no…. non avevo fatto caso alla condizione della riga 13, avevo visto [0] e non mi ero accorto che è come se non ci fosse (quando tra le qudre c’è zero si possono omettere), quindi come fa CLOSE ad essere < a LOW? Al massimo può essere uguale!
La riga 14 viene esguita solo se un ordine è entrato a mercato.
Che vuoi verificare con quella condizione?
-
AuthorPosts
Find exclusive trading pro-tools on