Scripts di esempio

Collapse
This is a sticky topic.
X
X
 
  • Ora
  • Show
Clear All
new posts
  • Apocalips
    Senior Member

    • May 2011
    • 2630

    #76
    Originariamente Scritto da Francario Massimiliano
    Controllare più strategie da un unico script non è possibile in forma immediata: ogni strategia ha un suo motore di scripting separato dagli altri, quindi il concetto è una strategia -> uno script.
    Max Francario
    Ciao Max,
    In verità mi riferivo alla possibilità o meno di poter definire per poi richiamare all\'interno di uno script le greche di un portafoglio di titoli quali delta 1%, gamma1%..etc...il cruscotto per intenderci.
    se ciò fosse possibile avremmo risolto il problema
    è possibile farlo ?

    grazie
    Last edited by Apocalips; 10-03-13, 23:57.
    ....non si desidera ciò che è facile ottenere (Ovidio)....

    Comment

    • chrisbasetta
      Senior Member
      • Aug 2008
      • 693

      #77
      Originariamente Scritto da Francario Massimiliano
      L\'esempio riportato è sintatticamente e logicamente corretto.
      Magari ci possono essere strade alternative per giungere allo stesso risultato in modo più generale, applicabile cioè a qualsiasi strategia su qualsiasi sottostante, vedi i metodi AddOption ed AddParametricOption....
      Per entrambe le funzioni citate, se l\'opzione richiesta è già presente nello Strategy Builder, il valore ritornato è semplicemente l\'oggetto opzione già esistente.

      Max Francario
      Grazie Max...
      Appena hai 1 minuto potresti fare un esempio pratico? Prendendo come spunto lo script che ho messo?
      Così aggiungiamo questa cosa all\'arsenale...
      Io per ora sto codificando in maniera spartana...hehe

      Comment

      • fnet
        Senior Member
        • Aug 2010
        • 738

        #78
        Originariamente Scritto da chrisbasetta
        Grazie Max...
        Appena hai 1 minuto potresti fare un esempio pratico? Prendendo come spunto lo script che ho messo?
        Così aggiungiamo questa cosa all\'arsenale...
        Io per ora sto codificando in maniera spartana...hehe
        forse per esempio invece di
        sottostante = CurrentStrategy.GetByName("SIEMENS")
        sottostante = CurrentStrategy.GetMainUnderlying()
        così senza specificare il nome si adatta a qualsiasi sottostante
        .....
        "Tempus omnia medetur" .... e fà guadagnare di Theta

        Comment

        • chrisbasetta
          Senior Member
          • Aug 2008
          • 693

          #79
          Originariamente Scritto da fnet
          forse per esempio invece di
          sottostante = CurrentStrategy.GetByName("SIEMENS")
          sottostante = CurrentStrategy.GetMainUnderlying()
          così senza specificare il nome si adatta a qualsiasi sottostante
          .....

          Non credo...Max parlava nello specifico di AddOption...
          Anche perchè in alcuni casi GetMainUnderlying credo non vada bene...
          Ad esempio sull\'Eurostoxx dove il MainUnderlying è l\'indice ma bisogna coprire con il future, che va quindi identificato comunque in modo diverso...
          Però potrei anche dire una cavolata

          Comment

          • fnet
            Senior Member
            • Aug 2010
            • 738

            #80
            una volta alla settimana

            come da discussione precedente, lo script non è prioritario e condivido la scelta , comunque se fattibile " possiamo fare una domanda, a testa, alla settimana a Max sull\'argomento " ?
            se Si la mia per questa settimana è la seguente :

            è corretto come sintassi lo script sotto ( obbiettivo : comprare un\'azione ) ?
            grazie in anticipo
            fabio

            { SCRIPT PERSONALITY: PASCAL }
            procedure Compra;
            var Azione TUnderlying ;
            begin
            Azione := CurrentStrategy.GetMainUnderlying;
            Azione.AddOrder(1, MARKET);
            end;
            "Tempus omnia medetur" .... e fà guadagnare di Theta

            Comment

            • Smash
              Senior Member

              • Feb 2012
              • 351

              #81
              Originariamente Scritto da fnet
              è corretto come sintassi lo script sotto ( obbiettivo : comprare un\'azione ) ?
              grazie in anticipo
              fabio

              { SCRIPT PERSONALITY: PASCAL }
              procedure Compra;
              var Azione TUnderlying ;
              begin
              Azione := CurrentStrategy.GetMainUnderlying;
              Azione.AddOrder(1, MARKET);
              end;

              Ciao,

              la sintassi corretta è:

              Codice:
              { SCRIPT PERSONALITY: PASCAL } 
              var Azione: TUnderlying
              begin                                           
              Azione := CurrentStrategy.GetMainUnderlying     
              Azione.AddOrder(1,MARKET)    
              end

              Aggiungo una considerazione che forse potrà sembrare stupida (e me ne scuso in anticipo se lo fosse):
              per sapere se la sintassi di un codice è corretta, il modo più rapido e più efficace è sicuramente quello di eseguirlo!
              Last edited by Smash; 12-03-13, 11:01.

              Comment

              • Smash
                Senior Member

                • Feb 2012
                • 351

                #82
                Originariamente Scritto da Francario Massimiliano
                Salve,
                ecco un esempio di come ottenere gli oggetti corrispondenti alle leg della strategia.


                Codice:
                dim under as TUnderlying
                dim c17000 as TOption
                
                
                under = CurrentStrategy.GetMainUnderlying()
                c17000 = CurrentStrategy.GetByName("C @ 17000 03-2013")
                if(under.Reference > c17000.Strike) Then
                    c17000.Buy(2, MARKET)
                End If

                L\'interpretazione dello script è la seguente:
                Assegno alla variabile under l\'oggetto che rappresenta il sottostante principale della strategia
                Assegno alla variabile c17000 l\'oggetto che rappresenta la leg il cui nome è "C @ 17000 03-2013"
                Se
                il prezzo di riferimento dell\'oggetto under è maggiore dello strike dell\'oggetto c17000
                Allora
                Compra 2 contratti di c17000 al prezzo MARKET




                L\'oggetto CurrentStrategy ha diversi metodi disponibili per ottenere gli oggetti che corrispondono alle gambe della strategia: GetByName (usando il nome visualizzato sulla finestra Strategy Builder), GetByIsin (usando il codice isin dello strumento), GetByID (usando il codice identificativo univoco degli strumenti), AddFuture, AddOption.


                Quando si dichiarano le variabili con la parola chiave Dim, se si conosce in anticipo il tipo di dati che quelle variabili andranno a contenere, è consigliabile specificarlo.


                Max Francario




                Originariamente Scritto da fnet
                per cortesia traduci l\'esempio sopra in Pascal
                grazie

                Meglio tardi che mai!

                Codice:
                var Under: TUnderlying ; c17000: TOption    
                
                
                Begin   
                Under := CurrentStrategy.GetMainUnderlying
                c17000 := CurrentStrategy.GetByName(\'C @ 17000 03-2013\')    
                
                
                if(under.Reference > c17000.Strike) Then
                begin
                    c17000.Buy(2, MARKET)   
                End
                
                
                End

                Nota: se l\'opzione non è già presente nello Strategy Builder, lo script non fa nulla!

                Comment

                • fnet
                  Senior Member
                  • Aug 2010
                  • 738

                  #83
                  Originariamente Scritto da Smash
                  .....
                  ............
                  Grazie per le risposte e i consigli
                  fabio
                  "Tempus omnia medetur" .... e fà guadagnare di Theta

                  Comment

                  • Cagalli Tiziano
                    Senior Member
                    • Dec 2007
                    • 11252

                    #84
                    Originariamente Scritto da Smash
                    Meglio tardi che mai!
                    Nota: se l\'opzione non è già presente nello Strategy Builder, lo script non fa nulla!
                    Sei bravo Fabio,
                    grazie!
                    ..se corri dietro a due lepri, non ne prendi nemmeno una.

                    Comment

                    • chrisbasetta
                      Senior Member
                      • Aug 2008
                      • 693

                      #85
                      Rollata a Delta

                      Nell\'attesa che Max, tempo permettendo, ci illumini sui metodi alternativi per codificare...
                      Proseguo con i miei codici spartani in Basic
                      Aggiungiamo qualcosa alla rollata semplice di qualche giorno fa...
                      In questo esempio la rollata viene eseguita non a un valore specifico del sottostante ma a un valore del Delta della prima opzione venduta... in tal caso 0.5.
                      Ovvero...se il delta della prima put venduta diventa minore di -0.5 (put...quindi Delta negativo) allora scatta la rollata.
                      Inoltre ho definito la variabile "Lotti", dove andrò ad inserire il numero di opzioni vendute, che non sarà sempre 1, quindi per comodità si imposta una variabile apposita, che al momento ad esempio ho settato a 5.
                      Ovvimente nel codice, al momento del comando di invio ordine, non si usa più il numero 1 ma la variabile stessa.
                      Ho quindi aggiunto 2 variabili:
                      Valore_Delta (As Double perchè è un numero con la virgola)
                      Lotti (As Integer perchè è un numero intero)


                      ATTENZIONE! Non è un esempio da usare a mercato reale, è solo per capire la logica dello script, perchè in realtà andrebbero inseriti altri controlli relativi alla strategia e altri parametri...

                      Ovviamente Max potrà correggermi se c\'è qualche errore nello script...anche perchè sto cercando di imparare anche io

                      \' Dichiarazione Variabili
                      dim sottostante as TUnderlying
                      dim put_Vendute1 as TOption
                      dim put_Vendute2 as TOption
                      dim put_Comprate1 as TOption
                      dim Valore_Delta as Double
                      dim Lotti as Integer


                      \' Definizione Variabili
                      sottostante = CurrentStrategy.GetByName("SIEMENS")
                      put_Vendute1 = CurrentStrategy.GetByName("P @ 80 03-2013")
                      put_Vendute2 = CurrentStrategy.GetByName("P @ 78 03-2013")
                      put_Comprate1 = CurrentStrategy.GetByName("P @ 72 03-2013")
                      Valore_Delta = 0.5
                      Lotti = 5


                      \' Rollata
                      if (put_Vendute1.Delta <= -Valore_Delta) then
                      put_Vendute1.AddOrder(Lotti, MARKET)
                      put_Vendute2.AddOrder(-Lotti, MARKET)
                      end if

                      Comment

                      • Apocalips
                        Senior Member

                        • May 2011
                        • 2630

                        #86
                        Originariamente Scritto da chrisbasetta
                        Ovvero...se il delta della prima put venduta diventa minore di -0.5 (put...quindi Delta negativo) allora scatta la rollata.
                        Grazie per questi esempi illuminanti !

                        una cosa sola, hai invertito il segno del delta della put.

                        put venduta = delta positivo


                        Apo
                        ....non si desidera ciò che è facile ottenere (Ovidio)....

                        Comment

                        • chrisbasetta
                          Senior Member
                          • Aug 2008
                          • 693

                          #87
                          Originariamente Scritto da Apocalips
                          Grazie per questi esempi illuminanti !

                          una cosa sola, hai invertito il segno del delta della put.

                          put venduta = delta positivo


                          Apo
                          Vero Apo, però se tu metti nello strategy builder una put venduta...la colonna del Delta da segno meno...e quello è il valore da controllare... il delta della singola gamba...
                          Quando è inferiore a -0.5 l\'opzione diventa ITM
                          Correggetemi se mi è sfuggito qualcosa ovviamente...
                          File Allegati

                          Comment

                          • Smash
                            Senior Member

                            • Feb 2012
                            • 351

                            #88
                            Originariamente Scritto da Cagalli Tiziano
                            Sei bravo Fabio,
                            grazie!
                            Grazie a te Tiziano!

                            (comunque io non sono Fabio!)

                            Comment

                            • Cagalli Tiziano
                              Senior Member
                              • Dec 2007
                              • 11252

                              #89
                              Originariamente Scritto da Smash
                              Grazie a te Tiziano!

                              (comunque io non sono Fabio!)
                              Volevo vedere se te lo ricordavi che sei Marco

                              ...scusa, lapsus!
                              ..se corri dietro a due lepri, non ne prendi nemmeno una.

                              Comment

                              • Smash
                                Senior Member

                                • Feb 2012
                                • 351

                                #90
                                Originariamente Scritto da Cagalli Tiziano
                                Volevo vedere se te lo ricordavi che sei Marco

                                ...scusa, lapsus!

                                Sì, questa volta hai indovinato!

                                Comment

                                Working...