info@playoptions.it Chiedi un consulto
+39 0425 792923 Lunedì - Venerdì, 9.00 - 18.00
Contattaci
toggle menu
info@playoptions.it Chiedi un consulto
+39 0425 792923 Lunedì - Venerdì, 9.00 - 18.00
Contattaci
toggle menu
Pagina 1 di 2 12 Ultima
  1. #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 12:57
    E' difficile vedere un gatto nero in una stanza buia, specialmente se non c'è.

  2. #2
    L'avatar di Cagalli Tiziano
    Data Registrazione
    Dec 2007
    Località
    Rovigo
    Messaggi
    10,290
    Citazione Originariamente Scritto da Ismael Visualizza Messaggio
    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 )

    ' SCRIPT PERSONALITY: BASIC
    '
    ' This is a sample code !
    ' Write here your own code.
    ' This editor supports auto-completion. 
    ' Press CTRL+Space to display a list of available functions and objects.
    ' To access objects properties, use the dot ('.') character.
    
    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                                                               
    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)                               
    nextexpma = "0"+cstr(mese+1) + "-" + cstr(anno)
    
    'crea il nome del file giornaliero
    Filename = "C:\Users\user\Dropbox\" + cstr(giorno) + cstr(mese) + cstr(anno) + "askbidticks" + ".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)
    Grazie,
    ottima idea!
    ..se corri dietro a due lepri, non ne prendi nemmeno una.

  3. #3
    L'avatar di Apocalips
    Data Registrazione
    May 2011
    Località
    PESCARA
    Messaggi
    2,630
    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

    Apo
    Ultima modifica di Apocalips; 30-01-15 alle 22:06
    ....non si desidera ciò che è facile ottenere (Ovidio)....

  4. #4

    Data Registrazione
    Jan 2011
    Località
    Castiglioncello (LI)
    Messaggi
    240
    Citazione Originariamente Scritto da Apocalips Visualizza Messaggio
    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

    Apo
    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'è.

  5. #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'è.

  6. #6

    Data Registrazione
    Mar 2013
    Messaggi
    192

    Question 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.

    Unbenannt.png

    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

  7. #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 raccolta
    E' difficile vedere un gatto nero in una stanza buia, specialmente se non c'è.

  8. #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 17:14
    E' difficile vedere un gatto nero in una stanza buia, specialmente se non c'è.

  9. #9

    Data Registrazione
    Mar 2013
    Messaggi
    192
    Citazione Originariamente Scritto da Ismael Visualizza Messaggio
    Ho messo in condivisione una strategia con nome "conscriptsalvadati" dove c'è lo script funzionante... fare copia ed incolla dal forum provoca delle volte errori...
    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

    Unbenannt.png

    Grazie
    Alex
    Ultima modifica di Alex1; 03-02-15 alle 19:40

  10. #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'è.

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •  
Contattaci

Chiama gli esperti
+39 0425 792923

Chiamaci
Email

Richiedi informazioni via E-MAIL
info@playoptions.it

Scrivici
Nostri Uffici

Vieni a trovarci
45100 Rovigo

Contattaci

Serve Aiuto?

Contattaci per maggiori informazioni.

Denis MorettoSpecialista Finanziario
Contattaci