Target profit non rispettato

Forums ProRealTime forum Italiano Supporto ProOrder Target profit non rispettato

Viewing 8 posts - 1 through 8 (of 8 total)
  • #212865

    Buongiorno. Domanda per Roberto Gozzi (o chi mi può aiutare). Scusate, è la prima volta che scrivo quindi spero di farlo nel posto giusto e alla persona giusta. Sto usando alcune strategie con trading simulato in real time sul dax a 15 min. Se faccio il back test il target viene preso. Nella strategia live (l’ho visto io in diretta) l’ordine (magari di vendita) se strategia long viene messo a caso dalla macchina (quello dello stop loss invece lo rispetta sempre). Ripeto che nel back test funziona perfettamente. Si tratta di un baco informatico oppure c’è qualcosa che non capisco? Questi sono i codici usati (ho tolto il codice dello stop)

    IF Condizioni long THEN
    StopLossL =
    Targetprofit= Tradeprice+30
    BUY 1 CONTRACTS AT MARKET
    SET STOP LOSS StopLossL
    SET TARGET PROFIT Targetprofit

    Se posso aggiungere una seconda domanda: Ho più strategie sullo stesso ma ho messo un limite (facciamo 2 contratti per esempio) per singola strategia. Proprio oggi entra la prima strategia con 2 contratti, poi prima che vada a target entra la seconda con 1 contratto. Domanda: quindi il limite è per singola strategia e non come posizione totale (perché alla fine c’erano 3 contratti aperti mentre io ne volevo max 2 sul singolo strumento)? E se si allora come si fa ad impostare un limite dei contratti su dax riferito al conto e non alle strategie singole? Grazie mille

    #212884

    Come può non averti segnalato un errore sulla riga 2?   (manca il valore da assegnare a StopLossL)

     

    #212931

    Ma no, ho scritto che lo avevo tolto io ne riportare l’esempio. Comunque adesso l’ho rimesso per chiarezza. Quindi?

    IF Condizioni long THEN
    StopLossL =abs(close – lowest[1](low))+2
    Targetprofit= Tradeprice+30
    BUY 1 CONTRACTS AT MARKET
    SET STOP LOSS StopLossL
    SET TARGET PROFIT Targetprofit

     

    #212967

    Il problema è TRADEPRICE che inizialmente ha valore 0, dopo ogni operazione contiene il prezzo dell’ultima operazione eseguita, quindi prezzo di apertura se hai aperto un’operazione oppure di chiusura se l’hai chiusa.

    Siccome l’hai messo PRIMA dell’entrata, il suo valore sarà 0 oppure il prezzo di chiusura della precedente operazione.

    Però anche mettendolo DOPO l’entrata, dovresti aspettare la prossima candela perché venisse valorizzato, quindi devi metterlo utilizzando il prezzo corrente, CLOSE, al posto di TRADEPRICE, per non restare una candela senza stop né target:

    siccome potrebbero verificarsi dei piccoli gap/lap o slippage, il prezzo corrente non è certo che sia davvero il prezzo d’entrata (in backtest si, ma in demo o reale no), quindi, all’inizio del codice è opportuno che quando viene rilevata una nuova operazione, sia lo stoploss che il target vengano ricalcolati con TRADEPRICE. Ecco il codice completo:

    ho anche aggiunto *PipSize al valore 30, perché venga automaticamente convertito in prezzo, altrimenti può andare bene con il DAX o SP500 ecc…, ma non con il forex; ad esempio aggiungere 30 al prezzo di EurUsd lo renderebbe impossibile da raggiungere, mentre PIPSIZE prima di aggiungerlo lo converte in 0.0030.

     

     

    #215574

    Grazie per la risposta. Ho riscritto il codice come mi hai detto, questa è la versione short ma non cambia il concetto (parliamo del dax e quindi ho tolto il pipsize).  Non so se ho sbagliato qualcosa ma come al solito l’ingresso è corretto, lo stop è corretto ma come ordini pendenti dopo essere entrato correttamente nel trade lista ordini mi dava: 1) un ordine pendente di acquisto al valore (corretto dello stop); 2) un ordine di acquisto con prezzo 1 (sul grafico live diceva 16001 ma le linee sparivano in basso). Premetto che il trade è andato in stop e non ha raggiunto il target ma non credo che l’0rdine del takeprofit fosse corretto. Cosa ho sbagliato (qualcosa nell’update on close, nel cumulateorders o non so).

     

    DEFPARAM CumulateOrders = False
    DEFPARAM FLATBEFORE = 90000
    DEFPARAM FLATAFTER = 210000
    TIMEFRAME(30minute, UPDATEONCLOSE )

    IF (OnMarket AND Not OnMarket[1]) OR (LongOnMarket AND ShortOnMarket[1]) OR (LongOnMarket[1] AND ShortOnMarket) OR (Not OnMarket AND (StrategyProfit <> StrategyProfit[1])) THEN
    Targetprofit = Tradeprice+30
    SET TARGET PROFIT Targetprofit
    ENDIF

    IF NOT ShortOnMarket AND condizioni short

    StopLossS = abs(close – highest[1](high))+5
    Targetprofit= Close+30

    SELLSHORT 1 CONTRACTS AT MARKET
    SET STOP LOSS StopLossS
    SET TARGET PROFIT Targetprofit
    ENDIF

    #215582

    Se metti un codice funzionante posso provare a verificarlo.

    Ad ogni modo, Targetprofit= Close+30 va bene per i Long, non per gli Short. Dovresti sostituirlo con -30.

     

    #215770

    2 domande correlate (sto usando prezzi live con il live trading nella versione 11 di prorealtime) :A) Oggi un sistema dove tra le condizioni di ingresso è ATR>20 e che non fornisce segnale nel paper trading è partito ugualmente anche se l’indicatore misurava ATR appena sopra 19 B) Un sistema dove ho messo all’inizio il seguente codice:

    DEFPARAM FLATAFTER = 190000
    TIMEFRAME(15minute, UPDATEONCLOSE )

    ONCE Entrata = 0
    ONCE Barra = 0
    IF OnMarket THEN
    Barra = 0
    Entrata = 0
    ENDIF

    (segue il resto del codice)

    ha fatto partire un ordine prima che fosse chiusa la candela della barra a 15 (non dovrebbe aspettare la fine se ho messo updateonclose?)

    Probabilmente sbaglio qualcosa ma può essere che il mio java abbia qualche baco  e non funzioni bene o sono sbagliati i codici?

    Grazie

    #215802

    Se hai eseguito il codice sul timeframe a 15 minuti, si, partirà quando la candela chiude.

    Se, invece, lo hai eseguito sun un timeframe più piccolo, ad esempio 1 minuto, e l’entrata è in questo timeframe, allora entra alla chiusra della candala a 1 minuto.

    Puoi provare a scrive, all’inizio DEFPARAM PreLoadBars = 0, per evitare il precaricamento di barre.

     

Viewing 8 posts - 1 through 8 (of 8 total)

Create your free account now and post your request to benefit from the help of the community
Register or Login