Discussione: Salvataggio dati e creazione di piccolo database
-
30-01-15, 15:28 #1
- Data Registrazione
- Jan 2011
- Località
- Castiglioncello (LI)
- Messaggi
- 240
Salvataggio dati e creazione di piccolo database
Ciao a tutti, posto una versione aggiornata di uno script che ho già postato. Salva ask,bid,numero di ticks dei 5 strike più atm. E' impostato per eurostoxx50 ma basta modificare lo step tra gli strike per adattarlo ad altri sottostanti.
Si potrebbe fare un piccolo database su una cartella di dropbox se qualcuno è interessato (e sempre che il capo sia d'accordo )
uses classes uses SysUtils dim f as textfile dim callss as tsecurity dim mainunderlying as tunderlying dim bidsc as tprice = [0,0,0,0,0] dim asksc as tprice = [0,0,0,0,0] dim bidsp as tprice = [0,0,0,0,0] dim asksp as tprice = [0,0,0,0,0] dim correzioneatm,i as double dim ATMf as Tstringlist dim ATM,Filename,strtosave,ATMtit as string dim calls as toption = [0,0,0,0,0] dim puts as toption = [0,0,0,0,0] dim underisin,anno, mese, giorno,nextexpma ,strike, Tuonome dim varbidtickc as double = [0,0,0,0,0] dim varasktickc as double = [0,0,0,0,0] dim varbidtickp as double = [0,0,0,0,0] dim varasktickp as double = [0,0,0,0,0] mainUnderlying = CurrentStrategy.GetMainUnderlying() underisin = mainunderlying.isin DecodeDate(Now(), anno, mese, giorno) 'scrivi il tuo nome tuonome = "Apo" 'scegli il mese di scadenza mese = 2 if mese<10 then nextexpma = "0"+cstr(mese) + "-" + cstr(anno) else nextexpma = cstr(mese) + "-" + cstr(anno) end if 'crea il nome del file giornaliero Filename = "C:\Users\user\Dropbox\" + cstr(giorno) + cstr(mese) + cstr(anno) + "askbidticks" + tuonome + ".txt" 'prende l'atm da un file txt oppure si può impostare scrivendo ATM = 3000 ATMf = new TStringList() ATMf.LoadFromFile("C:\Users\user\Dropbox\ATM.TXT") ATM=Cint(ATMf.text) ATMf.free correzioneatm = (ATM - int(mainunderlying.Last/25)*25)/25 'assegnazione di una variabile array ad ogni opzione for i = 0 to 4 strike = cstr(cstr(ATM) + (i-2)*25) calls[i] = CurrentStrategy.getbyName("C @ "+strike+" "+nextexpma) puts[i] = CurrentStrategy.GetByName("P @ "+strike+" "+nextexpma) next for i=-2 to 2 step 1 bidsc[i+2]=calls[i+2].bidObject asksc[i+2]=calls[i+2].askobject varbidtickc[i+2]=bidsc[i+2].tickcounter varasktickc[i+2]=asksc[i+2].tickcounter bidsp[i+2]=puts[i+2].bidObject asksp[i+2]=puts[i+2].askobject varbidtickp[i+2]=bidsp[i+2].tickcounter varasktickp[i+2]=asksp[i+2].tickcounter next strtosave= cstr(mainUnderlying.Last)&" "& cstr(calls[0].ask)&" "&cstr(varasktickc[0])&" "&cstr(calls[0].bid)&" "&cstr(varbidtickc[0])&" "& cstr(puts[0].ask)&" "&cstr(varasktickp[0])&" "&cstr(puts[0].bid)&" "&cstr(varbidtickp[0])&" "& cstr(calls[1].ask)&" "&cstr(varasktickc[1])&" "&cstr(calls[1].bid)&" "&cstr(varbidtickc[1])&" "& cstr(puts[1].ask)&" "&cstr(varasktickp[1])&" "&cstr(puts[1].bid)&" "&cstr(varbidtickp[1])&" "& cstr(calls[2].ask)&" "&cstr(varasktickc[2])&" "&cstr(calls[2].bid)&" "&cstr(varbidtickc[2])&" "& cstr(puts[2].ask)&" "&cstr(varasktickp[2])&" "&cstr(puts[2].bid)&" "&cstr(varbidtickp[2])&" "& cstr(calls[3].ask)&" "&cstr(varasktickc[3])&" "&cstr(calls[3].bid)&" "&cstr(varbidtickc[3])&" "& cstr(puts[3].ask)&" "&cstr(varasktickp[3])&" "&cstr(puts[3].bid)&" "&cstr(varbidtickp[3])&" "& cstr(calls[4].ask)&" "&cstr(varasktickc[4])&" "&cstr(calls[4].bid)&" "&cstr(varbidtickc[4])&" "& cstr(puts[4].ask)&" "&cstr(varasktickp[4])&" "&cstr(puts[4].bid)&" "&cstr(varbidtickp[4]) if SysUtils.FileExists(FileName)then AssignFile(f, Filename) Append(f) Writeln(f, strtosave) CloseFile(f) else strtosave = mainUnderlying.name & " " & DateToStr(date()) &" "& "ATM:"&ATM AssignFile(f, Filename) Rewrite(f) Writeln(f, strtosave) CloseFile(f) 'inserimento nella strategia delle 5 + 5 opzioni più atm for i=-5 to 5 step 1 CurrentStrategy.AddParametricOption(underisin,CALL,correzioneatm-i,5) CurrentStrategy.AddParametricOption(underisin,PUT,correzioneatm-i,5) next SetPersistentVar(ATMtit,ATM) end if
Ultima modifica di Ismael; 31-01-15 alle 13:57
E' difficile vedere un gatto nero in una stanza buia, specialmente se non c'è.
-
30-01-15, 16:01 #2
-
30-01-15, 23:03 #3
Piu che ottima direi, bravo Ismael
PS: Ismael, non ho capito questo passaggio:
prende l'atm da un file txt oppure si può impostare scrivendo ATM = 3000
ATMf = new TStringList()
ATMf.LoadFromFile("C:\Users\user\Dropbox\ATM.TXT")
ATM=Cint(ATMf.text)
ATMf.free
il file ATM.TXT dobbiamo crearlo noi preventivamente inserendo al suo interno
tutti gli strike della chain a passo 25?
grazie
ApoUltima modifica di Apocalips; 30-01-15 alle 23:06
....non si desidera ciò che è facile ottenere (Ovidio)....
-
31-01-15, 13:49 #4
- Data Registrazione
- Jan 2011
- Località
- Castiglioncello (LI)
- Messaggi
- 240
Ciao Apo!
Puoi scegliere:
o crei (tu o fiuto) un file che si chiama ATM.txt con scritto solo il valore dell' ATM oppure cancelli tutto e scrivi es ATM=3000.
Mi sono ricordato che devi anche scegliere la scadenza... ora correggo lo script e lo salvo corretto in 20 min...E' difficile vedere un gatto nero in una stanza buia, specialmente se non c'è.
-
31-01-15, 13:58 #5
- Data Registrazione
- Jan 2011
- Località
- Castiglioncello (LI)
- Messaggi
- 240
corretto...lo puoi provare?
E' difficile vedere un gatto nero in una stanza buia, specialmente se non c'è.
-
03-02-15, 12:57 #6
- Data Registrazione
- Mar 2013
- Messaggi
- 192
Domanda a Ismael
Ciao Ismael
Intanto ti vorrei ringraziare, per quello che fai per noi „non esperti“.
Incuriosito da questo script, l’ho inserito in Fiuto, purtroppo mi da un errore e si blocca.
Sfortunatamente non riesco a rivolvere il problema.
In più non riesco a decifrare questa frase, dove devo scrivere “3000” non avendo il file?
'prende l'atm da un file txt oppure si può impostare scrivendo ATM = 3000
ATMf = new TStringList()
ATMf.LoadFromFile("C:\Users\Alex\Dropbox\ATM.TXT")
ATM= Cint(ATMf.text) ATM=3000 sarebbe giusto?
ATMf.free
Intanto grazie
Alex
-
03-02-15, 13:06 #7
- Data Registrazione
- Jan 2011
- Località
- Castiglioncello (LI)
- Messaggi
- 240
Ora non sono in ufficio... Appen posso correggo..
L errore e quel 4 prima delle virgolette che va tolto.
E ok scrivere ATM= 3000 ma lo devi scrivere in una riga sotto atmf.free
Grazie a te per interesse... Se siamo in due o tre attivo lo spazio per raccoltaE' difficile vedere un gatto nero in una stanza buia, specialmente se non c'è.
-
03-02-15, 16:50 #8
- Data Registrazione
- Jan 2011
- Località
- Castiglioncello (LI)
- Messaggi
- 240
Ho messo in condivisione una strategia con nome "conscriptsalvadati" dove c'è lo script funzionante... fare copia ed incolla dal forum provoca delle volte errori...
Ultima modifica di Ismael; 03-02-15 alle 18:14
E' difficile vedere un gatto nero in una stanza buia, specialmente se non c'è.
-
03-02-15, 20:34 #9
- Data Registrazione
- Mar 2013
- Messaggi
- 192
Ciao Ismael
Intanto grazie, anche se in qualche modo al interno alla condivisione non trovo il file script, sono riuscito a farlo funzionare.
Ultima domanda, come devo impostare gli strike della chain per E-Mini S&P?
Ho fatto così, pero nel file 322015askbidticksAlex.text vengono tuti 0
correzioneatm = (ATM - int(mainunderlying.Last/5)*5)/5 'assegnazione di una variabile array ad ogni opzione for i = 0 to 4 strike = cstr(cstr(ATM) + (i-2)*5)
E-MINI S&P 500 03/02/2015 ATM:3000
2029.25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
2029.25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
2029.25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
2029.25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
2031.25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
2031 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
2030 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Grazie
AlexUltima modifica di Alex1; 03-02-15 alle 20:40
-
04-02-15, 14:03 #10
- Data Registrazione
- Jan 2011
- Località
- Castiglioncello (LI)
- Messaggi
- 240
Ciao, ho messo in condivisione la strategia con lo script funzionante su emini500... riesci a trovarla?
Comunque basta cambiare lo strike step da 25 a 5 (sostituisci tutti i 25 con 5)
Fammi sapere.E' difficile vedere un gatto nero in una stanza buia, specialmente se non c'è.