Discussione: Scripts di esempio
-
18-03-13, 11:20 #111
- Data Registrazione
- Aug 2008
- Località
- Edolo (BS)
- Messaggi
- 693
Grazie Smash!
Domani sono a casa e provo.....
-
18-03-13, 11:53 #112
- Data Registrazione
- Jan 2011
- Località
- Castiglioncello (LI)
- Messaggi
- 240
SetPersistentVar non funziona neanche a me
Il primo codice che ho postato l'ho scritto un po di tempo fa e mi sembrava che funzionasse allora. Scusate per l'inconveniente...
ciaoE' difficile vedere un gatto nero in una stanza buia, specialmente se non c'è.
-
19-03-13, 16:52 #113
- Data Registrazione
- Aug 2008
- Località
- Edolo (BS)
- Messaggi
- 693
-
20-03-13, 11:13 #114
La funzione SetPersistentVar imposta il valore di una variabile persistente, cioè che viene preservata tra una esecuzione e la successiva dello script e viene salvata nel file della strategia.
Per recuperare il valore di una variabile persistente, è necessario utilizzare la funzione GetPersistentVar. Quando si cerca di recuperare il valore di una variabile persistente che non è stata precedentemente impostata, il valore ritornato è una stringa vuota.
Max Francario
-
20-03-13, 11:23 #115
- Data Registrazione
- Aug 2008
- Località
- Edolo (BS)
- Messaggi
- 693
Grazie Max, io però avevo già provato anche a recuperarla con GetPersistentVar, il problema è questo...
eseguo l'istruzione la prima volta e setto SetPersistentVar diciamo a 1
poi eseguo l'istruzione la seconda volta, recupero il valore 1 con GetPersistentVar, e poi vorrei settarlo a 2...oppure questo non è fattibile?
Intendi che per cambiare questa variabile devo proprio chiudere la strategia e riaprirla?
Grazie
-
20-03-13, 14:22 #116
- Data Registrazione
- Feb 2012
- Località
- Pisa
- Messaggi
- 351
Confermo anche io quello che hai detto: sembra che la variabile persistente una volta settata per la prima volta non la si possa modificare più!
Aggiungo inoltre che se si chiude la strategia e poi la si riapre (dopo averla pure salvata), la variabile persistente non ha più il valore di prima: diventa una stringa vuota e necessita di essere risettata per la prima volta.Ultima modifica di Smash; 20-03-13 alle 14:26
-
25-04-13, 09:56 #117
- Data Registrazione
- Apr 2013
- Messaggi
- 13
Presentazione e richiesta informazioni
Buongiorno a tutti, mi chiamo Renato e sono un novellino di questo mondo (trading e FiutoPro). Prima di tutto mi congratulo con i boss di questo bellissimo ambiente nonchè con gli sviluppatori del programma e infine anche con tutti gli utenti di questo forum che trovo molto utile e partecipato da ottime persone. Spero di diventarne parte a breve e di poter portare il mio modesto contributo.
Sto valutando in questi giorni l'acquisto di questo notevole programma, e per mia natura sono attratto particolarmente dal sistema di scripting. Anche conoscendo limitatamente tutto il resto del sw, sto già provando a scrivere qualche routine per saggiare le potenzialità della programmazione. Volevo provare a chiedervi un paio di cose, giusto per capire se sbaglio io la direzione in cui mi sto muovendo o se mancano proprio le possibilità di fare ciò che ho in mente.
Ho già visto che è possibile e già fatto qualcosa per leggere i valori del sottostante relativo alla mia strategia, e fin qui tutto bene. Ho altresì letto nel manuale che esiste una classe Tindicators. Quello che non capisco è se è possibile caricare dei vettori (quindi serie di dati) relativi agli indicatori che utilizzo nel grafico o nella watchlist legati alla mia strategia. Oppure se è possibile caricare o creare direttamente questi indicatori all'interno dell script.
Spero di aver spiegato decentemente i mei dubbi, e mi metto in attesa dei vostri pareri e delle vostre risposte...
Renato.
-
25-04-13, 14:20 #118
-
25-04-13, 15:44 #119
- Data Registrazione
- Feb 2012
- Località
- Pisa
- Messaggi
- 351
Ciao,
No, non è possibile utilizzare gli indicatori direttamente nel linguaggio di script (almeno secondo quanto affermava il buon Max in questo vecchio post:
http://www.playoptions.it/vbforum/sh...ll=1#post57887 ).
Di mio posso dirti che ho provato ad interagire con la classe TIndicators senza però ottenere alcun risultato utile.
Però dal momento che i singoli dati storici del sottostante sono tutti recuperabili ed utilizzabili tramite lo script, allora l'unica via percorribile che vedrei al momento potrebbe essere quella di calcolarsi autonomamente tramite script i valori degli indicatori che ti servono.
Ma per fare questo occorre conoscere le loro formule di calcolo in maniera tale da poter scrivere opportune funzioni di calcolo.
-
26-04-13, 14:01 #120
Salve Renato,
non è possibile aggiungere indicatori direttamente dallo script.
Al momento, esiste comunque un modo per poter ottenere i valori degli indicatori all'interno dello script, anche se un pò complicato. Ecco come fare:
- Aprire la finestra Workflows, quindi aggiungere un nuovo Workflow, non impostare nulla nella sezione Azione e passare subito alla sezione Condizione;
- Modificare la condizione del nuovo workflow, andando a scegliere come primo operatore un indicatore di analisi tecnica;
- Selezionare il sottostante desiderato, aggiungere il timeframe su cui calcolare gli indicatori, aggiungere gli indicatori voluti. Suggerisco di assegnare un nome ad ogni valore di uscita degli indicatori, in modo da poterne recuperare più facilmente i valori: ad esempio, se aggiungo una media mobile esponenziale sul Close a 20 periodi, posso assegnare un nome tipo "EMA_20". I nomi delle uscite degli indicatori devono essere univoci, se il nome scelto esiste già all'interno dello stesso timeframe, il software andrà automaticamente ad aggiungere un numero progressivo alla fine del nome per distinguere le varie uscite;
- A questo punto, gli indicatori sono già inseriti e calcolati in tempo reale dal software;
- Annullare la costruzione del nuovo Workflow;
- Andare nello Script, ed utilizzare il metodo AssertHistory del sottostante su cui sono stati applicati gli indicatori, passando come parametro il timeframe desiderato. Il metodo AssertHistory restituisce un oggetto di tipo THistoryDataContext;
- Usare il metodo GetSerieByName sull'oggetto di tipo THistoryDataContext appena ottenuto, passando come parametro il nome del valore di uscita dell'indicatore desiderato: riprendendo l'esempio di prima, avrei dovuto usare "EMA_20" come nome della serie da recuperare. Questo metodo restituisce un oggetto di tipo TDataVector;
- Usare le proprietà ed i metodi dell'oggetto TDataVector appena ottenuto per accedere ai valori dell'indicatore. Le proprietà più utili sono Last e LastClosed, per ottenere il valore della barra corrente ancora in "costruzione", ed il valore della penultima barra, ossia l'ultimo valore "finalizzato" dell'indicatore.
Spero di essere stato d'aiuto
Max Francario