Scripts di esempio

Collapse
This is a sticky topic.
X
X
 
  • Ora
  • Show
Clear All
new posts
  • Francario Massimiliano
    Administrator
    • Jul 2008
    • 1033

    #1

    Scripts di esempio

    Questa discussione è dedicata alla pubblicazione di semplici scripts di esempio realizzati dagli utenti.
    Manuale di beeTrader
    Manuale di Fiuto Beta
  • Francario Massimiliano
    Administrator
    • Jul 2008
    • 1033

    #2
    Flat All

    Ecco un primo esempio di script (in basic):

    Codice:
    If (CurrentStrategy.NetProfit > 500) or (CurrentStrategy.NetProfit < -500) Then
        CurrentStrategy.FlatAll                                              
    End if
    L\'interpretazione dello script è:
    Se
    il profitto della strategia è maggiore di 500 €
    oppure
    la perdita della strategia è maggiore di 500 €
    allora
    Chiudi tutte le posizioni aperte della strategia

    In questo piccolo script è da notare l\'utilizzo del segno negativo nella condizione relativa alla perdita netta della strategia: l\'utilizzo del segno negativo rende necessario anche il cambio di operatore di confronto, da maggiore a minore.

    CurrentStrategy rappresenta la strategia di FiutoPRO, ed è l\'oggetto principale nel sistema di scripting. Praticamente qualsiasi oggetto, proprietà, e metodo sono accessibili a partire da CurrentStrategy.
    Per accedere alle proprietà ed ai metodi di un oggetto, è necessario utilizzare il carattere punto (.).

    Consiglio sempre di leggere il manuale relativo al sistema di scripting di FiutoPRO a questo indirizzo:


    Max Francario
    Manuale di beeTrader
    Manuale di Fiuto Beta

    Comment

    • chrisbasetta
      Senior Member
      • Aug 2008
      • 693

      #3
      Ciao Max e grazie per aver aperto questa sezione...

      L\'oggetto CurrentStrategy è il principale...ok fin qui tutto semplice :-)

      Questo ero riuscito a farlo, ovvero far interagire ad esempio il prezzo del sottostante con la Strategia...anche se magaari in modo un pò spartano...

      dim bepl1
      dim close

      bepl1 = CurrentStrategy.UpsideBreakEven
      close = CurrentStrategy.GetMainUnderlyingPrice

      if close < bepl1 then
      showmessage ("Bravo")
      else
      showmessage ("Vaffa!")
      end if


      Quello che invece tutt\'ora non riesco a fare è interagire ad esempio con una singola opzione all\'interno di una strategia...

      Immagino che dovrò prima definire la gamba, con qualcosa di simile a:

      Opzione = CurrentStrategy.OPZIONECHEVOGLIO
      Opzione_BEP = CurrentStrategy.OPZIONECHEVOGLIO.UpsideBreakeven


      Ci sto girando intorno ma non riesco a trovare il modo giusto...

      Comment

      • Francario Massimiliano
        Administrator
        • Jul 2008
        • 1033

        #4
        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
        Manuale di beeTrader
        Manuale di Fiuto Beta

        Comment

        • chrisbasetta
          Senior Member
          • Aug 2008
          • 693

          #5
          Grazie Max!

          Ok...ottimo punto di partenza :-)

          Comment

          • chrisbasetta
            Senior Member
            • Aug 2008
            • 693

            #6
            Sono l\'unico interessato allo Script??

            Max...altra domandina...
            Qual è il modo corretto per utilizzare la funzione:
            FILTER_TIME_SESSION ?

            Quello che vorrei fare è dire a Fiuto di eseguire ad esempio il FlatAll solamente se si trova all\'interno degli orari della sessione che ho definito...

            Ho dichiarato le sessioni così, e anche qui non so se è giusto:

            DIM StartSession1 as TDateTime
            DIM EndSession1 as TDatetime

            StartSession1 = 0905
            EndSession1 = 1725


            Ripeto...non so se è corretto...
            Poi però ho provato in vari modi ad inserie una condizione che richiamasse il FILTER_TIME_SESSION ma senza avere successo...

            Grazie in anticipo

            Comment

            • Francario Massimiliano
              Administrator
              • Jul 2008
              • 1033

              #7
              Salve,
              Originariamente Scritto da chrisbasetta
              Sono l\'unico interessato allo Script??

              Max...altra domandina...
              Qual è il modo corretto per utilizzare la funzione:
              FILTER_TIME_SESSION ?

              Quello che vorrei fare è dire a Fiuto di eseguire ad esempio il FlatAll solamente se si trova all\'interno degli orari della sessione che ho definito...

              Ho dichiarato le sessioni così, e anche qui non so se è giusto:

              DIM StartSession1 as TDateTime
              DIM EndSession1 as TDatetime

              StartSession1 = 0905
              EndSession1 = 1725


              Ripeto...non so se è corretto...
              Poi però ho provato in vari modi ad inserie una condizione che richiamasse il FILTER_TIME_SESSION ma senza avere successo...

              Grazie in anticipo
              uno dei modi per impostare gli orari è il seguente:

              Codice:
              CurrentStrategy.StrategySettings.StartSession1 = (9 * ONE_HOUR) + (5 * ONE_MINUTE)
              CurrentStrategy.StrategySettings.EndSession1 = (17 * ONE_HOUR) + (25 * ONE_MINUTE)
              FILTER_TIME_SESSION invece è una costante obsoleta, che non viene più utilizzata dal software. Sto provvedendo a modificare anche il manuale on-line con questa modifica.

              Al posto di FILTER_TIME_SESSION, è possibile utilizzare la seguente proprietà:
              Codice:
              CurrentStrategy.StrategySettings.VerifyTimeSession = true
              
              oppure
              
              CurrentStrategy.StrategySettings.VerifyTimeSession = false
              In entrambi gli esempi che ho riportato si interviene direttamente sulle proprietà della strategia, le stesse visibili nella finestra di impostazione che si apre da Strategy Builder -> Setup -> Impostazioni strategia -> scheda "Sessioni".

              Se invece si vuole eseguire un\'operazione controllata dall\'orario indipendentemente dalle impostazioni della strategia, allora è possibile utilizzare una cosa simile a quanto segue:

              Codice:
              dim inizio as TDateTime
              dim fine as TDateTime 
              dim ore as Word, minuti as Word, secondi as Word, usec as Word              
              dim adesso as TDateTime      
              
              
              inizio = 9 * ONE_HOUR + 15 * ONE_MINUTE
              fine = 17 * ONE_HOUR + 25 * ONE_MINUTE
              DecodeTime(Now(), ore, minuti, secondi, usec)
              adesso = ore * ONE_HOUR + minuti * ONE_MINUTE
              
              
              IF ((adesso > inizio) and (adesso < fine)) THEN 
                  MostraMessaggio("Test")
              END IF

              Max Francario
              Manuale di beeTrader
              Manuale di Fiuto Beta

              Comment

              • chrisbasetta
                Senior Member
                • Aug 2008
                • 693

                #8
                Grazi ancora Max, sei stato super speedy!!

                Comment

                • chrisbasetta
                  Senior Member
                  • Aug 2008
                  • 693

                  #9
                  Rieccomi Max!

                  Ho altre due domandine...passo dopo passo sto costruendo....

                  1) Ho messo in paper una strategia con lo Script, pare che funzioni ma quando scatta l\'ordine, me lo mette in Basket senza eseguirlo automaticamente.
                  Nei settaggi strategia ho selezionato il Flag per l\'esecuzione automatica, inoltre nel codice script ho inserito questo comando, ma probabilmente c\'è qualcosa di sbagliato:

                  dim AutoExecAutoOrders as Boolean

                  CurrentStrategy.StrategySettings.AutoExecAutoOrder s = True


                  Continua a mettermeli solo in Basket...

                  2) Che comando uso per farmi mandare una email ogni volta che viene eseguito un ordine? Tipo con i Workflow? Ho visto che c\'è un comando ma se non erro serve solo per gli ordini a mercato reale, non quelli in paper...

                  Thanks

                  Comment

                  • Francario Massimiliano
                    Administrator
                    • Jul 2008
                    • 1033

                    #10
                    Salve,
                    Originariamente Scritto da chrisbasetta
                    Rieccomi Max!

                    Ho altre due domandine...passo dopo passo sto costruendo....

                    1) Ho messo in paper una strategia con lo Script, pare che funzioni ma quando scatta l\'ordine, me lo mette in Basket senza eseguirlo automaticamente.
                    Nei settaggi strategia ho selezionato il Flag per l\'esecuzione automatica, inoltre nel codice script ho inserito questo comando, ma probabilmente c\'è qualcosa di sbagliato:

                    dim AutoExecAutoOrders as Boolean

                    CurrentStrategy.StrategySettings.AutoExecAutoOrder s = True


                    Continua a mettermeli solo in Basket...
                    E\' necessaria soltanto questa riga:
                    Codice:
                    CurrentStrategy.StrategySettings.AutoExecAutoOrders = True
                    Sto invece verificando quale possa essere il problema che mantiene gli ordini fermi nel basket invece che eseguirli direttamente.

                    Originariamente Scritto da chrisbasetta
                    2) Che comando uso per farmi mandare una email ogni volta che viene eseguito un ordine? Tipo con i Workflow? Ho visto che c\'è un comando ma se non erro serve solo per gli ordini a mercato reale, non quelli in paper...

                    Thanks
                    Al momento non è prevista una notifica per gli ordini inviati in paper trading.
                    Stiamo valutando quale soluzione possiamo rendere disponibile sullo script.

                    Max Francario
                    Manuale di beeTrader
                    Manuale di Fiuto Beta

                    Comment

                    • chrisbasetta
                      Senior Member
                      • Aug 2008
                      • 693

                      #11
                      Originariamente Scritto da Francario Massimiliano
                      Salve,


                      E\' necessaria soltanto questa riga:
                      Codice:
                      CurrentStrategy.StrategySettings.AutoExecAutoOrders = True
                      Sto invece verificando quale possa essere il problema che mantiene gli ordini fermi nel basket invece che eseguirli direttamente.



                      Al momento non è prevista una notifica per gli ordini inviati in paper trading.
                      Stiamo valutando quale soluzione possiamo rendere disponibile sullo script.

                      Max Francario
                      Grazie Max, ho notato poco fa che anche un\'altra strategia, che però utilizza i Workflow e non lo Script, non esegue più in automatico gli ordini ma li manda solo in Basket, pur essendo selezionato il Flag "Esegui immediatamente gli ordini automatici"...
                      E\' come se questa cosa non dipendesse dallo Script...

                      Comment

                      • chrisbasetta
                        Senior Member
                        • Aug 2008
                        • 693

                        #12
                        Contrordine, scusa Max, non tenere conto del mio messaggio precedente...col Workflow funziona perfettamente...

                        Comment

                        • TraderLoki
                          Senior Member

                          • Feb 2012
                          • 388

                          #13
                          Buonasera Max,
                          non ho trovato una sezione apposita per domande relative al FPSS, per cui utilizzo questa. Metto una serie di domande a raffica. Scusa l\'esposizione a punti, un po\' freddina, ma è per evitare di essere troppo prolisso

                          1. Si possono dichiarare e inizializzare contemporaneamente le variabili? (Dim x As Integer = 7)
                          2. Se ad una variabile è dato un tipo specifico, eredita i metodi di quel tipo? (ad es. Dim pippo As String, posso poi fare pippo.Length?)
                          3. Il costrutto If... Then prevede anche ElseIf?
                          4. Nelle stringhe c\'è la necessità di.. escaping (non so come dirlo) qualche carattere speciale o come nel VB vanno bene tutti?
                          5. Esiste anche il ciclo For Each per ciclare tra gli oggetti? In tali casi sono consentite dichiarazioni \'implicite\' o tutte le variabili devono essere dichiarate all\'inizio? (Ad es. ammettendo che Strategia sia una classe, For Each _strategy As Strategia ... Next è valido senza dichiarare prima _strategy?)
                          6. Le Unit nell\'IDE corrispondono a qualcosa tipo Moduli? o sono delle tab per tenere più ordinata la scrittura dello Script?

                          Purtroppo me ne verranno altre di domande, mi scuso a priori per l\'inondazione di punti di domanda ma non sono un programmatore ahimè. Il manuale è un\'ottima fonte e questo sistema di script sembra veramente completo e potentissimo. Complimenti a tutti!!

                          Loki
                          -----------------------------------------------------------------
                          Preferisco le urla della battaglia al silenzio che ne segue.
                          -----------------------------------------------------------------

                          Comment

                          • Apocalips
                            Senior Member

                            • May 2011
                            • 2630

                            #14
                            Lo script è uno strumento formidabile e potentissimo che consente di programmare qualsiasi cosa. La ferrari che avevamo ordinato è finalmente arrivata bella fiammante ed è parcheggiata sotto casa nostra. Il problema adesso è trovare il pulsante di accensione che a quanto pare nella community pochi sono riusciti a trovare. Per molti di noi che non provengono da studi informatici o di programmazione, ammettiamolo,, c\'è qualche difficoltà nell\'approccio al nuovo strumento e allora vorrei chiedere a Tiziano sa ha in programma qualche corso/video per stimolarci ad apprendere i primi rudimenti magari
                            illustrandoci nella pratica come si programma ad esempio una strategia di base come una semplice rollata o altro.

                            grazie infinite a tutto lo staff di Tiziano e complimenti a Chrisbasetta e Traderloky che sembrano essere partiti in pole position

                            Apo
                            Last edited by Apocalips; 30-01-13, 20:57.
                            ....non si desidera ciò che è facile ottenere (Ovidio)....

                            Comment

                            • TraderLoki
                              Senior Member

                              • Feb 2012
                              • 388

                              #15
                              Originariamente Scritto da Apocalips
                              grazie infinite a tutto lo staff di Tiziano e complimenti a Chrisbasetta e Traderloky che sembrano essere partiti in pole position

                              Apo
                              Ricevere i complimenti di un mito come Apo è sempre un piacere, ma sono costretto a dire che più che essere partito in pole position mi sento ancora sulla linea di partenza.. diciamo che ho incominciato a togliere il freno a mano

                              Loki
                              -----------------------------------------------------------------
                              Preferisco le urla della battaglia al silenzio che ne segue.
                              -----------------------------------------------------------------

                              Comment

                              Working...