Ottimizzare funzione tempo
Forums › ProRealTime forum Italiano › Supporto ProOrder › Ottimizzare funzione tempo
- This topic has 18 replies, 3 voices, and was last updated 3 years ago by robertogozzi.
-
-
07/25/2021 at 9:00 AM #174105
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<204500Grazie
07/25/2021 at 10:00 AM #174108Questo è il sistema per 15 minuti.
timel = time >= A and time <= B
Poi vai nelle variabili e metti come vedi nell’immagine.
Ciao
07/25/2021 at 7:13 PM #174138Grazie 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 <204500con A tra: 10000 e 90000 e B tra 1730000 e 220000 (come è possibile che in B non si superano le 173000?)
07/25/2021 at 10:58 PM #174145Le 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.
07/26/2021 at 9:04 AM #174166Ciao 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?
07/26/2021 at 11:01 AM #174176Significa 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.
07/26/2021 at 11:46 AM #174180Ho 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<=B07/26/2021 at 12:54 PM #174188Ma 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.
1 user thanked author for this post.
07/26/2021 at 1:09 PM #174191Ciao 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!
07/27/2021 at 9:28 AM #174217Il 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.
08/12/2021 at 7:52 AM #175130Ciao 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
08/12/2021 at 9:46 AM #175133Con 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):
1234IF Time >= 210000 THENEXITSHORT AT MarketSELL AT MarketENDIFPer operare solo dopo una certa ora (sostituisce DEFPARAM FLATBEFORE), puoi anche metterci un’orario di fine operatività:
123456TimeOK = Time >= 090000 //AND Time <= 180000..IF MieCondizioniLong AND TimeOK THENBUY AT MzrketENDIFPer quanto riguarda il bug, non è un bug, secondo me non stai usando un TF a 5 minuti. A me funziona correttamente.
08/12/2021 at 10:04 AM #17513608/12/2021 at 10:08 AM #17513808/12/2021 at 10:15 AM #175142Ah…. 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.
-
AuthorPosts
Find exclusive trading pro-tools on