Richiesta aiuto per settaggio TARGET PROFIT

Viewing 15 posts - 61 through 75 (of 117 total)
  • Author
    Posts
  • #96077 quote
    Albert FX
    Participant
    Average
    //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:

    • 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 !!

    #96081 quote
    Albert FX
    Participant
    Average

    ho incollato due volte il codice (che è identico) perché pensavo di aver avuto problemi con il copia/incolla

    scusa.

    #96105 quote
    robertogozzi
    Moderator
    Master

    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.

    #96151 quote
    Albert FX
    Participant
    Average

     

    //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:

    • 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 !! 🙂

    qta-mista.png qta-mista.png qta-fissa.png qta-fissa.png
    #96154 quote
    Albert FX
    Participant
    Average

    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 🙁

    #96157 quote
    robertogozzi
    Moderator
    Master

    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
    #96159 quote
    Albert FX
    Participant
    Average

    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.

    #96163 quote
    Albert FX
    Participant
    Average

    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
    #96184 quote
    robertogozzi
    Moderator
    Master

    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?

    #96240 quote
    Albert FX
    Participant
    Average

     

    //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 !!

    non-resetta.png non-resetta.png
    #96248 quote
    robertogozzi
    Moderator
    Master

    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.

    #96264 quote
    Albert FX
    Participant
    Average

    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.

    123-joe.png 123-joe.png
    #96270 quote
    robertogozzi
    Moderator
    Master

    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.

    #96288 quote
    Albert FX
    Participant
    Average

     

    //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.

    #96295 quote
    robertogozzi
    Moderator
    Master

    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?

Viewing 15 posts - 61 through 75 (of 117 total)
  • You must be logged in to reply to this topic.

Richiesta aiuto per settaggio TARGET PROFIT


ProOrder: Trading Automatico & Backtesting

New Reply
Author
author-avatar
Albert FX @albert-fx Participant
Summary

This topic contains 116 replies,
has 2 voices, and was last updated by robertogozzi
6 years, 9 months ago.

Topic Details
Forum: ProOrder: Trading Automatico & Backtesting
Language: Italian
Started: 02/15/2019
Status: Active
Attachments: 26 files
Logo Logo
Loading...