Scripts di esempio

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

    • Feb 2012
    • 351

    #61
    Originariamente Scritto da Apocalips
    Hai ragione Tiziano è meglio procedere per gradi dando le giuste priorità.

    lasciami però dire una cosa:

    io sono convinto che tra i tanti che hanno la licenza di fiuto pro e che quindi possono accedere allo script ce ne sono diversi che già lo utilizzano conoscendone il linguaggio ma che non condividono alcunchè restando nell\'anonimato.

    Per l\'amore del cielo, intendiamoci, ognuno è libero di fare ciò che vuole, ci mancherebbe, non ci sono obblighi, però mi permetto di dire che se tutti partecipassimo e ci confrontassimo liberamente senza timori sarebbe estramamente piu semplice e veloce raggiungere determinati risultati e tutti quanti ne gioverebbero.

    ....eppure in questa community siamo oltre 6.000 ma solo l\'1% partecipa alle discussioni.


    Apo

    Ciao Apo,

    ti dico come la penso io:
    per arrivare a scrivere script che siano in grado di fare cose complesse (in precedenza avevi parlato di una rollata di un Iron Condor) sarebbe auspicabile avere prima appreso qualche nozione di programmazione a oggetti, che non è un argomento specifico solo del linguaggio presente in Fiuto Pro, bensì un argomento molto più generale.
    Cose del tipo: sapere che cos\'è una classe, che cosa sono proprietà metodi ed eventi, che differenza c\'è tra una funzione ed una procedura, ecc. ...

    Inoltre, sia il programmare sia l\'utilizzare degli script presuppongono sempre l\'obbligo e la disponilità da parte dell\'utente di mettersi a "dialogare" con la macchina, cercando di capire prima di tutto come interrogarla e come farsi ritornare da lei delle risposte.

    E\' così che si inizia, e poi piano piano si va avanti cercando di fare cose nuove e sempre più complesse. Ma ci vuole tempo e soprattutto tanta, tanta, tanta (ma proprio tanta) pazienza!

    Secondo me chi si trova a partire completamente da zero può intanto iniziare ad interagire con lo script in maniera elementare, giocando a fargli delle domande facendosi dare delle risposte.

    Faccio un esempio: quando si apre per la prima volta lo Script Editor di una nuova strategia compare il seguente codice pre-compilato:

    Codice:
    \' 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.
    \'
    dim mainUnderlying as TUnderlying
    
    
    mainUnderlying = CurrentStrategy.GetMainUnderlying()
    ShowMessage("Main underlying for this strategy is " + mainUnderlying.Name)

    Lo si manda in esecuzione (cliccando sull\'icona con la freccetta verde) e intanto si vede che cosa succede (e soprattutto ci si deve domandare il perchè succede).

    Poi si può ad esempio aggiungere allo script un\'altra riga del tipo:

    ShowMessage(mainUnderlying.

    e vedere intanto che nell\'editor dello script magicamente si apre una finestrina che da\' la possibilità di fare delle scelte.

    Se si completa la riga come segue
    ShowMessage(mainUnderlying.Delta)

    il nuovo codice completo diventerà:

    Codice:
    \' 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.
    \'
    dim mainUnderlying as TUnderlying
    
    
    mainUnderlying = CurrentStrategy.GetMainUnderlying()
    ShowMessage("Main underlying for this strategy is " + mainUnderlying.Name)
    ShowMessage(mainUnderlying.Delta)

    e si vede che cosa è cambiato rispetto a prima.
    Last edited by Smash; 10-03-13, 19:35.

    Comment

    • Apocalips
      Senior Member

      • May 2011
      • 2630

      #62
      Ciao smash, grazie del tuo preziosissimo contributo, incominceremo a fare questi piccoli tentavi per incominciare a capire come si interagisce con la macchina.
      grazie infinite
      ....non si desidera ciò che è facile ottenere (Ovidio)....

      Comment

      • CIVT
        Senior Member
        • Dec 2009
        • 813

        #63
        Smash santo subito!!! ahahah bella questa emotion

        Grazie mille anche da parte mia, provo subito ad interagire con la bestia e speriamo che altri programmatori vogliano dedicare un pò del loro prezioso tempo per condividere le loro e le nostre conoscienze!

        Comment

        • fnet
          Senior Member
          • Aug 2010
          • 738

          #64
          ShowMessage in Pascal

          { SCRIPT PERSONALITY: PASCAL }
          var Sottostante;
          begin
          Sottostante := CurrentStrategy.Name;
          ShowMessage (Sottostante);
          end;
          "Tempus omnia medetur" .... e fà guadagnare di Theta

          Comment

          • Smash
            Senior Member

            • Feb 2012
            • 351

            #65
            Originariamente Scritto da fnet
            { SCRIPT PERSONALITY: PASCAL }
            var Sottostante;
            begin
            Sottostante := CurrentStrategy.Name;
            ShowMessage (Sottostante);
            end;
            Giusta precisazione!

            L\'esempio che avevo mostrato prima era per lo script in linguaggio Basic, ma c\'è anche quello in Pascal.

            Comment

            • Smash
              Senior Member

              • Feb 2012
              • 351

              #66
              Originariamente Scritto da CIVT
              Smash santo subito!!! ahahah bella questa emotion

              Grazie mille anche da parte mia, provo subito ad interagire con la bestia e speriamo che altri programmatori vogliano dedicare un pò del loro prezioso tempo per condividere le loro e le nostre conoscienze!
              Troppo buono!

              A disposizione per eventuali domande!

              Comment

              • chrisbasetta
                Senior Member
                • Aug 2008
                • 693

                #67
                Script Rollata

                Ok...vediamo di mettere qualche esempio... e sottolineo che solo di esempio si tratta...per cominciare da qualcosa di facile...
                Ecco uno script che rolla una put venduta quando il Last del sottostante (SIEMENS) è uguale o inferiore al valore 80.00.
                Il rolling viene fatto dall\'opzione strike 80 (put_Vendute1) all\'opzione strike 78 (put_Vendute2)
                L\'opzione strike 74 (put_Comprate1) è la copertura
                Tutte le opzioni devono già essere presenti nello Strategy Builder...
                Il tipo di ordine a mercato in questo esempio è MARKET, che però con le opzioni non andrebbe usato....
                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

                \' 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")

                \' Rollata
                if (sottostante.Last <= 80.00) then
                put_Vendute1.AddOrder(1, MARKET)
                put_Vendute2.AddOrder(-1, MARKET)
                end if
                Last edited by chrisbasetta; 10-03-13, 21:35.

                Comment

                • Apocalips
                  Senior Member

                  • May 2011
                  • 2630

                  #68
                  Originariamente Scritto da chrisbasetta
                  Ok...vediamo di mettere qualche esempio... e sottolineo che solo di esempio si tratta...per cominciare da qualcosa di facile...
                  Ecco uno script che rolla una put venduta quando il Last del sottostante (SIEMENS) è uguale o inferiore al valore 80.00.
                  Il rolling viene fatto dall\'opzione strike 80 (put_Vendute1) all\'opzione strike 78 (put_Vendute2)
                  L\'opzione strike 74 (put_Comprate1) è la copertura
                  Tutte le opzioni devono già essere presenti nello Strategy Builder...
                  Il tipo di ordine a mercato in questo esempio è MARKET, che però con le opzioni non andrebbe usato....
                  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

                  \' 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")

                  \' Rollata
                  if (sottostante.Last <= 80.00) then
                  put_Vendute1.AddOrder(1, MARKET)
                  put_Vendute2.AddOrder(-1, MARKET)
                  end if
                  ottimo Chris,
                  adesso incomincia ad essere chiaro il concetto di definizione e dichiarazione di variabili
                  questi esempi pratici, come dicevo, valgono piu di mille letture di libri.

                  ...se al bambino non gli fai vedere come si tiene in mano una forchetta, lui continuerà a mangiare con le mani.....

                  una domanda Chris:
                  che tu sappia, all\'interno di uno script posso richiamare variabili di un altra strategia che non sia quella corrente? ad esempio se volessi controllare con un sottostante esterno il delta 1% di un portafoglio composto da diverse strategie è possibile farlo con uno script?

                  presumo che per fare questo devono essere rese disponibili le variabili di portafoglio, dico bene?

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

                  Comment

                  • Antonino C
                    Senior Member
                    • Jul 2010
                    • 430

                    #69
                    Originariamente Scritto da chrisbasetta
                    Ok...vediamo di mettere qualche esempio..
                    C\'est magnifique !!
                    Aspetta sempre che scelta se farla in paper trading od altro, ma ha fatto la rollata senza passare dalla chain.
                    Quello che hai usato é visual basic ? Io lo mandato in esecuzione come nelle macro con il triangolo del play, ma bisogna salvarla in un progetto ? É come devo essere inseriti nelle strategie ?

                    Comment

                    • fnet
                      Senior Member
                      • Aug 2010
                      • 738

                      #70
                      Originariamente Scritto da Apocalips
                      ottimo Chris,
                      adesso incomincia ad essere chiaro il concetto di definizione e dichiarazione di variabili
                      questi esempi pratici, come dicevo, valgono piu di mille letture di libri.

                      ...se al bambino non gli fai vedere come si tiene in mano una forchetta, lui continuerà a mangiare con le mani.....

                      una domanda Chris:
                      che tu sappia, all\'interno di uno script posso richiamare variabili di un altra strategia che non sia quella corrente? ad esempio se volessi controllare con un sottostante esterno il delta 1% di un portafoglio composto da diverse strategie è possibile farlo con uno script?

                      presumo che per fare questo devono essere rese disponibili le variabili di portafoglio, dico bene?

                      grazie
                      forse non ho capito bene la Tua domanda, ma già adesso puoi inserire nello strategy builder dei sottostanti/future diversi da quello della strategia
                      "Tempus omnia medetur" .... e fà guadagnare di Theta

                      Comment

                      • chrisbasetta
                        Senior Member
                        • Aug 2008
                        • 693

                        #71
                        Originariamente Scritto da Apocalips
                        una domanda Chris:
                        che tu sappia, all\'interno di uno script posso richiamare variabili di un altra strategia che non sia quella corrente? ad esempio se volessi controllare con un sottostante esterno il delta 1% di un portafoglio composto da diverse strategie è possibile farlo con uno script?

                        presumo che per fare questo devono essere rese disponibili le variabili di portafoglio, dico bene?

                        grazie
                        E\' una domanda alla quale non ti so rispondere sinceramente...che io sappia per ora lo script è legato ad una singola strategia... quindi non so se può lavorare sull\'intero portafoglio..
                        Se invece nella singola strategia vuoi inserire un sottostante diverso credo si possa fare...basta inserirlo nello strategy builder e poi definirlo magari come sottostante2.

                        Comment

                        • chrisbasetta
                          Senior Member
                          • Aug 2008
                          • 693

                          #72
                          Originariamente Scritto da Antonino C
                          C\'est magnifique !!
                          Aspetta sempre che scelta se farla in paper trading od altro, ma ha fatto la rollata senza passare dalla chain.
                          Quello che hai usato é visual basic ? Io lo mandato in esecuzione come nelle macro con il triangolo del play, ma bisogna salvarla in un progetto ? É come devo essere inseriti nelle strategie ?
                          Se la fa in paper trading o meno dipende dalle impostazioni della strategia, che puoi fare dallo strategy builder oppure anche direttamente nello script inserendo gli appositi parametri...
                          Questo è il Basic (adattato a Fiuto ovviamente) si... io sto utilizzando solo il Basic perchè lo trovo personalmente più semplice...

                          Per inserirla devi clikkare su Script...copiarci dentro il codice e salvare la Unit col tasto salva.
                          Poi devi andare su proprietà script e selezionare Esegui ad ogni tick.
                          Poi salvi la strategia.

                          Comment

                          • Apocalips
                            Senior Member

                            • May 2011
                            • 2630

                            #73
                            Originariamente Scritto da chrisbasetta
                            E\' una domanda alla quale non ti so rispondere sinceramente...che io sappia per ora lo script è legato ad una singola strategia... quindi non so se può lavorare sull\'intero portafoglio..
                            ok grazie, sarebbe veramente un peccato non poterlo fare perchè rappresenta l\'obiettivo finale ovvero quello di poter controllare le greche di portafoglio in maniera del tutto automatica.

                            vediamo se Max conferma o smentisce.

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

                            Comment

                            • Francario Massimiliano
                              Administrator
                              • Jul 2008
                              • 1033

                              #74
                              Noto con piacere che il thread sembra prendere vita....

                              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.
                              Però, tramite le funzionalità messe a disposizione dal linguaggio, si può fare praticamente di tutto, compreso controllare più strategie contemporaneamente, ad esempio leggendo e scrivendo files sul disco tanto per cominciare.
                              Concettualmente potrebbe funzionare così:
                              1. Ogni strategia scrive in un file di testo (tramite la classe TStringList ad esempio usando il sistema Name=Value) il valore di controllo calcolato sulla strategia stessa;
                              2. In una delle strategia, lo script comprende anche la parte decisionale, e scrive sempre su un file, quali operazioni devono essere svolte da ciascuna delle altre strategie collegate;
                              3. In ogni strategia viene letto il file dei "comandi" generato al passo 2 per poter eseguire le operazioni necessarie.
                              Magari è un sistema un pò complicato, ma certamente applicabile.

                              Max Francario
                              Last edited by Francario Massimiliano; 10-03-13, 23:47.
                              Manuale di beeTrader
                              Manuale di Fiuto Beta

                              Comment

                              • Francario Massimiliano
                                Administrator
                                • Jul 2008
                                • 1033

                                #75
                                Originariamente Scritto da chrisbasetta
                                Ok...vediamo di mettere qualche esempio... e sottolineo che solo di esempio si tratta...per cominciare da qualcosa di facile...
                                Ecco uno script che rolla una put venduta quando il Last del sottostante (SIEMENS) è uguale o inferiore al valore 80.00.
                                Il rolling viene fatto dall\'opzione strike 80 (put_Vendute1) all\'opzione strike 78 (put_Vendute2)
                                L\'opzione strike 74 (put_Comprate1) è la copertura
                                Tutte le opzioni devono già essere presenti nello Strategy Builder...
                                Il tipo di ordine a mercato in questo esempio è MARKET, che però con le opzioni non andrebbe usato....
                                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

                                \' 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")

                                \' Rollata
                                if (sottostante.Last <= 80.00) then
                                put_Vendute1.AddOrder(1, MARKET)
                                put_Vendute2.AddOrder(-1, MARKET)
                                end if
                                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
                                Manuale di beeTrader
                                Manuale di Fiuto Beta

                                Comment

                                Working...