ProRealCode - Trading & Coding with ProRealTime™
//PARAMETRI
//inserire qui sotto tutti i parametri BASE del codice
// Definizione dei parametri del codice
DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate
MioRischio = 100 //importo massimo in euro che voglio rischiare per ogni singola operazione
PercStop1 = 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 mercato
IF Not OnMarket THEN
BreakEven = 0
ENDIF
//CONDIZIONI
//inserire qui sotto tutte le condizioni che caratterizzano il pattern o la strategia da tradare
AO=Average[5](MedianPrice)-Average[34](MedianPrice)
Cond1 = AO[0]>AO[1] AND AO[0]<0
Cond2 = AO[1]<AO[2] AND AO[1]<0
Cond3 = AO[2]<AO[3] AND AO[2]<0
Cond4 = AO[3]<AO[4] AND AO[3]<0
Cond5 = AO[4]<0
CondTOT = Cond1 AND Cond2 AND Cond3 AND Cond4 AND Cond5 //Condizione globale da tradare
//COMPORTAMENTI
//inserire qui sotto come si deve comportare la strategia quando è ONMARKET
IF CondTOT THEN
TargetProfit = (HIGH[0] – LOW[0])/pipsize //VALORE in PIPS del mio TARGET INIZIALE
Prezzo = HIGH[0] //VALORE al quale si entra in posizione se vengono soddisfatte TUTTE le CONDIZIONI
StopLoss = (HIGH[0] – LOW[0])/pipsize //VALORE in PIPS dello STOP LOSS INIZIALE da settare in base alla
ENDIF
Moltiplicatore = (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 THEN
BUY Moltiplicatore lots AT (Prezzo+0.0000) STOP //Ordine automatico di ENTRATA LONG in posizione con eventuale aggiunta di pips
ENDIF
//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
//ENDIF
IF LongOnMarket AND ((close – Tradeprice) >= (TargetProfit * PercStop1)) THEN
Breakeven = Tradeprice
ENDIF
IF LongOnMarket THEN
SELL Moltiplicatore lots AT Breakeven STOP
ENDIF
SET STOP pLOSS StopLoss
graph 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:
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 !!
ho incollato due volte il codice (che è identico) perché pensavo di aver avuto problemi con il copia/incolla
scusa.
Intanto modifica la riga 40, perché devi convertire solo il PREZZO, non gli altri dati:
Moltiplicatore = (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.
//PARAMETRI
//inserire qui sotto tutti i parametri BASE del codice
// Definizione dei parametri del codice
DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate
MioRischio = 100 //importo massimo in euro che voglio rischiare per ogni singola operazione
PercStop1 = 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 OR Close < LOW[0] THEN
Prezzo=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 tradare
AO=Average[5](MedianPrice)-Average[34](MedianPrice)
Cond1 = AO[0]>AO[1] AND AO[0]<0
Cond2 = AO[1]<AO[2] AND AO[1]<0
Cond3 = AO[2]<AO[3] AND AO[2]<0
Cond4 = AO[3]<AO[4] AND AO[3]<0
Cond5 = AO[4]<0
CondTOT = Cond1 AND Cond2 AND Cond3 AND Cond4 AND Cond5 //Condizione globale da tradare
//COMPORTAMENTI
//inserire qui sotto come si deve comportare la strategia quando è ONMARKET
IF CondTOT THEN
TargetProfit = (HIGH[0] - LOW[0])/pipsize //VALORE in PIPS del mio TARGET INIZIALE
Prezzo = HIGH[0] //VALORE al quale si entra in posizione se vengono soddisfatte TUTTE le CONDIZIONI
StopLoss = (HIGH[0] - LOW[0])/pipsize //VALORE in PIPS dello STOP LOSS INIZIALE da settare in base alla
ENDIF
Moltiplicatore = (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 THEN
BUY Moltiplicatore lots AT (Prezzo+0.0000) STOP //Ordine automatico di ENTRATA LONG in posizione con eventuale aggiunta di pips
ENDIF
//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
//ENDIF
IF LongOnMarket AND ((close - Tradeprice) >= (TargetProfit * PercStop1)) THEN
Breakeven = Tradeprice
ENDIF
IF LongOnMarket THEN
SELL Moltiplicatore lots AT Breakeven STOP
ENDIF
SET STOP pLOSS StopLoss
graph Moltiplicatore
ciao,
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:
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 !! 🙂
se 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 🙁
Hai 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:
ONCE Flag = 0
All riga 31 scrivi:
IF CondTOT THEN
Flag = 1
ENDIF
Alla 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:
IF OnMarket OR MieCondizioni THEN
Flag = 0
ENDIF
Grazie !!!
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.
Grazie 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 !!
//PARAMETRI
//inserire qui sotto tutti i parametri BASE del codice
// Definizione dei parametri del codice
DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate
MioRischio = 100 //importo massimo in euro che voglio rischiare per ogni singola operazione
PercStop1 = 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
ONCE Flag = 0
IF OnMarket OR Close < LOW[0] THEN
Flag=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 tradare
AO=Average[5](MedianPrice)-Average[34](MedianPrice)
Cond1 = AO[0]>AO[1] AND AO[0]<0
Cond2 = AO[1]<AO[2] AND AO[1]<0
Cond3 = AO[2]<AO[3] AND AO[2]<0
Cond4 = AO[3]<AO[4] AND AO[3]<0
Cond5 = AO[4]<0
CondTOT = Cond1 AND Cond2 AND Cond3 AND Cond4 AND Cond5 //Condizione globale da tradare
IF CondTOT THEN
Flag = 1
ENDIF
//COMPORTAMENTI
//inserire qui sotto come si deve comportare la strategia quando è ONMARKET
IF CondTOT THEN
TargetProfit = (HIGH[0] - LOW[0])/pipsize //VALORE in PIPS del mio TARGET INIZIALE
Prezzo = HIGH[0] //VALORE al quale si entra in posizione se vengono soddisfatte TUTTE le CONDIZIONI
StopLoss = (HIGH[0] - LOW[0])/pipsize //VALORE in PIPS dello STOP LOSS INIZIALE
ENDIF
Moltiplicatore = (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 THEN
BUY Moltiplicatore lots AT (Prezzo+0.0000) STOP //Ordine automatico di ENTRATA LONG in posizione con eventuale aggiunta di pips
ENDIF
//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
//ENDIF
IF LongOnMarket AND ((close - Tradeprice) >= (TargetProfit * PercStop1)) THEN
Breakeven = Tradeprice
ENDIF
IF LongOnMarket THEN
SELL Moltiplicatore lots AT Breakeven STOP
ENDIF
SET STOP pLOSS StopLoss
graph Moltiplicatore
Creati un indicatore con le tue condizione e mettilo sotto il grafico, in modo da segnalarti quando ci sono le condizioni, dopodiché verifichi gli ingressi:
IF BarIndex > 40 THEN
AO=Average[5](MedianPrice)-Average[34](MedianPrice)
Cond1 = AO[0]>AO[1] AND AO[0]<0
Cond2 = AO[1]<AO[2] AND AO[1]<0
Cond3 = AO[2]<AO[3] AND AO[2]<0
Cond4 = AO[3]<AO[4] AND AO[3]<0
Cond5 = AO[4]<0
ELSE
CondTOT = 0
ENDIF
CondTOT = Cond1 AND Cond2 AND Cond3 AND Cond4 AND Cond5
RETURN CondTOT
Per quanto riguarda Moltiplicatore, che valori ti segnala GRAPH quando entra a mercato?
//PARAMETRI
//inserire qui sotto tutti i parametri BASE del codice
// Definizione dei parametri del codice
DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate
MioRischio = 100 //importo massimo in euro che voglio rischiare per ogni singola operazione
PercStop1 = 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
ONCE Flag = 0
IF OnMarket OR Close < LOW[0] THEN
Flag=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 tradare
AO=Average[5](MedianPrice)-Average[34](MedianPrice)
Cond1 = AO[0]>AO[1] AND AO[0]<0
Cond2 = AO[1]<AO[2] AND AO[1]<0
Cond3 = AO[2]<AO[3] AND AO[2]<0
Cond4 = AO[3]<AO[4] AND AO[3]<0
Cond5 = AO[4]<0
CondTOT = Cond1 AND Cond2 AND Cond3 AND Cond4 AND Cond5 //Condizione globale da tradare
IF CondTOT THEN
Flag = 1
ENDIF
//COMPORTAMENTI
//inserire qui sotto come si deve comportare la strategia quando è ONMARKET
IF CondTOT THEN
TargetProfit = (HIGH[0] - LOW[0])/pipsize //VALORE in PIPS del mio TARGET INIZIALE
Prezzo = HIGH[0] //VALORE al quale si entra in posizione se vengono soddisfatte TUTTE le CONDIZIONI
StopLoss = (HIGH[0] - LOW[0])/pipsize //VALORE in PIPS dello STOP LOSS INIZIALE
ENDIF
Moltiplicatore = (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 THEN
BUY Moltiplicatore lots AT (Prezzo+0.0000) STOP //Ordine automatico di ENTRATA LONG in posizione con eventuale aggiunta di pips
ENDIF
//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
//ENDIF
IF LongOnMarket AND ((close - Tradeprice) >= (TargetProfit * PercStop1)) THEN
Breakeven = Tradeprice
ENDIF
IF LongOnMarket THEN
SELL Moltiplicatore lots AT Breakeven STOP
ENDIF
SET STOP pLOSS StopLoss
//SET STOP pTRAILING TargetProfit
graph Moltiplicatore
ciao,
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 !!
Ovviamente 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.
ok, 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.
Se 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.
//PARAMETRI
//inserire qui sotto tutti i parametri BASE del codice
// Definizione dei parametri del codice
DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate
MioRischio = 100 //importo massimo in euro che voglio rischiare per ogni singola operazione
PercStop1 = 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
ONCE Flag = 0
IF OnMarket OR CLOSE < LOW[0] THEN
Flag=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 tradare
AO=Average[5](MedianPrice)-Average[34](MedianPrice)
Cond1 = AO[0]>AO[1] AND AO[0]<0
Cond2 = AO[1]<AO[2] AND AO[1]<0
Cond3 = AO[2]<AO[3] AND AO[2]<0
Cond4 = AO[3]<AO[4] AND AO[3]<0
Cond5 = AO[4]<0
CondTOT = Cond1 AND Cond2 AND Cond3 AND Cond4 AND Cond5 //Condizione globale da tradare
IF CondTOT THEN
Flag = 1
ENDIF
//COMPORTAMENTI
//inserire qui sotto come si deve comportare la strategia quando è ONMARKET
IF CondTOT THEN
TargetProfit = (HIGH[0] - LOW[0])/pipsize //VALORE in PIPS del mio TARGET INIZIALE
Prezzo = HIGH[0] //VALORE al quale si entra in posizione se vengono soddisfatte TUTTE le CONDIZIONI
StopLoss = (HIGH[0] - LOW[0])/pipsize //VALORE in PIPS dello STOP LOSS INIZIALE
ENDIF
Moltiplicatore = (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 THEN
BUY Moltiplicatore lots AT (Prezzo+0.0000) STOP //Ordine automatico di ENTRATA LONG in posizione con eventuale aggiunta di pips
ENDIF
//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
//ENDIF
IF LongOnMarket AND ((close - Tradeprice) >= (TargetProfit * PercStop1)) THEN
Breakeven = Tradeprice
ENDIF
IF LongOnMarket THEN
SELL Moltiplicatore lots AT Breakeven STOP
ENDIF
SET STOP pLOSS StopLoss
//SET STOP pTRAILING TargetProfit
graph Moltiplicatore
ciao,
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.
Ah…. 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?
Richiesta aiuto per settaggio TARGET PROFIT
This topic contains 116 replies,
has 2 voices, and was last updated by
robertogozzi
6 years, 9 months ago.
| Forum: | ProOrder: Trading Automatico & Backtesting |
| Language: | Italian |
| Started: | 02/15/2019 |
| Status: | Active |
| Attachments: | 26 files |
The information collected on this form is stored in a computer file by ProRealCode to create and access your ProRealCode profile. This data is kept in a secure database for the duration of the member's membership. They will be kept as long as you use our services and will be automatically deleted after 3 years of inactivity. Your personal data is used to create your private profile on ProRealCode. This data is maintained by SAS ProRealCode, 407 rue Freycinet, 59151 Arleux, France. If you subscribe to our newsletters, your email address is provided to our service provider "MailChimp" located in the United States, with whom we have signed a confidentiality agreement. This company is also compliant with the EU/Swiss Privacy Shield, and the GDPR. For any request for correction or deletion concerning your data, you can directly contact the ProRealCode team by email at privacy@prorealcode.com If you would like to lodge a complaint regarding the use of your personal data, you can contact your data protection supervisory authority.