Come Funziona

Una libreria .xll per Excel consente all'utente di collegarsi al servizio API della piattaforma Darwin per ricevere i dati realtime ed effettura operazioni di trading. Questa wiki spiega come installare questa libreria e collegarsi al servizio API da Excel ed elenca i comandi attualmente disponibili.

Avvio del servizio API

Se l'utente è abilitato al servizio API, questo verrà avviato automaticamente con la piattaforma Darwin; in caso contrario il servizio non sarà disponibile.

Installazione libreria per Excel

Per poter accedere al servizio API da Excel è necessario installare un'apposita libreria .xll realizzata e distribuita da Directa.
I passi da seguire per installare la libreria sono i seguenti:

  1. Scaricare l'installer per la nostra applicazione DirectaXL (scaricabile a questo indirizzo: SetupXL.exe)
  2. Una volta installato e lanciato il launcher vi verrà richiesto di inserire utente e password e cliccare su ExcelPlugin
  3. Cliccandolo verrano installati nella cartella AddIns di Microsoft Excel i componenti aggiuntivi e verrà aperto un semplice file Excel creato da noi.
  4. Dopo l'apertura del file sarà necessario attivare il componente aggiuntivo
  5. Andare su "File" > "Opzioni"
  6. Andare su "Componenti Aggiuntivi" e selezionare "Vai"
  7. Selezionare "Sfoglia", si aprirà una finesta sfogliatore al percorso "C:\Users\\AppData\Roaming\Microsoft\AddIns"
  8. Selezionare la versione della libreria, 32 o 64 bit, in base alla propria installazione di Excel e premere ok, i componenti aggiuntivi dovrebbero avere nome Directa Add-In Add-In per la versione di Excel a 64 bit mentre Directa Add-In-Addin-Packet per la versione di Excel a 32 bit, il nome potrebbe variare da sistema a sistema, in caso una libreria dopo essere selezionata non mostri le formule che proponiamo è necessario selezionare l'altra, è comunque possibile selezionarle tutte e due e avere un immediato funzionamento.
    Le librerie in questione comunque avranno sempre all'interno del nome Directa come dettaglio.
  9. Da questo momento tutte le formule per la connessione sono a disposizione sul proprio foglio Excel
  10. Ora per interagire con i dati sarà necesario aprire una Darwin oppure una Darwin senza interfaccia direttamente dal foglio Excel, il tutto è spiegato nella prossima sezione.
NBNel caso di utilizzo della Darwin normale, La prima volta è necessario avviare la Darwin dopo l'impostazione spiegata sopra, nelle volte successive la Darwin può essere avviata anche prima dell'apertura del file.

NB Questa operazione d'installazione sarà necessaria solamente la prima volta per permettere al sistema di impostare i componenti aggiuntivi nella posizione corretta, nelle volte successive si potrà aprire il proprio file direttamente. Questa operazione può essere di nuovo necessaria nel caso in cui i componenti aggiuntivi vengano aggiornati, per questo terremo su questa guida lo stato dell'avanzamento del progetto.

NB Al momento è possibile operare con una sola Darwin attiva alla volta.

Avvio e chiusura di Darwin da Excel

Per utilizzare il servizio API, e di conseguenza il plugin Excel, è necessario avviare la Darwin. Qualora l'utente non volesse avviare la Darwin nella sua versione ordinaria, la libreria Excel rende disponibile un comando per avviare una versione standalone della Darwin, ovvero senza interfaccia grafica.

NB In caso di utilizzo della Darwin normale questi comandi possono essere non considerati.

Se si è scelto di operare attraverso la DarwinCommandLine sono a disposizione dei comandi utili per comandare la connessione alla Darwin direttamente dal proprio foglio Excel:
Comando: =Darwin() si apre una shell e verranno richiesti username e password
Comando: =Darwin(A1;B1) se nelle celle A1 e B1 sono già presenti username e password
Comando: =Darwin("CONTO";"PASSWORD") per passare come stringhe username e password

Una volta che il caricamento è completato è possibile avviare la connessione ai canali di trading (per operare) e di datafeed (per avere le quotazioni realtime)

La DarwinCommandLine in questione verrà chiusa automaticamente alla chiusura del file Excel, nel caso di utilizzo della Darwin con interfaccia questa non verrà chiusa direttamente.
Formato risposta per partenza Darwin:
STATUS CodiceConto TRUE/FALSE

Esempio risposta per comando =SE(E(B5<>"";B6<>"");Darwin(B5;B6)) se la cella B5 e B6 non sono vuote esegui la connesione per quel conto e la password associata:
STATUS 47511 TRUE

Connessione al DataFeed

Per creare la connessione ai prezzi è necessario dopo aver avviato la Darwin digitare questa formula all'interno di una cella Excel
=DirectaDataFeedConnection()

La risposta della formula indicherà lo stato della connessione e notificherà eventuali errori durante la connessione.
Dopo aver ricevuto risposta dalla formula è possibile procedere con la sottoscrizione dei ticker, che verrano spiegati nel paragrafo seguente.
Formato risposta per connessione DataFeed:

DataFeed STATUS TRUE/FALSE

Esempio risposta per comando =DirectaDataFeedConnection()
DataFeed STATUS TRUE

NBEssendo al momento disponibile l'utilizzo di una sola Darwin per questo componente, una volta stabilita la connessione non c'è bisogno su altri fogli o file di eseguire la formula di connessione al datafeed

Comandi Sottoscrizione/Desottoscrizione

FUNZIONE AZIONE
=ANAG("Ticker") Informazioni sul ticker
=PX_PACK("Ticker") Tracciato pacchetto Price relativo al ticker
=PX_PACK_SCROLL("Ticker") Tracciato pacchetto Price relativo al ticker in modalità scroll
=PX_LAST("Ticker") Ultimo prezzo battuto del ticker in questione
=CHG_PCT_1D("Ticker") Varazione percentuale del ticker sottoscritto
=PX_VOLUME("Ticker") Volume del ticker in questione
=PX_VOLUME_PROGRESSIVE("Ticker") Volume progressivo del ticker in questione
=PX_CONTRACTS_PROGRESSIVE("Ticker") Progressivo contratti del ticker in questione
=PX_LOW("Ticker") Minimo di giornata del ticker in questione
=PX_HIGH("Ticker") Massimo di giornata del ticker in questione
=BIDASK_PACK("Ticker") Tracciato pacchetto bidask relativo al ticker
=BIDASK_PACK_SCROLL("Ticker") Tracciato pacchetto bidask relativo al ticker in modalità scroll
=PX_BIDASK_PACK("Ticker") Tracciato del price e del bidask del relativo titolo
=PX_BIDASK_PACK_SCROLL("Ticker") Tracciato del price e del bidask del relativo titolo in modalità scroll
=BIDASK("Ticker") Prezzo in acquisto e in vendita rispetto al ticker richiesto
=MULTIBOOK_BIDASK("Ticker") Multibook stile Darwin contente solamente il primo livello del book.
=FLASHBOOK_BIDASK("Ticker") Flashbook verticale stile Darwin contente solamente il primo livello del book.
=FLASHBOOK_BIDASK_PX("Ticker") Flashbook verticale stile Darwin contente solamente il primo livello del book, solamente con il dettaglio dei prezzi
=PX_BID("Ticker") Prezzo in acquisto del ticker richiesto
=BID_SIZE_VOLUME("Ticker") Numero Azioni in acquisto del ticker richiesto
=BID_SIZE_PROPOSALS("Ticker") Numero Proposte in acquisto del ticker richiesto
=PX_ASK("Ticker") Prezzo in vendita del ticker richiesto
=ASK_SIZE_VOLUME("Ticker") Numero Azioni in vendita del ticker richiesto
=ASK_SIZE_PROPOSALS("Ticker") Numero Proposte in vendita del ticker richiesto
=BOOK5_PACK("Ticker") Tracciato completo book5
=BOOK5_PACK_SCROLL("Ticker") Tracciato completo book5 in modalità scroll
=BOOKL1("Ticker") Campi acquisto e vendita per livello 1
=BOOKL2("Ticker") Campi acquisto e vendita per livello 2
=BOOKL3("Ticker") Campi acquisto e vendita per livello 3
=BOOKL4("Ticker") Campi acquisto e vendita per livello 4
=BOOKL5("Ticker") Campi acquisto e vendita per livello 5
=MULTIBOOK_L5("Ticker") Book5 livelli, ogni riga riporta un livello di book, stile Multibook presente nella Darwin.
=FLASHBOOK_L5("Ticker") Book5 livelli in verticale, stile Flashbook presente nella Darwin.
=FLASHBOOK_L5_PX("Ticker") Book5 livelli in verticale, stile Flashbook presente nella Darwin, contetterà solamente il dettaglio dei prezzi.
=PX_BID_L1("Ticker") Prezzo in acquisto per il livello 1 del book
=PX_BID_L2("Ticker") Prezzo in acquisto per il livello 2 del book
=PX_BID_L3("Ticker") Prezzo in acquisto per il livello 3 del book
=PX_BID_L4("Ticker") Prezzo in acquisto per il livello 4 del book
=PX_BID_L5("Ticker") Prezzo in acquisto per il livello 5 del book
=PX_ASK_L1("Ticker") Prezzo in vendita per il livello 1 del book
=PX_ASK_L2("Ticker") Prezzo in vendita per il livello 2 del book
=PX_ASK_L3("Ticker") Prezzo in vendita per il livello 3 del book
=PX_ASK_L4("Ticker") Prezzo in vendita per il livello 4 del book
=PX_ASK_L5("Ticker") Prezzo in vendita per il livello 5 del book
=BID_SIZE_VOLUME_L1("Ticker") Volumi in acquisto per il livello 1 del book
=BID_SIZE_VOLUME_L2("Ticker") Volumi in acquisto per il livello 2 del book
=BID_SIZE_VOLUME_L3("Ticker") Volumi in acquisto per il livello 3 del book
=BID_SIZE_VOLUME_L4("Ticker") Volumi in acquisto per il livello 4 del book
=BID_SIZE_VOLUME_L5("Ticker") Volumi in acquisto per il livello 5 del book
=ASK_SIZE_VOLUME_L1("Ticker") Volumi in vendita per il livello 1 del book
=ASK_SIZE_VOLUME_L2("Ticker") Volumi in vendita per il livello 2 del book
=ASK_SIZE_VOLUME_L3("Ticker") Volumi in vendita per il livello 3 del book
=ASK_SIZE_VOLUME_L4("Ticker") Volumi in vendita per il livello 4 del book
=ASK_SIZE_VOLUME_L5("Ticker") Volumi in vendita per il livello 5 del book
=BID_SIZE_PROPOSALS_L1("Ticker") Numero proposte in acquisto per il livello 1 del book
=BID_SIZE_PROPOSALS_L2("Ticker") Numero proposte in acquisto per il livello 2 del book
=BID_SIZE_PROPOSALS_L3("Ticker") Numero proposte in acquisto per il livello 3 del book
=BID_SIZE_PROPOSALS_L4("Ticker") Numero proposte in acquisto per il livello 4 del book
=BID_SIZE_PROPOSALS_L5("Ticker") Numero proposte in acquisto per il livello 5 del book
=ASK_SIZE_PROPOSALS_L1("Ticker") Numero proposte in vendita per il livello 1 del book
=ASK_SIZE_PROPOSALS_L2("Ticker") Numero proposte in vendita per il livello 2 del book
=ASK_SIZE_PROPOSALS_L3("Ticker") Numero proposte in vendita per il livello 3 del book
=ASK_SIZE_PROPOSALS_L4("Ticker") Numero proposte in vendita per il livello 4 del book
=ASK_SIZE_PROPOSALS_L5("Ticker") Numero proposte in vendita per il livello 5 del book
=UNSUBSCRIBE("Ticker") Desottoscrive il relativo ticker, tutti i flussi con il relativo ticker non saranno più aggiornate

NB Tutte le formule possono essere utilizzate tramite macroVBA, le funzioni da richiamare sono le medesime, unica prerogativa è passare come argomento nel richiamo di tale formula un riferimento di cella con le coordinate x y desiderate, nel caso non si passasse il riferimento nel richiamo del metodo si verrà indirizzati alla cella A1, questo vale solamente per le funzioni richiamate tramite Macro e non per quelle da cella Excel che riporteranno il proprio risultato nella cella dove è avvenuto il richiamo.
Esempio di macro per ricezione last price per LX.EURUSD associta ad un bottone:
Sub LastPrice()
Dim x As Integer
Dim y As Integer
x = Range("O15").Row
y = Range("O15").Column
Application.Run "PX_LAST", "LX.EURUSD", x, y
End Sub

NB I prezzi ricevuti variano in base alle abilitazioni ai mercati sul proprio conto Directa.

Formato risposte formule Price

Di seguito vengono descritti i tracciati in base alla formula inviata:

  • =ANAG("Ticker")
    TIPO TIT ORA ISIN DES PRIF PAPE FLOT
    • TIPO - tipo pacchetto
    • TIT - Ticker in questione
    • ORA - Orario arrivo pacchetto
    • ISIN - Codice Isin
    • DES - descrizione del ticker
    • PRIF - prezzo di riferimento
    • PAPE - prezzo apertura
    • FLOT - flottante
  • =PX_PACK("Ticker")
    TIPO TIT ORA PRZ QTAAZ PGRAZ PGRC MIN MAX VARP
    • TIPO - tipo pacchetto
    • TIT - Ticker in questione
    • ORA - Orario arrivo pacchetto
    • PRZ - Prezzo battuto
    • QTAAZ - quantità azioni
    • PGRAZ - progressivo azioni
    • PGRC - progressivo contratti
    • MIN - minimo di giornata
    • MAX - massimo di giornata
    • VARP - variazione percentuale
  • =PX_PACK_SCROLL("Ticker")
    Stesse infomazioni del formula =PX_PACK("Ticker"), ma con la modalità scroll. Le informazioni saranno salvate in successione riga dopo riga e non in aggiornamento sulla stessa riga.
  • =PX_LAST("Ticker")   =PX_VOLUME("Ticker")   =PX_VOLUME_PROGRESSIVE("Ticker")   =PX_CONTRACTS_PROGRESSIVE("Ticker")   =PX_LOW("Ticker")   =PX_HIGH("Ticker")   =CHG_PCT_1D("Ticker")
    Le seguenti formule avranno una risposta singola che sarà il risultato richiesto con la formula per il determinato ticker inserito, il tracciato della risposta sarà così composto:
    TICKER RISULTATO
    Esempio per formula la   =PX_LAST("FCA"):
    FCA 6,255
    Nel campo ticker rimarrà interrogabile la formula quindi si potrà cambiare ticker per avere l'informazione di un'altro titolo, le altre formule avranno tutte lo stesso comportamento.

Formato risposte formule BidAsk

  • =BIDASK_PACK("Ticker")
    TIPO TIT ORA QTAACQ1 NPACQ1 PRZACQ1 QTAVEN1 NPVEN1 PRZVEN1
    • TIPO - tipo pacchetto
    • TIT - Ticker in questione
    • ORA - Orario arrivo pacchetto
    • QTAACQ1 - quantità azioni in acquisto livello1
    • NPACQ1 - numero proposte in acquisto livello1
    • PRZACQ1 - prezzo acquisto livello1
    • QTAVEN1 - quantità vendita livello1
    • NPVEN1 - numero proposte in vendita livello1
    • PRZVEN1 - prezzo in vendita livello1

  • =BIDASK_PACK_SCROLL("Ticker")
    Stesse infomazioni del formula =BIDASK_PACK("Ticker"), ma con la modalità scroll. Le informazioni saranno salvate in successione riga dopo riga e non in aggiornamento sulla stessa riga.
  • =PX_BIDASK_PACK("Ticker")
    TIT ORA PRZ QTAAZ PGRAZ
    PGRC MIN MAX QTAACQ1 NPACQ1
    PRZACQ1 QTAVEN1 NPVEN1 PRZVEN1
    Esempio: =PX_BIDASK_PACK("FCA")
    FCA 17:02:33 7,83 162 19137942 13341 7,745 7,885 36796 19 7,825 25558 16 7,83
  • =PX_BIDASK_PACK_SCROLL("Ticker")
    Stesse infomazioni del formula =PX_BIDASK_PACK("Ticker"), ma con la modalità scroll. Le informazioni saranno salvate in successione riga dopo riga e non in aggiornamento sulla stessa riga.
  • =BIDASK("Ticker")
    TIT Prezzo BID Prezzo ASK
    Esempio: =BIDASK("FCA")
    FCA 6,24 6,245
  • =MULTIBOOK_BIDASK("Ticker")
    TIT LAST PRICE VAR.PERCENTUALE ORA
    QTAACQ1 NPACQ1 PRZACQ1 QTAVEN1 NPVEN1 PRZVEN1
    Esempio: =MULTIBOOK_BIDASK("FCA")
    FCA 6,235 -1,11 14:49:14
    20717 0 6,23 10007 0 6,235
  • =FLASHBOOK_BIDASK("Ticker")
    TIT LAST PRICE VAR.PERCENTUALE ORA
    QTAACQ1 NPACQ1 PRZACQ1
    QTAVEN1 NPVEN1 PRZVEN1
    Esempio: =FLASHBOOK_BIDASK("FCA")
    FCA 6,23 -1,11 15:29:23
    20517 0 6,235
    47526 0 6,23
  • =FLASHBOOK_BIDASK_PX("Ticker")
    TIT LAST PRICE VAR.PERCENTUALE ORA
    PRZACQ1
    PRZVEN1
    Esempio: =FLASHBOOK_BIDASK_PX("FCA")
    FCA 6,23 -1,11 15:29:23
    6,235
    6,23
  • =PX_BID("Ticker")  =BID_SIZE_VOLUME("Ticker")  =BID_SIZE_PROPOSALS("Ticker")   =PX_ASK("Ticker")   =ASK_SIZE_VOLUME("Ticker")   =ASK_SIZE_PROPOSALS("Ticker")
    Le seguenti formule avranno una risposta singola che sarà il risultato richiesto con la formula per il determinato ticker inserito, il tracciato della risposta sarà così composto:
    TICKER RISULTATO
    Esempio per formula la   =PX_BID("FCA"):
    FCA 6,205

Formato risposte formule BOOK5

  • =BOOK5_PACK("Ticker")
  • TIPO TIT ORA QTAACQ1 NPACQ1 PRZACQ1 ... QTAVEN1 NPVEN1 PRZVEN1 ...
    • TIPO - tipo pacchetto
    • TIT - Ticker in questione
    • ORA - Orario arrivo pacchetto
    • QTAACQ1 - quantità azioni in acquisto livello1
    • NPACQ1 - numero proposte in acquisto livello1
    • PRZACQ1 - prezzo acquisto livello1
    • ... - stessi tre campi per il livello dal 2 al 5
    • QTAVEN1 - quantità vendita livello1
    • NPVEN1 - numero proposte in vendita livello1
    • PRZVEN1 - prezzo in vendita livello1
    • ... - stessi tre campi per il livello dal 2 al 5

  • =BOOK5_PACK_SCROLL("Ticker")
    Stesse infomazioni del formula =BOOK5_PACK("Ticker"), ma con la modalità scroll. Le informazioni saranno salvate in successione riga dopo riga e non in aggiornamento sulla stessa riga.
  • =MULTIBOOK_L5("Ticker")
    TITOLO LAST_PRICE VAR.PERCENTUALE ORA
    QTAACQ1 NPACQ1 PRZACQ1 QTAVEN1 NPVEN1 PRZVEN1
    QTAACQ2 NPACQ2 PRZACQ2 QTAVEN2 NPVEN2 PRZVEN2
    QTAACQ3 NPACQ3 PRZACQ3 QTAVEN3 NPVEN13 PRZVEN3
    QTAACQ4 NPACQ4 PRZACQ4 QTAVEN4 NPVEN4 PRZVEN4
    QTAACQ5 NPACQ5 PRZACQ5 QTAVEN5 NPVEN5 PRZVEN5

    Esempio: =MULTIBOOK_L5("FCA")
    FCA 6,225 -1,11 16:41:32
    9609 8 6,22 10474 8 6,225
    26701 18 6,215 53330 26 6,23
    45557 23 6,21 32604 19 6,235
    111783 25 6,205 71744 24 6,24
    79707 39 6,2 49387 24 6,245

  • =FLASHBOOK_L5("Ticker")
    TITOLO LAST_PRICE VAR.PERCENTUALE ORA
    QTAVEN1 NPVEN1 PRZVEN1
    QTAVEN2 NPVEN2 PRZVEN2
    QTAVEN3 NPVEN13 PRZVEN3
    QTAVEN4 NPVEN4 PRZVEN4
    QTAVEN5 NPVEN5 PRZVEN5
    QTAACQ1 NPACQ1 PRZACQ1
    QTAACQ2 NPACQ2 PRZACQ2
    QTAACQ3 NPACQ3 PRZACQ3
    QTAACQ4 NPACQ4 PRZACQ4
    QTAACQ5 NPACQ5 PRZACQ5

    Esempio: =FLASHBOOK_L5("FCA")
    FCA 6,24 -1,11 16:59:22
    48083 23 6,265
    50267 23 6,26
    85177 35 6,255
    79627 32 6,25
    18706 10 6,245
    31646 16 6,24
    28772 19 6,235
    43714 23 6,23
    111246 25 6,225
    87326 20 6,22
  • =FLASHBOOK_L5_PX("Ticker")
    TITOLO LAST_PRICE VAR.PERCENTUALE ORA
    PRZVEN1
    PRZVEN2
    PRZVEN3
    PRZVEN4
    PRZVEN5
    PRZACQ1
    PRZACQ2
    PRZACQ3
    PRZACQ4
    PRZACQ5

    Esempio: =FLASHBOOK_L5_PX("FCA")
    FCA 6,24 -1,11 16:59:22
    6,265
    6,26
    6,255
    6,25
    6,245
    6,24
    6,235
    6,23
    6,255
    6,22

  • =BOOKL1("Ticker")  =BOOKL2("Ticker") =BOOKL3("Ticker") =BOOKL4("Ticker") =BOOKL5("Ticker")
    Questa formula riporta il livello di book indicato nella formula stessa per il ticker inserito come argomento:
    TITOLO QTAACQL NPACQL PRZACQL QTAVENL NPVENL PRZVENL
    Esempio: =BOOKL3("FCA")
    FCA 33412 21 6,215 50471 23 6,24
  • =PX_BID_L1("Ticker") =PX_BID_L2("Ticker") =PX_BID_L3("Ticker") =PX_BID_L4("Ticker") =PX_BID_L5("Ticker")
     =PX_ASK_L1("Ticker") =PX_ASK_L2("Ticker") =PX_ASK_L3("Ticker") =PX_ASK_L4("Ticker") =PX_ASK_L5("Ticker")
     =BID_SIZE_VOLUME_L1("Ticker") =BID_SIZE_VOLUME_L2("Ticker") =BID_SIZE_VOLUME_L3("Ticker")
     =BID_SIZE_VOLUME_L4("Ticker") =BID_SIZE_VOLUME_L5("Ticker")
      =ASK_SIZE_VOLUME_L1("Ticker") =ASK_SIZE_VOLUME_L2("Ticker") =ASK_SIZE_VOLUME_L3("Ticker") 
    =ASK_SIZE_VOLUME_L4("Ticker")  =ASK_SIZE_VOLUME_L5("Ticker")  
    =BID_SIZE_PRPOSALS_L1("Ticker") =BID_SIZE_PRPOSALS_L2("Ticker") =BID_SIZE_PRPOSALS_L3("Ticker")  =BID_SIZE_PRPOSALS_L4("Ticker") =BID_SIZE_PRPOSALS_L5("Ticker")
     =ASK_SIZE_PRPOSALS_L1("Ticker")  =ASK_SIZE_PRPOSALS_L2("Ticker") =ASK_SIZE_PRPOSALS_L3("Ticker") =ASK_SIZE_PRPOSALS_L4("Ticker")  =ASK_SIZE_PRPOSALS_L5("Ticker")
    Le seguenti formule avranno una risposta singola che sarà il risultato richiesto con la formula per il determinato ticker inserito, il tracciato della risposta sarà così composto:
    TICKER RISULTATO
    Esempio per formula la   =PX_ASK_L3("FCA"):
    FCA 6,24
  • Formato risposte formule Price

  • =UNSUBSCRIBE("Ticker")

    Risponderà true o false più il ticker in questione in base alla riuscita del comando.


  • Connessione al canale di Trading

    Per effettuare operazioni di trading è necessario come prima cosa aprire il canale di trading, tramite l'apposita funzione. =DirectaTradingConnection() è possibile specificare come parametro un numero di righe, nel qual caso verrano stampate nelle celle successive a dove viene digitato il comando delle righe di log.
    La formula restituisce lo stato della connessione e notificherà eventuali errori durante la sessione.
    Formato risposta per connessione Trading:

    Trading STATUS TRUE/FALSE

    Esempio risposta per comando =DirectaTradingConnection()
    Trading STATUS TRUE
    NBEssendo al momento disponibile l'utilizzo di una sola Darwin per questo componente, una volta stabilita la connessione non c'è bisogno su altri fogli o file di eseguire la formula di connessione al trading

    Comandi di Trading

    Viene riportato di seguito l'elenco delle funzioni disponibili per il trading. Per ciascun comando i parametri possono essere passati come valori contenuti in una cella o come stringhe.

    FUNZIONE AZIONE
    =Buy("TITOLO";QUANTITA;PREZZO) Acquista azioni al prezzo limite indicato
    =Sell("TITOLO";QUANTITA;PREZZO) Vendi azioni al prezzo limite indicato
    =BuyMarket("TITOLO";QUANTITA) Acquista azioni senza limite di prezzo
    =SellMarket("TITOLO";QUANTITA) Vendi azioni senza limite di prezzo
    =BuyStop("TITOLO";QUANTITA;SEGNALE) Acquista azioni con ordine stop market
    =SellStop("TITOLO";QUANTITA;SEGNALE) Vendi azioni con ordine stop market
    =BuyStopLimit("TITOLO";QUANTITA;LIMITE;SEGNALE) Acquista azioni con prz. limite e prz.segnale
    =SellStopLimit("TITOLO";QUANTITA;LIMITE;SEGNALE) Vendi azioni con prz. limite e prz.segnale
    =ModifyOrder("ID_ORDINE",LIMITE;SEGNALE) Modifica il prezzo relativo all'ordine indicato nell'idOrdine
    =CancelOrder("ID_ORDINE") Revoca ordine specificato
    =CancelAll("TICKER") Revoca tutti gli ordini per il ticker specificato

    Per le informazioni relative alla validità degli ordini nei diversi mercati fare riferimento alla tabella all'interno
    dell'Help del sito commerciale all'indirizzo: http://www.directa.it/pub/it/help/100/2.html



    NB Tutte le formule possono essere utilizzate tramite macroVBA, le funzioni da richiamare sono le medesime, unica prerogativa è passare come argomento nel richiamo di tale formula un riferimento di cella con le coordinate x y desiderate, nel caso non si passasse il riferimento nel richiamo del metodo si verrà indirizzati alla cella A1, questo vale solamente per le funzioni richiamate tramite Macro e non per quelle da cella Excel che riporteranno il proprio risultato nella cella dove è avvenuto il richiamo.
    Esempio di macro per revoca ordine con determinato idOrder associato ad un bottone:
    Sub RevocaOrdine()
    Dim id As String
    id = Range("G10")
    x = Range("I10").Row
    y = Range("I10").Column
    Application.Run "CancelOrder", id, x, y
    End Sub

    Risposta ai comandi di trading

    Quando viene eseguito un comando di trading, nella cella in cui è presente la funzione viene restituito il valore VERO se il comando è stato gestito correttamente dal servizio API. Non appena diviene disponibile una risposta dal Server di Trading, questa viene stampata alla destra della cella in cui è presente la funzione. La risposta può essere di due tipi: TRADOK in caso di successo dell'operazione o TRADERR in caso di errore:

    Di seguito i dettagli della risposta TRADOK:

    RISPOSTA TIT ID STATO TIPO QTA PRZ PRZS PRZE QTAE QTAR IDDirecta
    • RISPOSTA- questo caso sarà TRADOK
    • TIT codice identificativo del titolo
    • ID codice identificativo dell'ordine
    • STATO dell'ordine, può assumere tre valori:
      • 3000 - Ordine Immesso
      • 3001 - Ordine Eseguito
      • 3002 - Ordine Revocato
    • TIPO tipo di ordine, ovvero limite, market, stop, stoplimit
    • QTA quantità dell'ordine
    • PRZ prezzo immesso dell'ordine
    • PRZS eventuale prezzo segnale inserito
    • PRZE prezzo eseguito - utile per acquisti al meglio o a mercato
    • QTAE quantità eseguita
    • QTAR eventuale quantità residua - utile per eseguiti parziali
    • IDDirecta id riferimento presso i server Directa


    Qui invece i dettagli della risposta TRADERR:
    RISPOSTA TIT ID STATO TIPO QTA PRZ PRZS MSG
    • RISPOSTA- questo caso sarà TRADERR
    • TIT codice identificativo del titolo
    • ID codice identificativo dell'ordine
    • STATO in questo caso sarà sempre 1012
    • TIPO tipo di ordine, ovvero limite, market, stop, stoplimit
    • QTA quantità dell'ordine
    • PRZ prezzo immesso dell'ordine
    • PRZS eventuale prezzo segnale inserito
    • MSG Messaggio causa errore


    Esempio Buy di un azione di FCA al prezzo di 3,5 =Buy("FCA";1;3,5):
    TRUE FCA EXC0 PENDING BUY 1 3,5 0 0 0 S0717114518837


    Esempio TRADERR per comando =BuyMarket("FCA";1):
    FALSE FCA EXC1 REJECTED BUYMARKET 1 ORDINI AL MEGLIO CONSENTITI SOLO CON PARAMETRO ASTA

    Comando ModifyOrder

    Il comando =ModifyOrder("ID_ORDINE";limite;segnale) Permette la modifica di un determinato ordine in base al id, il prezzo segnale può essere omesso per operazioni con limite
    La risposta alla forumula sarà composta:

    MOD IDOrdine Risultato Price_limit Price_signal
    • MOD - Risultato della funzione restituisce MOD
    • IDOrdine - L'id dell'ordine che è stato modificato.
    • Risultato - TRUE - per risposta positiva del comando
    • Price_limit - Il prezzo limite modificato
    • Price_signal - Eventuale prezzo stop modificato, nel caso di mancanza del prezzo stop sarà inviato uno 0


    Esempio per modifica ordine per acquisto di una azione di FCA al prezzo di 3,8 al posto di 3,5=ModifyOrder("EXC0";3,8;0):
    MOD EXC0 TRUE 3,8 0

    Comando CancelOrder

    Il comando =CancelOrder("ID_ORDINE") Permette la revoca dell'ordine con quel determinato ID_ORDINE
    La risposta alla forumula sarà composta:

    CANCELLED Risultato ID_Ordine
    • CANCELLED - Risultato della funzione restituisce CANCELLED
    • Risultato - TRUE - per risposta positiva del comando
    • ID_Ordine - L'id dell'ordine revocato

    Esempio di revoca ordine =CancelOrder("EXC0"):
    CANCELLED TRUE EXC0

    Comando CancelAll

    Il comando =CancelAll("TICKER") Permette la revoca di tutte le operazini su quel determinato ticker
    La risposta alla forumula sarà composta:

    CANCELLED TICKER
    • CANCELLED - Risultato della funzione restituisce CANCELLED
    • TICKER - Ticker su cui si vogliono cancellare tutti gli ordini

    N.B La CancelAll è valida solamente per gli ordini normali, non quelli stop o stoplimit, dove è necessario
    eseguire una revoca puntuale dell'ordine tramite CancelOrder, in quanto è lo stesso comportamento della Darwin.

    Comando Infostock

    Il comando =Infostock() restituisce l'elenco dei titoli in portafoglio. Ogni riga avrà i seguenti campi, uno per colonna

    TICKER TIME QTAP QTADirecta QTAN GAIN
    • TICKER - Titolo in questione
    • TIME - Orario invio comando
    • QTAP - Quantità in portafoglio
    • QTADirecta - Quantità presso i nostri server
    • QTAN - Quantità in negozazione
    • GAIN - Gain

    Esempio formato risposta comando =InfoStock():
    FCA 17:25:53 0 0 1 0

    NB Il contenuto delle celle sarà automaticamente aggiornato quando verranno eseguite delle operazioni trading

    Comando Orderlist

    Il comando =Orderlist() restituisce l'elenco degli ordini immessi nella giornata corrente, indipendentemente dallo stato. Ogni riga avrà i seguenti campi, uno per colonna:

    TIME TICKER ID STATUS TIPO PL PS QTA PM PE QTAM IDDirecta
    • ORA - Orario invio ordine
    • TIT - Il ticker relativo all'ordine
    • ID - L'id ordine relativo all'ordine nella sessione trading
    • STATO - Stato ordine (Immesso - Eseguito - Revocato)
    • TIPO - Tipo operazione trading effettuata
    • PL - Prezzo limite
    • PS - Eventuale Prezzo Segnale
    • QTA - Quantità dell'ordine
    • PM - Prezzo medio relativo al ticker
    • PE - Prezzo eseguito
    • QTAM - Eventuale quantità ancora a mercato (eseguiti parziali)
    • IDDirecta - l'id univoco dell'ordine presso i nostri server

    Per accedere a delle liste ordini filtrate sono disponibili due comandi:
    • =OrderlistPending() Lista ordini con solamente gli ordini in negozazione
    • =OrderlistNoRev() Lista ordini senza riportare gli ordini revocati

    Esempio di risposta per comando =OrderList():
    17:11:45 FCA EXC0 CANCELLED BUY 3,5 0 1 0 0 0 S0717114518837
    17:20:31 FCA EXC1 CANCELLED BUY 3,8 0 1 0 0 0 S0717203119654
    17:25:50 FCA EXC2 PENDING BUY 3,5 0 1 0 0 0 S0717255020209

    NB Il contenuto delle celle sarà automaticamente aggiornato quando verranno eseguite delle operazioni trading

    Comando InfoAccount

    Il comando =InfoAccount() Restituisce informazioni sullo stato patrimoniale del conto

    TIME Utente LIQ Gain€ OpPr/Loss Performance
    • TIME - Orario richiesta comando
    • Utente - Il proprio codice utente Directa
    • LIQ - Liquidità conto
    • Gain€ - Gain Euro
    • Op Pr/Loss - Open Profit / Loss
    • Performance - La Performance giornaliera

    Esempio risposta per comando =InfoAccount():
    11:48:17 47511 52,15 0 0 -0,02

    NB Il contenuto delle celle sarà automaticamente aggiornato quando verranno eseguite delle operazioni trading

    Comando InfoAvailability

    Il comando =InfoAvailability() Situazione liquidità portafoglio

    TIME DISPAz DISPAzM DISPDer DISPDerM LiqTOT
    • TIME - Orario richiesta comando
    • DISPAz - Disponibilità azioni
    • DISPAzM - Disponibilità azioni con marginatura
    • DISPDer - Disponibilità derivati
    • DISPDerM - Disponibilità derivati con marginatura
    • LiqTOT - Liquidità totale

    Esempio risposta per comando =InfoAvailability():
    11:50:22 52,15 52,15 0 0 52,15

    NB Il contenuto delle celle sarà automaticamente aggiornato quando verranno eseguite delle operazioni trading