Condividi:        

Richiesta Informazioni Excel DDE

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Richiesta Informazioni Excel DDE

Postdi limba864 » 14/04/08 11:24

Salve a tutti. Vorrei porre un quesito relativo alla possibilità di elaborare, tramite excel (di cui non sono un esperto), dei dati di borsa scaricati in real time con collegamento DDE. Poichè la spiegazione di ciò che vorrei è articolata, stavo allegando un file di excel dove pongo la mia richiesta, ma ciò non è consentito. Come posso fare? Vi ringrazio
limba864
Utente Junior
 
Post: 13
Iscritto il: 12/04/08 07:19

Sponsor
 

Re: Richiesta Informazioni Excel DDE

Postdi Dylan666 » 14/04/08 11:27

zippalo e poi allegalo
Avatar utente
Dylan666
Moderatore
 
Post: 39988
Iscritto il: 18/11/03 16:46

Re: Richiesta Informazioni Excel DDE

Postdi limba864 » 14/04/08 11:37

Ti ringrazio. Nel File allegato ( in giallo) c'è la mia richiesta. Sopra la mia richiesta ci sono i dati in real time, che si scaricano dalla piattaforma di trading al foglio excel. Sotto c'è invece la tabella con le elaborazioni che vorrei ottenere.
Allegati

[L’estensione rar è stata disattivata e non puó essere visualizzata.]

limba864
Utente Junior
 
Post: 13
Iscritto il: 12/04/08 07:19

Re: Richiesta Informazioni Excel DDE

Postdi Dylan666 » 14/04/08 13:00

Se però lasciassi scritto qui un breve riassunto di quello che ti serve il testo verrebbe indicizzato e sarebbe trovabile anche per chi in futuro avrà problemi simili al tuo.
Inoltre chi legge questo topic potrebbe farsi una idea sul fatto se sia in grado di darti una mano o no anche senza scaricare il file ;)
Avatar utente
Dylan666
Moderatore
 
Post: 39988
Iscritto il: 18/11/03 16:46

Re: Richiesta Informazioni Excel DDE

Postdi limba864 » 14/04/08 14:23

Tramite collegamento in DDE tra una piattaforma di TOL ed Excel è possibile scaricare dai dati di borsa in real time, quali: Price, Prezzo Bid e Ask (solo uno dei due coincide in ogni istante con il Price),Quantità scambiate (trade Vol.) in un determinato istante e riferite al Price, volumi totali (somma indistinta delle quantità scambiate, cioè non suddivisa tra quantità riferita al Bid e quantità riferita all'ask), time. Questi dati sono visualizzati in una riga ed in diverse colonne di excel. Io vorrei sapere se con excel fosse possibile:
- associare e sommare, in real time e per ogni minuto di contrattazione, il trade vol. (quantità scambiate) al Bid o all'Ask
- calcolare, in real time e per ogni minuto di contrattazione, il rapporto tra quantità associate al Bid e quantità associate all'ask
- calcolare, in real time e per ogni minuto di contrattazione, il diferenziale tra quantità associate al Bid e quantità associate all'ask
Tutto ciò dalle ore 9.05 alle ore 17.25, con riferimento ad esempio ad un titolo azionario.
Speriamo di essere stato abbastanza chiaro......
limba864
Utente Junior
 
Post: 13
Iscritto il: 12/04/08 07:19

Re: Richiesta Informazioni Excel DDE

Postdi Dylan666 » 14/04/08 14:30

Vediamo se ti è utile (non me ne intendo):
viewtopic.php?t=46965
Avatar utente
Dylan666
Moderatore
 
Post: 39988
Iscritto il: 18/11/03 16:46

Re: Richiesta Informazioni Excel DDE

Postdi limba864 » 14/04/08 14:55

Purtroppo non sono un esperto di excel e quindi è come se fosse arabo. Comunque l'argomento, in generale, è lo stesso. Speriamo che ci sia qualcuno che possa aiutarmi. Ti ringrazio
limba864
Utente Junior
 
Post: 13
Iscritto il: 12/04/08 07:19

Re: Richiesta Informazioni Excel DDE

Postdi Anthony47 » 14/04/08 15:34

Ciao limba864 e benvenuto nel forum.
Ci sono state delle richieste analoghe, guarda non solo il link di Dylan ma soprattutto questi:
viewtopic.php?f=26&t=57999&
viewtopic.php?t=52172

Io procederei con una macro rischedulata col metodo "OnTime" che periodocamente copia i dati "live" e li storicizza; in linea di massima:
-crei una macro “Restarta” come da secondo link, predisposta per la ripetizione ogni tot (come da impostazione DeltaT)
-aggiungi le istruzioni del primo link per la storicizzazione dati
Avvi la macro (ad esempio con un pulsante a cui la puoi associare), che si rischedula se “CellaFlag” (M1 nella macro del secondo link) non e’ a 0.
Viste le tue esigenze, puoi aggiungere due ulteriori celle sul tuo foglio, rispettivamente con l’ orario di inizio e di fine storicizzazione, usate per eseguire o scippare le istruzioni del primo link.
In questo modo “CellaFlag” determina se la macro si rischedula o no, le altre due celle determinano se la storicizzazione avviene o no; in questo modo puoi avviare la macro alle 7:30 ma la storicizzazione avviene solo dopo le 9:00 (se nella cella “Inizio” hai scritto 9:00).
Per questo userai istruzioni quali:
Codice: Seleziona tutto
CurTime = Time          'orario di sistema
If CurTime < Range("Inizio").Value Then GoTo esci  'Non copiare, ma rimani attivo
If CurTime > Range("Fine").Value Then GoTo esci  'Non copiare, ma rimani attivo


Fai sapere come procedi...
Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Richiesta Informazioni Excel DDE

Postdi limba864 » 14/04/08 17:37

Egr. Anthony 47 ti ringrazio per le dritte. Purtroppo non ho mai usato le macro...sono proprio a digiuno. Ho cercato, per quanto ho capito, di fare come mi hai suggerito. Domani provo quando sono aperti i mercati. Ti farò sapere come ho proceduto. Per adesso ti ringrazio e ti saluto.
limba864
Utente Junior
 
Post: 13
Iscritto il: 12/04/08 07:19

Re: Richiesta Informazioni Excel DDE

Postdi limba864 » 15/04/08 09:12

Egr. Anthony 47 ecco come ho proceduto (come potrai constatare sono inesperto di queste cose....ma con il vostro aiuto spero di capirci qualcosa):
- ho aperto il foglio excel collegato con il DDE
- ho cliccato su strumenti, macro, nome macro, crea
- ho seguito le tue istruzioni (probabilmente prendendo delle cantonate...) e nella finestra Modulo 1 (codice) risulta quanto di seguito...
Sub Restarta()
CellaFlag = "M1" '<<<-- Cambiare se necessario
DeltaT = "00:00:05" '<<< restart ogni 5 Secondi; cambiare se necessario
'Calculate
If Range(CellaFlag).Value = 0 Then
Range(CellaFlag).Interior.ColorIndex = xlNone
Exit Sub
End If
Application.OnTime Now + TimeValue(DeltaT), "Restarta"
Range(CellaFlag).Interior.ColorIndex = 3 '<<< 3=ROSSO; 4=Verde; 6=Giallo;7=Fucsia; 8=Celeste
'Range("N1").Value = Range("N1").Value + 1
'Calculate
ddedati = "A2:E2" '<<< Area da copiare
TWS = "Foglio2" '<<< Foglio su cui storicizzare
SWS = ActiveSheet.Name
Range(ddedati).Copy
Sheets(TWS).Select
Range("A65536").End(xlUp).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Sheets(SWS).Select

CurTime = Time 'orario di sistema
If CurTime < Range("Inizio").Value Then GoTo esci 'Non copiare, ma rimani attivo
If CurTime > Range("Fine").Value Then GoTo esci 'Non copiare, ma rimani attivo
End Sub
Se dopo chiudo la finestra Modulo 1 (codice) e vado in strumenti, macro, esegui "restarta" mi compare un avviso "Errore di compilazione, etichetta non definita" e mi colora di blu la scritta Go To esci.
Ti ringrazio e ti saluto
limba864
Utente Junior
 
Post: 13
Iscritto il: 12/04/08 07:19

Re: Richiesta Informazioni Excel DDE

Postdi Anthony47 » 15/04/08 11:59

Te l'ho sistemata in un paio di punti. Ho usato M2 ed M3 per impostare l' orario di inizio storicizzazione e quello di fine (metti in queste celle il valore in formato orario, es 09:00, ma dipende dal tuo separatore orario). Ti ho anche settato il delta-t a 1 minuto.
Inoltre ho usato N1 per indicare il numero di cicli della macro, cioe' N1 si incrementa a ogni ciclo di macro e puo' aiutarti in fase di debug a diagnosticare che cosa funziona e cosa no.
Cambia le istruzioni se le celle indicate non sono libere.

Codice: Seleziona tutto
Sub Restarta()
CellaFlag = "M1" '<<<-- Cambiare se necessario
DeltaT = "00:01:00" '<<< restart ogni 60 Secondi; cambiare se necessario
ddedati = "A2:E2" '<<< Area da copiare
TWS = "Foglio2" '<<< Foglio su cui storicizzare
'
'Calculate
SWS = ActiveSheet.Name
If Range(CellaFlag).Value = 0 Then
Range(CellaFlag).Interior.ColorIndex = xlNone
Exit Sub
End If
Application.OnTime Now + TimeValue(DeltaT), "Restarta"
Range(CellaFlag).Interior.ColorIndex = 3 '<<< 3=ROSSO; 4=Verde; 6=Giallo;7=Fucsia; 8=Celeste
Range("N1").Value = Range("N1").Value + 1     '<<< +1 a ogni esecuzione
'Calculate
CurTime = Time 'orario di sistema
If CurTime < Range("M2").Value Then exit sub 'Non copiare, ma rimani attivo   <<<< in M2 orario di inizio storicizzaz.
If CurTime > Range("M3").Value Then exit sub 'Non copiare, ma rimani attivo   <<<< in M3 orario di fine storicizzaz
'
'copia e storicizza
Range(ddedati).Copy
Sheets(TWS).Select
Range("A65536").End(xlUp).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Sheets(SWS).Select

End Sub

Apri il vba editor (con Alt-F11), apri Modulo1, cancella il codice che hai e fai copia/incolla di questo.
Poi torna su excel, metti M1 a 1 e prova.

Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Richiesta Informazioni Excel DDE

Postdi limba864 » 15/04/08 15:55

Ho fatto come mia hai suggerito: in M1 ho messo 1, in M2 9.00 AM, in M3 5.25 PM. Poichè i dati in real time sono nelle seguenti celle:
- D7 Price, E7 Net Change; F7 Prev Price; G7 Open; H7 High; I7 Low; J7 Bid; K7 Ask; L7 Trade Vol, M7 Total Vol; N7 Time
ho cambiato il ddedati = "D7:N7"
Nel foglio 2 ottengo sempre n° 11 dati ogni minuto (penso si tratti di dati storicizzati); nell'ultimo dato mi compare un numero tipo 0,68338 (ti chiedo cosa è? forse è il minuto di storicizzazione?). Ciò che vorrei ottenere è questo:
- se in un determinato istante di contrattazione il valore della cella L7 (trade vol) è di 3.500 pezzi al Price (cella D7) di 13,65 e questo valore coincide con il prezzo al Bid (cella J7) vorrei che i 3.500 pezzi me li attribuisse allo stesso Bid (in una cella sotto). Se nel successivo istante il valore della cella L7 (trade vol) è di 2.000 pezzi al Price (cella D7) di 13.64 e questo valore coincide di nuovo al Bid (cella J7) vorrei che i 2.000 pezzi me li sommasse ai 3.500 di prima. Se invece il valore del Trade vol (cella L7) è di 1.500 pezzi al Price di 13,60 e 13,60 coincide con il prezzo Ask vorrei che me li attribuisse all'Ask (in una cella sotto). In tempo reale vorrei che mi calcolasse la somma del trade vol (quantità scambiate istante per istante )riferita al Bid o all'ask ed il realtivo rapporto con storicizzazione ogni minuto. In parole povere vorrei che excel ragionasse così:
- se il valore della cella L7 (trade vol o quantità scambiate, che si aggiorna istante per istante) che si riferisce al Price battuto in quel momento (cella D7) il quale a sua volta coincide con il prezzo Bid (cella J7) me lo devi mettere sotto il Bid; se si riferisce all'Ask (cella K7)me lo devi mettere sotto l'Ask. Mi devi fare la somma di questi valori istante per istante calcolandomi il rapporto dei volumi (trade vol) riferiti al bid e all'ask. alla fine di ogni minuto mi devi storicizzare tutti i valori. In definitiva lo scopo è quello di sapere quanti volumi (trade vol) si riferiscono al prezzo Bid o al Prezzo Ask ; questo perchè si aggiornano molto velocemente e non è possibile farlo a mente....Forse è troppo complicato.......(spero di no). Ti saluto e ti ringrazio per la tua pazienza.
limba864
Utente Junior
 
Post: 13
Iscritto il: 12/04/08 07:19

Re: Richiesta Informazioni Excel DDE

Postdi Anthony47 » 15/04/08 21:58

Dici che su Foglio2 ci sono 11 righe; sono state messe dalla macro? Se SI siamo sulla buona strada.

Non dici se dopo aver settato i dati in M1-M2-M3 hai lanciato la macro (anche se immagino di si); sarebbe anche utile conoscere il comportamento di N1, nel senso che l' avevamo usato "per indicare il numero di cicli della macro, cioe' N1 si incrementa a ogni ciclo di macro e puo' aiutarti in fase di debug a diagnosticare che cosa funziona e cosa no": se azzeri N1 prima di lanciare la macro, si incrementa ogni minuto (se M1=1)? (per le prove puoi anche ridurre il ritardo DeltaT).

Vorrei inoltre essere certo che in M2 ci sia scritto 9h30m: se visualizzi la cella come numero, vedi qualcosa come 0,3958? e 17h25 lo vedi come 0,7257?? Questo mi porta a rispondere al tuo quesito su quel numerino 0,68338, che rappresenta nella notazione excel l' orario 16:24, infatti le 24h sono rappresentate da un decimale che va da 0 (le 0:00) a 0,9999999 (le 23:59:59.9999); quella colonna rappresenta un orario, quindi formattala in quella modalita'.

Visto che probabilmente ti muovi tra i fogli, e' opportuno aggiungere in testa alla macro un paio di istruzioni per definire il nome del foglio con i dati dde e selezionare quel foglio prima di copiare e altro; quindi modifica:
Codice: Seleziona tutto
Sub Restarta()
         SWS = "Foglio1"   '<<<-- foglio con i dati dde
         Sheets(SWS).select
         'Application.ScreenUpdating = False         '<<<< evita lo "sfarfallamento" durante la macro
CellaFlag = "M1" '<<<-- Cambiare se necessario

(aggiungi cioe' le tre righe sfalsate a destra; se togli l' "apostrofo" davanti alla terza eviti lo sfarfallamento dei dati, magari lo fai quando sei tranquillo che la macro gira).

Per quanto riguarda le altre spiegazioni che dai, la mia opinione e' che l' analisi su come organizzare i dati, che cosa fare con funzioni standard excel e che cosa fare con macro non la puoi fare che tu. Il forum puo' dare consigli e risposte a domande specifiche, ma certamente non e' in grado di trasformare le richieste funzionali in un prodotto finito.
La mia impressione e' che con excel quelle cose si fanno tranquillamente; ma intanto hai introdotto il bisogno di calcoli in real time e la cosa si complica ulteriormente, perche' probabilmente avrai bisogno di fare i calcoli man mano che i dati dde cambiano, e per questo dovrai usare il metodo SetLinkOnData come da post che ieri ti ha linkato Dylan. Questo in aggiunta alla macro "on time" che abbiamo discusso fin'ora e che vorrei aiutarti a far funzionare; quindi fai sapere riguardo i dubbi elencati in testa.

Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Richiesta Informazioni Excel DDE

Postdi limba864 » 16/04/08 08:51

Mitico Anthony 47 rispondo alle tue domande:
- nel foglio 2 compaiono, ogni minuto, delle righe con i dati di borsa storicizzati
- ho lanciato la macro e N1 si aggiorna man mano che passa un minuto e nel foglio 2 compare una nuova riga con i dati storicizzati. Ho anche azzerato N1 e riparte da 1 quando eseguo la macro
- in M2 ho usato 9.00 AM e in M3 5.25 PM; se formatto la cella del foglio 2(dove compare il numeretto decimale) viene fuori l'orario minuto per minuto
- ho aggiunto i nuovi codici (senza togliere l'apostrofo) e sembra tutto OK.
In merito alla elaborazione dei dati che mi servono, anche io penso che excel me li possa calcolare....Il brutto è che non sono un esperto. (solo grazie alla tua collaborazione, per la prima volta, ho usato le macro...). Ti chiedo se il Metodo SetlinkonData di Dylan deve essere applicato sulla stessa macro che mia hai elaborato o su una diversa. Ti ringrazio e ti saluto.
limba864
Utente Junior
 
Post: 13
Iscritto il: 12/04/08 07:19

Re: Richiesta Informazioni Excel DDE

Postdi Dylan666 » 16/04/08 09:12

La butto lì, al 90% è una cavolata :P :D
limba864 ha scritto:- in M2 ho usato 9.00 AM e in M3 5.25 PM;

Anthony47 ha scritto:Ho usato M2 ed M3 per impostare l' orario di inizio storicizzazione e quello di fine (metti in queste celle il valore in formato orario, es 09:00
Avatar utente
Dylan666
Moderatore
 
Post: 39988
Iscritto il: 18/11/03 16:46

Re: Richiesta Informazioni Excel DDE

Postdi limba864 » 16/04/08 09:26

E come si fa? Come posso ottenere le mie elaborazioni. Ti saluto Dylan 666
limba864
Utente Junior
 
Post: 13
Iscritto il: 12/04/08 07:19

Re: Richiesta Informazioni Excel DDE

Postdi Dylan666 » 16/04/08 09:44

ma devi proprio scrivere 9.00 AM? Non puoi scrivere 09:00?
Avatar utente
Dylan666
Moderatore
 
Post: 39988
Iscritto il: 18/11/03 16:46

Re: Richiesta Informazioni Excel DDE

Postdi limba864 » 16/04/08 09:53

Non avevo capito, scusa. Mi riferivo ad altro, cioè alla possibilità di ottenere delle elaborazioni con excel di dati in real time. Dovrei applicare un tuo precedente topic. (vedi sopra, anche la risposta di Anthony 47 del 15/04/08 delle ore 22.58). Per quanto riguarda l'orario è tutto ok!
limba864
Utente Junior
 
Post: 13
Iscritto il: 12/04/08 07:19

Re: Richiesta Informazioni Excel DDE

Postdi Anthony47 » 16/04/08 10:04

Criptico limba864, sai che non ho capito se adesso l' accantonamento dei dati ogni minuto funziona? Se SI, allora gli ultimi 2-3 messaggi sono superflui, perche' in excel esiste anche la notazione AM/PM (cioe' scrivere 17:00 e 5:00 pm e' equivalente; per i "due-punti" sappiate che questo dipende dal mio settaggio del separatore orario, che ho messo su ":").
Se invece ancora non funziona, allora vale la richiesta di ieri sera: formatta M2 ed M3 come numero e dimmi che cosa leggi.

Per l' uso di SetlinkonData, esso e " in aggiunta alla macro [. . .] che abbiamo discusso fin'ora", che si attiva "on time=a orario"; SetlinkonData invece imposta coma far partire una nuova macro al momento del cambiamento di un dato dde, e che dovrebbe fare le elaborazioni aggiuntive.

ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Richiesta Informazioni Excel DDE

Postdi Anthony47 » 16/04/08 10:07

PS: avevo aperto il topic prima che limba864 scrivesse l' ultimo messaggio, che mi pare chiarisce.

Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "Richiesta Informazioni Excel DDE":


Chi c’è in linea

Visitano il forum: Nessuno e 37 ospiti