Trading_Systems: le basi Ordini automatici con IW PEI e Quick Trade

  • Creatore Discussione Creatore Discussione reef
  • Data di Inizio Data di Inizio
In risposta ad un utente su un altro 3D, in caso interessasse.
DOMANDA: "Ciao Reef anche io avrei necessità di prendere i dati a 15 min dal dde di fineco in particolare ftse mib e fib questo per aggiornare in tempo reale i miei grafici ciclici su excel"


RISPOSTA

Ti passo le indicazioni per avere su un foglio ("DDE") i dati incrementali che arrivano ogni 5 sec e in un secondo foglio ("Storici") le chiusure ad un intervallo di tempo definito.
Con questa organizzazione puoi calcolarti banalmente anche i max e i min all'interno del time frame.

ISTRUZIONI

Devi creare un foglio che chiamerai DDE

Poi crei un pulsante "ATTIVA DDE" che colleghi a qusto codice:


==========================
Private Sub cmd_attivadde_Click()

Sheets("DDE").Range("b8").FormulaR1C1 = "=FDF|Q!'FIBZ0.NaE;Last"

Dim SorgentiDDE As Variant
SorgentiDDE = ActiveWorkbook.LinkSources(xlOLELinks)
Dim i As Integer
If Not IsEmpty(SorgentiDDE) Then
For i = 1 To UBound(SorgentiDDE)
ActiveWorkbook.SetLinkOnData SorgentiDDE(i), "SuArrivoDatiDDE"
Next i
Else
MsgBox "Nessuna Sorgente DDE Rilevata", vbExclamation, "Errore"
End If

End Sub
=================


Quando clicchi "ATTIVA DDE" nella cella B8 viene riportato il collegamento DDE, e vedi il dato che si aggiorna in tempo reale. Controlla il codice del dato "FDF|Q!'FIBZ0.NaE;Last" (FIB dicembre) che sia quello giusto, ora non posso testarlo.

Nella cella B9 metti la formula "=B8"

Per comodità fai anche un pulsante "DISATTIVA DDE" collegato a questo codice, serve a bloccare il flusso quando devi lavorarci su, altrimenti non capisci più nulla:

==================
Private Sub cmd_disattivadde_Click()
Sheets("DDE").Range("b8").FormulaR1C1 = ""
End Sub
==================


Fai un secondo foglio che chiamerai "Storici" che verrà automaticamente alimentato con i dati storici ogni 15 min, se vuoi altri TF devi cambiare la formula collegata al flag "fstor" e oldmin (al posto di 15 metti i minuti che vuoi). Puoi usare qualsiasi intervallo temporale.

Scrivi questa funzione nel modulo VBA del foglio:

========================
Public Sub SuArrivoDatiDDE()
Dim sTx As String
Static fstor, oldmin, oraold

'Ogni 5 sec salva il dato nella cella successiva
t = Time
riga = Second(t) \ 5
resto = Second(t) Mod 5
Sheets("DDE").Range("A11").FormulaR1C1 = oraold
ora5sec = TimeSerial(Hour(t), Minute(t), Second(t) - resto)

If (ora5sec > oraold) Then
Sheets("DDE").Range("A" & riga + 12).FormulaR1C1 = ora5sec
Sheets("DDE").Range("b" & riga + 12).FormulaR1C1 = Sheets("DDE").Range("b9").Value
oraold = ora5sec
End If

If (fstor = 1) And (Minute(t) \ 15 <> oldmin) Then fstor = 0
If fstor = 0 Then
riga = (Hour(t) - 8) * 60 + Minute(t)
If riga < 2 Then riga = 2
Sheets("Storici").Range("A" & riga).FormulaR1C1 = ora5sec
Sheets("Storici").Range("b" & riga).FormulaR1C1 = Sheets("DDE").Range("b9").Value
fstor = 1
oldmin = Minute(t) \ 15
End If

End Sub
===================

Già così dovresti avere tutto.

Se c'è altro chiedi pure. In bocca al lupo

1288251182ddefin.jpg
 
Buongiorno a tutti.

Ho letto per sommi capi la discussione, non credo di aver trovato la soluzione al problema che vi espongo.

Ho un excel con un add in per la formula black e scholes, mi serve per calcolare la vola implicita delle opzioni.

Ora mi ritrovo con il fastidioso limite delle dde.

Ho pensato, operando con iw, di attivare la pei, che attraverso la socket dovrebbe permettere di scaricare dati realtime senza limiti (Per la cronaca mi servono prevalentemente miglior bid e miglior ask).

Domanda: c'è un modo per generare un'interfaccia che mi lavori in socket e che faccia da tramite tra il mio excel e iw, in modo tale da annullare il problema del limite della dde?

Spero di essermi spiegato bene.

Saluti
 
Buongiorno a tutti.

Ho letto per sommi capi la discussione, non credo di aver trovato la soluzione al problema che vi espongo.

Ho un excel con un add in per la formula black e scholes, mi serve per calcolare la vola implicita delle opzioni.

Ora mi ritrovo con il fastidioso limite delle dde.

Ho pensato, operando con iw, di attivare la pei, che attraverso la socket dovrebbe permettere di scaricare dati realtime senza limiti (Per la cronaca mi servono prevalentemente miglior bid e miglior ask).

Domanda: c'è un modo per generare un'interfaccia che mi lavori in socket e che faccia da tramite tra il mio excel e iw, in modo tale da annullare il problema del limite della dde?

Spero di essermi spiegato bene.

Saluti

Non sono sicuro di aver capito cosa chiedi, ma ti passo alcune info.

Per la formula di Black-Scholes non ti serve un add-in, puoi implementare la formula direttamente, se cerchi trovi diverso codice in rete.

LA PEI di IW usa tre modalità, delle quali la più indicata per Excel è la DDE, che per altro espone il book. Il socket mi risulta che funzioni molto male in ambiente Excel, tant'è che avevo scritto un codice esterno per passare i dati da socket a file, poi da Excel mi andavo a leggere il file. Ora ho abbandonato Excel e lavoro direttamente su codice proprietario e mi interfaccio via socket e http. Excel lo uso, ma solo offline.

La risposta al tuo quesito probabilmente è proprio il codice esterno (scritto ad esempio in VB) che trasferisce da socket a file i dati di tuo interesse già filtrati, lasciando a Excel il solo compito di prelevare i dati da file.
 

Users who are viewing this thread

Back
Alto