[Logo] Spazio Aperto Banca Sella
[Register] Registrati   [Login] Login    
[Search] Ricerca   [Recent Topics] Argomenti Recenti   [Hottest Topics] Argomenti vivaci  
[Banner Pubblicitario]
Calcolo indicatori in time frame diversi  XML
Indice dei Forum » SellaExtreme 5
Autore Messaggio
Henry77


Registrato: 09/11/2017 09:49:14
Messaggi: 111
Offline

Buongiorno,

E' possibile ricalcolare gli indicatori (ad esempio delle sma) avendo il seguente set up.
2 time frame diversi da osservare con sma diverse per ogni time frame.
Ad esempio sul 15 minuti posso ricalcolare l'indicatore sul 30 minuti oppure devo per forza avere salvato in una variabile temporanea il valore dell'indicatore sul 30minuti vecchio?
Sarebbe molto utile poter ricalcolare il valore dell'indicatore del 30minuti quando osservo il 15 minuti.
Usando indicatore.calculate(t) non è possibile, t non è corrisponde nei 2 time frame.

Esiste una soluzione?
Grazie

elena.papurello


Registrato: 30/09/2015 10:46:13
Messaggi: 374
Offline

Ciao Henry77, in merito alla tua richiesta potresti, eventualmente inserire su un grafico a 15 minuti:

- SMA(20)
- SMA(40) che fa la media di 40 candele a 15 minuti, analogo ma non uguale, ad una SMA(20) su un grafico a 30 minuti

In alternativa potresti scrivere un indicatore personalizzato che internamente potrebbe avere una serie di appoggio che è la serie a 30 minuti calcolata. Su questa serie interna a 30 minuti si calcola quindi la SMA.

Per maggiori dettagli puoi eventualmente contattare la società EiS s.r.l. E' una società con cui collaboriamo che offre un servizio di analisi completo e personalizzato in base alle esigenze del cliente, sia per il servizio di Algotrading di SellaExtreme 5, sia per clienti che desiderano personalizzare i propri TS utilizzando il servizio SellaTradingBridge. Per conoscere senza impegno le condizioni del servizio e richiedere loro assistenza è possibile contattare EiS tramite email a support@eisworld.it lasciando i propri recapiti. Sarà cura della società prendere contatto diretto con il cliente.
Restiamo a disposizione, buona giornata!

Elena - Team Sella
EU1


Registrato: 25/08/2018 11:08:58
Messaggi: 10
Offline

Ciao Henry77,
devo utilizzare in un trading system con TF a1 minuto i valori di indicatori calcolati su TimeFrame a 1 giorno.
Come faccio?
Quando si genera un evento tutte le serie si riferiscono all'evento che si è generato nella serie con time frame intraday.
Mentre non so come fare a riferirmi alla serie prezzi con timeframe giornaliero in cui calcolo i miei indicatore.
Mi puoi aiutare, grazie
Eugenio
Henry77


Registrato: 09/11/2017 09:49:14
Messaggi: 111
Offline

Ciao,

ti giro un esempio di codice commentato, spero si capisca come si possa fare.
In ogni caso devi dichiarare gli indicatori nei time frame che desideri in questo caso 1min e daily
Per poter aggiornare gli indicatori daily sul tf 1 min devi usare il UserContext.tDailyCurrent altrimenti se non vuoi aggiornarli puoi usare UserContext.tDailymenouno.
Questi due variabili sono memorizzate nello UserContext che servono per memorizzare dati tra un evento e l'altro. Il trucco sta a memorizzare le candele dei singoli tf che ti interessano.

esempio:
* 1 MIN 1MIN 1MIN 1MIN 1MIN 1MIN 1MIN 1MIN 1MIN MIN 1MIN 1MIN 1MIN 1MIN 1MIN 1MIN 1MIN 1MIN MIN 1MIN 1MIN 1MIN 1MIN 1MIN 1MIN 1MIN 1MIN */
if(SystemContext.EventType == TSEventType.Candle && SystemContext.PriceSerie == psTF1MIN)
{

UserContext.t1Current = SystemContext.PriceSerie.LastCandleIndex; // 1min // tempo della candela corrente dove si possono aggiornare i dati con i tf diversi
if (UserContext.t1Current > 0)
{
t1 = SystemContext.PriceSerie.LastCandleIndex - 1; // questa è il tempo della candela precedente già chiusa, ha un valore ormai definito e fisso


UserContext.ema11_1min_tmpV = EMA11_1MIN.Values[t1]; // esempio di indicatore sul tf 1min

UserContext.Sma20_daily_tmpV = SMA20_DAILY.Values[UserContext.tDailyCurrent]; // qui c'è il valore aggiornato dell'indicatore sul time frame daily aggiornato ad 1 min.

UserContext.Sma20_daily_tmpV = SMA20_DAILY.Values[UserContext.tDailymenouno]; // qui c'è il valore dell'indicatore sul time frame daily ma rimane fisso, visto che la candela è chiusa.
}
}


/* DAILY DAILY DAILY DAILY DAILY DAILY DAILY DAILY DAILY DAILY DAILY DAILY DAILY DAILY DAILY DAILY DAILY DAILY DAILY DAILY DAILY DAILY DAILY DAILY DAILY DAILY */
if(SystemContext.EventType == TSEventType.Candle && SystemContext.PriceSerie == psTFDAILY)
{
UserContext.tDailyCurrent = SystemContext.PriceSerie.LastCandleIndex ; // Daily // candela corrente dove si possono aggiornare i dati con i tf diversi
if(UserContext.tDailyCurrent > 0)
{
tDaily = SystemContext.PriceSerie.LastCandleIndex - 1;
UserContext.tDailymenouno = tDaily;


UserContext.Sma20_daily_tmpV = SMA20_DAILY.Values[UserContext.tDailymenouno]; // esempio di indicatore daily
}
}

EU1


Registrato: 25/08/2018 11:08:58
Messaggi: 10
Offline

Ho provato lo script, ma c'è una cosa che non mi convince.
Creiamo le variabili da usare nel time frame ad 1minuto:
-UserContext.tDailyCurrent
-UserContext.tDailymenouno
quando si genera l'evento Candle a 1 giorno.

Se avvio il programma la candela ad 1 giorno si aggiornerà quante volte durante la giornata per scatenarmi l'evento Candle e permettermi di inizializzare le due variabili:
-UserContext.tDailyCurrent
-UserContext.tDailymenouno

Se faccio girare il programma e provo a stampare la vairabile UserContext.Sma20_daily_tmpV sulla console mi dice che la variable è indefinita.
Ho inserito anche un messaggio sull'evento candle per la serie psTFDAILY e noto che non si attiva mai.
Grazie questa sera ci penso su.... e domani ti aggiorno.
Io sono inesperto su questo sistema di programmazione ho iniziato durante le vacanze di Natale, probabilmente mi sfugge qualcosa.

Eugenio

This message was edited 1 time. Last update was at 09/01/2020 19:02:13

EU1


Registrato: 25/08/2018 11:08:58
Messaggi: 10
Offline

Ciao Henry77,
ho provato di nuovo ma il problema sussiste.
Non riesco a generare un evento che mi attivi la serie con time frame daily per andare a memorizzare le variabili -UserContext.tDailyCurrent
-UserContext.tDailymenouno
Da utilizzare poi nel timeframe a 1 minuto

A tuo avviso come possiamo fare?

Grazie
Eugenio
Henry77


Registrato: 09/11/2017 09:49:14
Messaggi: 111
Offline

vero hai ragione, devi inizializzare il tempo della candela nel tf tick. Questo lo puoi fare solo una volta in quanto nel corso del giorno viene cambiata solo una volta (essendo daily)

Puoi eliminare l'evento daily e usare l'evento tick. Ma devi sempre avere dichiarato gli indicatori daily ovviamente.

if (SystemContext.EventType == TSEventType.Tick)
{
if (SystemContext.PriceSerie == psTFDAILY) //Daily
{
if (UserContext.CountDaily == 0) // questo serve per aggiornare solo una volta, non serve ad ogni tick
{
var tDailytick = SystemContext.PriceSerie.LastCandleIndex;
UserContext.tDailyCurrent = tDailytick;
UserContext.CountDaily =1;
}
}

}
EU1


Registrato: 25/08/2018 11:08:58
Messaggi: 10
Offline

Ho già provato con altri possibili eventi.
Il guaio è che l'evento tick non si verifica nella serie daily.
Ho provato il tuo scrip e ho inserito un MSG sulla consolle per verificare se per caso si verificano le condizioni if che hai impostato.
Il primo if sul tick si verifica
Il secondo if sulla serie daily non si verifica e quindi non riesco a resettare le variabili.

Dobbiamo trovare un'altro sistema ma quale......???
Oggi pomeriggio provo ad utilizzare la funzione cross tra i prezzi nel tf a 1 minuto ed un indicatore nella serie prezzi con tf giornaliero e ti aggiorno.

Grazie
Eugenio
EU1


Registrato: 25/08/2018 11:08:58
Messaggi: 10
Offline

Ho provato la funzione cross con un indicatore daily.
Mi appare in console un'errore di Javascript.
Mah.. inizio a pensare non si possa fare. Esiste un modo per passare dei parametri tra un TS ed un altro?
Uno UserContext globale a tutto l'ambiente in cui girano i trading System?

Un'altra constatazione: la candela daily relativa al LastIndex dovrebbe essere quella del giorno in corso che si attualiza all'ultimo tick. Quindi il tuo script che mi hai inviato ieri dovrebbe funzionare... L'ambiente dello script ed i grafici sono la stessa cosa e la candela del grafico si aggiorna durante la giornata di borsa...
Boh ... ti ho fatto alcune considerazioni.

Grazie
EUgenio
Henry77


Registrato: 09/11/2017 09:49:14
Messaggi: 111
Offline

io ho provato sia con il backtest che con il monitor funziona correttamente come atteso.
Entrambi gli eventi nel tick funzionano correttamente.( ho provato con una serie di 1ms e daily)

Per quanto riguarda le altre domande sul passaggio di variabili su piu trading system non so risponderti, non credo, bisogna chiedere a Sella.
EU1


Registrato: 25/08/2018 11:08:58
Messaggi: 10
Offline

Ciao Henry,
dopo il tuo post mi sono messo li ed ho analizzato a fondo i singoli passaggi utilizzando la consolle.
Adesso riesco a farlo funzionare anch'io!!
ho inserito questo codice:
if(SystemContext.IsFirst)
{
UserContext.CountDaily = 0;
}
Grazie per l'aiuto ed il tempo che mi hai dedicato mi sei stato veramente utilie, io sono alle prime armi...
Eugenio
Henry77


Registrato: 09/11/2017 09:49:14
Messaggi: 111
Offline

Ottimo!
 
Indice dei Forum » SellaExtreme 5
Vai a:   
E.t.v.s.p.b WLS11G