Ottimizzare funzione tempo

Viewing 15 posts - 1 through 15 (of 19 total)
  • Author
    Posts
  • #174105 quote
    MauroPro
    Participant
    Veteran

    Ciao Roberto,  sai se c’è qualche snippetcode per ottimizzare il range temporale in cui opera un TS? (La mascherina dell’ottimizzazione non prende lo 0 (es, time = 010000) inoltre non è facile definire unità temporali inferiori ad 1H).

    Probabilmente occorre un codice con soltanto la funzione Time (senza defparam flat before – flatafter).

    A tal proposito, come scriveresti con soltanto la funzione Time questo codice (lo uso sul Dax a 15 minuti):

    DEFPARAM Flatbefore = 010000
    limitHour = time<204500

    Grazie

    #174108 quote

    Questo è il sistema per 15 minuti.

    timel = time >=  A  and  time <= B

    Poi vai nelle variabili e metti come vedi nell’immagine.

    Ciao

     

    #174138 quote
    MauroPro
    Participant
    Veteran

    Grazie Mauro per la risposta, ma non riesco ancora a fare quello che voglio.

    Ti chiederei: che calcolo hai fatto per ottenere nel passo 1500?

    Che scarto è quello con 1500: 15 minuti? (non mi sembra dal report)

    Se poi inserisco limitHour influisce?

    Questo è quello che esce su 200 unità (per minimizzare il calcolo) di:

    timeDay=time>=A and time<=B
    limitHour = time <204500

    con A tra: 10000 e 90000 e B tra 1730000 e 220000 (come è possibile che in B non si superano le 173000?)

    #174145 quote
    robertogozzi
    Moderator
    Master

    Le ore sono sempre di 6 cifre, solo che  PRT le interpreta come numeri, togliendo gli zeri iniziali, per ottimizzare dalle 090000 alle 173000 con un passo di 15 minuti devi indicare 001500 (cioè 1500), se vuoi usare mezz’ora indicherai 003000 e per un’ora 010000.

    #174166 quote
    MauroPro
    Participant
    Veteran

    Ciao Roberto, in teoria quello che hai scritto è chiaro, ma in pratica ancora la cosa non è chiara.

    Ottimizzando un TF a 15 minuti con passo 3000, dovrei avere intervalli di 30 minuti (come hai scritto).

    Ottimizzando A dall’1 di notte alle 9 di mattina e B dalle 17:30 alle 21:30 leggo (ad esempio):

    A = 34000 e B 179000

    Cosa significa?

    #174176 quote
    robertogozzi
    Moderator
    Master

    Significa che hai sbagliato qualcosa.

    Parti da 010000 fino a 090000, con passo 003000. Indica sempre 6 cifre, senza preoccuparti se gli zeri iniziali vengono tolti.

    #174180 quote
    MauroPro
    Participant
    Veteran

    Ho riprovato digitando 6 cifre, ma il risultato non cambia. Ecco il codice iniziale del Dax a 15 minuti con 10K e sotto la parte iniziale  dell’ottimizzazione completata.

    Non capisco dove può essere l’errore.

    DEFPARAM CumulateOrders=False
    timeDay=time>=A and time<=B

    #174188 quote
    robertogozzi
    Moderator
    Master

    Ma non hai attivato il Walk Forward, anche con 1 solo passaggio.

    Dovrebbero  essere 153 combinazioni, non 378.

    Devi chiedere a PRT premendo Ctrl+M dalla piattaforma.

    MauroPro thanked this post
    #174191 quote
    MauroPro
    Participant
    Veteran

    Ciao Roberto, non capisco cosa c’entra il walkForward. E’ una modalità di ottimizzazione, si può usare o meno.

    Per quanto riguarda l’assistenza sinceramente preferisco farne a meno dato che ancora non mi hanno mai risolto un problema (è una descrizione non una critica!).

    Utilizzerò da ora solo il passo ad 1 ora che funziona, limitando così anche l’overfitting.

    Grazie per l’interessamento ed al prossimo problema!

    #174217 quote
    robertogozzi
    Moderator
    Master

    Il problema non è che non funziona, è che ti ottimizza ogni mezz’ora, ma se tu sei su un grafico a 1 minuto o 5 minuti entra anche in orari diversi dai 30 minuti.

    Lui lavora in base alle tue condizioni sul grafico che stai usando, se gli chiedi di fare un’ottimizzazione ogni mezz’ora te la fa,  però questo è indipendente dall’entrate.

    #175130 quote
    MauroPro
    Participant
    Veteran

    Ciao Roberto, stò riprovando ad ottimizzare la funzione tempo. Ti chiedo i seguenti punti (timeframe 15 minuti sul Dax):

    1) se ottimizzo la funzione TIME dal punto A (esempio ore 2o)  al punto B (esempio 22) con passo: 000500 = 5 minuti(scrivo sempre tutte e sei le cifre!) mi trova dei valori tipo: 211500, ma anche 217000. Sai se ci può essere un bug? Da te funziona così?

    2) //                                                               //                                                                                                      : 010000 = 1 ora                                                                      mi trova i valori corretti: 200000 – 210000 – 220000

    3) se provo ad ottimizzare defparam flatbefore/after con una variabile mi compare il seguente messaggio (vd  immagine). Sai il motivo?

    4) se volessi rimpiazzare defparam flatbefore = X e flat after = Y  con: cTime = time >= X and time <= Y, poi cosa devo scrivere-aggiungere nel codice per fargli chiudere  le operazione una volta superati questi orari come fa esattametne defparam?

    Grazie

    #175133 quote
    robertogozzi
    Moderator
    Master

    Con DEFPARAM (come con TIMEFRAME) n0n si possono usare variabili, quindi non sono ottimizabili, devi variarli manualmente tu per ogni prova che vuoi fare, oppure le rimpiazzi col codice.

    Per chiudere ad una certa ora (sostituisce DEFPARAM FLATAFTER):

    IF Time >= 210000 THEN
       EXITSHORT AT Market
       SELL      AT Market
    ENDIF

    Per operare solo dopo una certa ora (sostituisce DEFPARAM FLATBEFORE), puoi anche metterci un’orario di fine operatività:

    TimeOK = Time >= 090000 //AND Time <= 180000
     .
     .
    IF MieCondizioniLong AND TimeOK THEN
       BUY AT Mzrket
    ENDIF

    Per quanto riguarda il bug, non è un bug, secondo me non stai usando un TF a 5 minuti. A me funziona correttamente.

    #175136 quote
    MauroPro
    Participant
    Veteran

    Provo il tuo esempio sopra per rimpiazzare defparam con time.

    Ecco intanto cosa esce nel  TF  a 5 minuti.

    #175138 quote
    MauroPro
    Participant
    Veteran

    TF 5 minuti

    #175142 quote
    robertogozzi
    Moderator
    Master

    Ah…. adesso ho capito cosa vuoi dire. E’ normale, sono numeri non date, quindi non puoi evitarlo. Dopo 205500 c’è 206000 (non 210000).

    ProRelaTime supporta solo il tipo di dati numerico.

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

Ottimizzare funzione tempo


Supporto ProOrder

New Reply
Author
author-avatar
MauroPro @mauropro Participant
Summary

This topic contains 18 replies,
has 3 voices, and was last updated by robertogozzi
4 years, 5 months ago.

Topic Details
Forum: Supporto ProOrder
Language: Italian
Started: 07/25/2021
Status: Active
Attachments: 6 files
Logo Logo
Loading...