AIUTO ...... per EXCEL (1 Viewer)

FIB

Nuovo forumer
Scusate l'intromissione....
*
Senza saperlo penso di essere già stato tempo fa, fra voi....
*
Almeno mi pare di ricordare molti dei NICK di un tempo...
sto parlando di un sito penso fra i primi ad aver attivato una chat...
*
Se così fosse datemi conferma....
*
(tanto per ricordare qualcosa... alcuni erano migrati dal forum di borse.it)
*
Siete VOI?
*
Vito...
*

E come primo post..... propongo un problema da risolvere......
--------------------------------------------------------------------------------
Dedicato ai maestri di EXCEL
*
Problema:
Consentire ad excel di prelevare i dati continuamente aggiornati dalla piattorma di trading tramite DDE. (utilizzo QUICK TRADE di IMIWEB)
*
Ogni tot tempo (3-5-15-60 minuti ecc...) confermare i dati precedenti e posizionarsi su nuove celle vuote dove indicare apertura massimo minimo prezzo e volumi.... chiaramente riferiti ai 3-5 ecc... minuti.....)ultimi....
Situazione questa che consente di crearsi in tempo reale dellle candele... sul grafico..... e rendere operativo il TS intempo reale..
*
esempio
data ora Apertura massimo minimo prezzo volumi
28/01/2004 9.00 151,0 153,0 150,0 151,0 1.000,0
28/01/2004 9.05 151,0 155,0 151,0 154,0 1.000,0
28/01/2004 9.10 154,0 158,0 154,0 157,0 2.000,0

--------------------------------------------------------------------------------

Risolvi il problema:
*
*
*
*
Ringrazio per le risposte....
 

Herman

Forumer attivo
Ciao Vito,

l'avevo salvata da una mailing list, potrebbe esserti utile. :)

*************************************************

un funzionamento "a tempo" della macro e' ottenibile con la funzione ON TIME
:

registra una macro 1 con questa stringa:

Application.OnTime Now + TimeValue("00:01:00"), "Macro2"

niente altro, poi nella macro 2 inserisci tutti i comandi che vuoi, per
esempio :

Range("A1:A12"). Select
Selection .Copy

Range ("B1:B12").Select
ActiveSheet. Paste Special etc. (per copiare solo i valori e non i
collegamenti o le formule)

La macro 2 dovra' terminare con il comando :

Macro1

per cui il sistema torma a macro 1, aspetta 1 minuto, e rifa' il giro.


Per fermare, inserisci all'inizio di macro 1 questa istruzione :

if Range ("quello che ti e' comodo") = "fine"
GoTo fine

e poco prima di End Sub :

fune:

in questo modo, bastera' scrivere "fine" nel range che hai scelto, e la
macro 1 si ferma.

**********************************

ciauz
Ermanno
 

FIB

Nuovo forumer
Ciao Ermanno,
Niente da fare non riesco proprio a gombinare nulla.
*
Praticamente la funzione dovrebbe:
1) primi 5 minuti....
leggere in real time i valori tramite DDE
*
esempio cella a2 (valore prezzo) con collegamento DDE
===> =IWDDE|STOCK_PRICE!'135692?contractPrice'*1
*
dopo cinque minuti la cella A2 deve copiare il collegamento DDE sulla cella A3 e confermare i valori numerici come numeri cancellando il riferimento al collegamento DDE
*
e così via
*
Chiaramente per i massimi e iminimi deve effettuare i conteggi sulla base dei nuovi massimi e minimi raggiunti in quei cinque minuti.
*
Spero di non aver incasinato un pò troppo la situazione....
Se puoi darmi una mano .....
*
Attendo......
*
L'invito è rivolto anche ad altri chiaramente....
 

Herman

Forumer attivo
Mi spiace ma non ne ho la competenza, l'aveva salvata in caso di necessità ma non mi è mai servita, ho sella ma non uso il dde, sorry :)
 

FIB

Nuovo forumer
Herman ha scritto:
Mi spiace ma non ne ho la competenza, l'aveva salvata in caso di necessità ma non mi è mai servita, ho sella ma non uso il dde, sorry :)
______________________________________________________
ti ringrazio per averci provato....
spero ci siano altri che possano darmi una mano....
*
grazie di nuovo :sad:
 

Ed

Forumer storico
FIB ha scritto:
Ciao Ermanno,
Niente da fare non riesco proprio a gombinare nulla.
*
Praticamente la funzione dovrebbe:
1) primi 5 minuti....
leggere in real time i valori tramite DDE
*
esempio cella a2 (valore prezzo) con collegamento DDE
===> =IWDDE|STOCK_PRICE!'135692?contractPrice'*1
*
dopo cinque minuti la cella A2 deve copiare il collegamento DDE sulla cella A3 e confermare i valori numerici come numeri cancellando il riferimento al collegamento DDE
*
e così via
*
Chiaramente per i massimi e iminimi deve effettuare i conteggi sulla base dei nuovi massimi e minimi raggiunti in quei cinque minuti.
*
Spero di non aver incasinato un pò troppo la situazione....
Se puoi darmi una mano .....
*
Attendo......
*
L'invito è rivolto anche ad altri chiaramente....

Ciao, il sistema esiste. Da qualche parte nel pc ho il file. Il tempo di trovarlo e te lo posto. Unico neo, devi adattarlo alla tua necessità, perché non è detto che faccia esattamente quello che hai chiesto.
Ed :)
 

Ed

Forumer storico
FIB ha scritto:
*
esempio cella a2 (valore prezzo) con collegamento DDE
===> =IWDDE|STOCK_PRICE!'135692?contractPrice'*1
*
dopo cinque minuti la cella A2 deve copiare il collegamento DDE sulla cella A3 e confermare i valori numerici come numeri cancellando il riferimento al collegamento DDE
*
e così via
*
Chiaramente per i massimi e iminimi deve effettuare i conteggi sulla base dei nuovi massimi e minimi raggiunti in quei cinque minuti.
*
Spero di non aver incasinato un pò troppo la situazione....
Se puoi darmi una mano .....
*
Attendo......
*
L'invito è rivolto anche ad altri chiaramente....

Ecco che ho trovato il codice. C'è anche altra roba, che non so se ti interessa, c'è anche il sonoro :)
Purtroppo prende in considerazione anche i volumi....insomma, dovresti adattarlo. Se non sei capace, spero che qualche altro amico possa aiutarti.

Quello che devi fare per far girare la macro è mettere la stringa di collegamento al dde IWDDE|STOCK_PRICE!'135692?contractPrice'*1 nella mia macro nella stringa denominata miotesto nel codice.

Ciao
Ed :)



Private Declare Function PlaySound Lib "winmm.dll" _
Alias "PlaySoundA" (ByVal lpszName As String, _
ByVal hModule As Long, ByVal dwFlags As Long) As Long

Private Const SND_FILENAME = &H20000
Private Const SND_ASYNC = &H1
Private Const SND_LOOP = &H8
Private Const SND_NODEFAULT = &H2


Private Sub Worksheet_Calculate()
ControlloNotifica 'richiama la macro in questione
'sull'evento Calculate del WorkSheet
End Sub
Sub ControlloNotifica()
Set WBook_Attuale = ThisWorkbook
Dim MioTesto As String
MioTesto = "InfoClient|SPZMIB30F1!'L_TIT(0)'"
'WBook_Attuale.SetLinkOnData "Formula di riferimento al titolo", "Macro richiamata"
WBook_Attuale.SetLinkOnData MioTesto, "Foglio1.fib"
End Sub

Sub fib()
Set cella = Foglio1.Cells(4, 2)
NoErrore = Not (IsError(cella))
If NoErrore Then
contratti = Foglio1.Cells(9, 3).Value 'lettura settaggio allarme contratti
contratti2 = Foglio1.Cells(15, 9).Value 'lettura settaggio allarme contratti istantaneo
numeroalert = Foglio1.Cells(9, 4).Value 'lettura settaggio n.alert contratti
inizioday = Foglio1.Cells(11, 2).Value 'lettura settaggio inizio contrattazioni
fineday = Foglio1.Cells(12, 2).Value 'lettura settaggio fine contrattazioni
orainizio = Foglio1.Cells(13, 2).Value ' lettura ora inizio registrazione barra
primariga = Foglio1.Cells(11, 3).Value ' lettura primariga
progriga = Foglio1.Cells(13, 4).Value ' lettura prograssivo riga
progressivo = Foglio1.Cells(13, 4).Value ' lettura prograssivo riga
pausa = Foglio1.Cells(9, 2).Value ' lettura pausa
pausacist = Foglio1.Cells(15, 8).Value ' lettura pausa contratti istantaneo
ordine = Foglio1.Cells(17, 3).Value ' lettura Ordine
inserito = Foglio1.Cells(17, 4).Value ' lettura inserimento ordine
tipo = Foglio1.Cells(17, 5).Value ' lettura inserimento ordine
valtreal = Foglio1.Cells(4, 2).Value 'lettura titolo
qtaden = Foglio1.Cells(4, 5).Value 'lettura quantità denaro
preden = Foglio1.Cells(4, 6).Value 'lettura prezzo denaro
qtalet = Foglio1.Cells(4, 7).Value 'lettura quantità lettera
prelet = Foglio1.Cells(4, 8).Value 'lettura prezzo lettera

' variabili per la gestione della 2a serie
orainizio2 = Foglio1.Cells(13, 8).Value ' lettura iniziobarra 2a serie
progriga2 = Foglio1.Cells(13, 10).Value ' lettura prograssivo riga 2a serie
pausa2 = Foglio1.Cells(9, 8).Value ' lettura pausa 2a serie
primariga2 = Foglio1.Cells(11, 9).Value ' lettura primariga serie 2
nr2 = 20
Set cella1 = Foglio1.Cells(17, 2)
NoErrore1 = Not (IsError(cella1))
End If
If NoErrore1 Then
titolo = Foglio1.Cells(17, 2).Value ' lettura titolo da ordinare
Else
titolo = 0
End If
fibarrotondato = Int(valtreal / 100) * 100
datatreal = Foglio1.Cells(4, 3).Value 'lettura ora
If inserito = 1 Then
esito = ""
Foglio1.Cells(18, 1) = esito
Foglio1.Cells(18, 2) = esito
Foglio1.Cells(18, 3) = esito
End If

If titolo > ordine And inserito = 1 Then
esito = ""
If tipo = -1 Then
vord = "C:\suoni\lasciato.wav "
Call PlaySound(vord, 0, SND_ASYNC)
esito = "Eseguito"
inserito = 0
Foglio1.Cells(17, 4).Value = inserito
Foglio1.Cells(18, 1) = esito
Foglio1.Cells(18, 2).Value = datatreal
Foglio1.Cells(18, 3).Value = titolo

End If
End If
If titolo < ordine And titolo > 0 And inserito = 1 Then
esito = ""
If tipo = 1 Then
vord = "C:\suoni\preso.wav "
Call PlaySound(vord, 0, SND_ASYNC)
esito = "Eseguito"
inserito = 0
Foglio1.Cells(17, 4).Value = inserito
Foglio1.Cells(18, 1) = esito
Foglio1.Cells(18, 2).Value = datatreal
Foglio1.Cells(18, 3).Value = titolo

End If
End If
fibarrotondato = Int(valtreal / 100) * 100
datatreal = Foglio1.Cells(4, 3).Value 'lettura ora
If datatreal < orainizio Then
primariga = 0
Foglio1.Cells(11, 6).Value = 0
progriga = progriga + 1
Foglio1.Cells(20 + progriga, 1).Value = inizioday
Foglio1.Cells(20 + progriga, 2).Value = inizioday + pausa
Foglio1.Cells(20 + progriga, 6).Value = valtreal
Foglio1.Cells(20 + progriga, 5).Value = valtreal
Foglio1.Cells(20 + progriga, 4).Value = valtreal
Foglio1.Cells(13, 4).Value = progriga

End If
If datatreal < orainizio2 Then
primariga2 = 0
Foglio1.Cells(11, 11).Value = 0
progriga2 = progriga2 + 1
Foglio1.Cells(20 + progriga2, nr2 + 1).Value = inizioday
Foglio1.Cells(20 + progriga2, nr2 + 2).Value = inizioday + pausa2
Foglio1.Cells(20 + progriga2, nr2 + 6).Value = valtreal
Foglio1.Cells(20 + progriga2, nr2 + 5).Value = valtreal
Foglio1.Cells(20 + progriga2, nr2 + 4).Value = valtreal
Foglio1.Cells(20 + progriga2, nr2 + 9).Value = qtaden
Foglio1.Cells(20 + progriga2, nr2 + 10).Value = preden
Foglio1.Cells(20 + progriga2, nr2 + 11).Value = qtalet
Foglio1.Cells(20 + progriga2, nr2 + 12).Value = prelet

Foglio1.Cells(13, 10).Value = progriga2
End If
If primariga = 0 Then
orainizio = inizioday
finebarra = inizioday + pausa
oracontratti = inizioday + pausacist ' definizione ora lettura contratti istantaneo
Foglio1.Cells(15, 10).Value = oracontratti
Foglio1.Cells(13, 2).Value = orainizio
Foglio1.Cells(13, 3).Value = finebarra
End If
If primariga2 = 0 Then
orainizio2 = inizioday
finebarra2 = inizioday + pausa2
Foglio1.Cells(13, 8).Value = orainizio2
Foglio1.Cells(13, 9).Value = finebarra2
End If
If datatreal > inizioday Then
primariga = 1
primariga2 = 1
Foglio1.Cells(11, 9).Value = 1
Foglio1.Cells(11, 3).Value = 1
Else
primariga = 0
primariga2 = 0
Foglio1.Cells(11, 3).Value = 0
Foglio1.Cells(11, 9).Value = 0
Foglio1.Cells(11, 6).Value = 0
Foglio1.Cells(13, 6).Value = 0
Foglio1.Cells(15, 10).Value = inizioday

ControlloNotifica
End If

vol1 = Foglio1.Cells(11, 6).Value
vo2l1 = Foglio1.Cells(13, 6).Value
vol2 = Foglio1.Cells(20 + progriga, 3).Value
vo2l2 = Foglio1.Cells(20 + progriga2, nr2 + 3).Value
fibparlato = Foglio1.Cells(9, 6).Value
voltreal = Foglio1.Cells(4, 4).Value 'lettura volume
diff = voltreal - vol1
diff2 = voltreal - vo2l1
oracontratti = Foglio1.Cells(15, 10).Value
If datatreal > oracontratti Then
oracontratti = datatreal + pausacist
Foglio1.Cells(15, 10).Value = oracontratti
Foglio1.Cells(12, 6).Value = voltreal
End If
vol3 = voltreal - Foglio1.Cells(12, 6).Value
Foglio1.Cells(15, 11).Value = vol3

If primariga = 0 Then
oracontratti = inizioday + pausacist ' definizione ora lettura contratti istantaneo
Foglio1.Cells(15, 10).Value = oracontratti
End If

If fibarrotondato <> fibparlato Then
'inserimento prezzo
Foglio1.Cells(9, 6).Value = Int(valtreal / 100) * 100
'inserimento volume
voce = "C:\suoni\" + Format(Int(valtreal / 100) * 100) + ".wav"
Call PlaySound(voce, 0, SND_ASYNC)
End If

If datatreal > (orainizio + pausa) Then
Sheets("Sistema").Select
Foglio1.Cells(9, 6).Value = Int(valtreal / 100) * 100
'inserimento volume
Foglio1.Cells(11, 6).Value = voltreal
voce = "C:\suoni\" + Format(Int(valtreal / 100) * 100) + ".wav"
Call PlaySound(voce, 0, SND_ASYNC)
progriga = Foglio1.Cells(13, 4).Value ' lettura prograssivo riga
progriga = progriga + 1
iniziobarra = Foglio1.Cells(13, 3).Value
finebarra = iniziobarra + pausa
If finebarra >= fineday Then
finebarra = fineday
End If
Foglio1.Cells(13, 2).Value = iniziobarra
Foglio1.Cells(13, 3).Value = finebarra
Foglio2.Cells(2, 1).Value = iniziobarra
Foglio2.Cells(2, 2).Value = finebarra
Foglio1.Cells(20 + progriga, 1).Value = iniziobarra
Foglio1.Cells(20 + progriga, 2).Value = finebarra
Foglio1.Cells(20 + progriga, 6).Value = valtreal
Foglio1.Cells(20 + progriga, 5).Value = valtreal
Foglio1.Cells(20 + progriga, 4).Value = valtreal
Foglio1.Cells(20 + progriga, 3).Value = diff
Foglio2.Cells(2, 3).Value = valtreal
Foglio2.Cells(2, 4).Value = valtreal
Foglio2.Cells(2, 5).Value = valtreal
Foglio1.Cells(13, 4).Value = progriga ' lettura prograssivo riga
Foglio1.Cells(13, 2).Value = iniziobarra
Foglio1.Cells(13, 3).Value = finebarra

End If
If datatreal > (orainizio2 + pausa2) Then
If progriga2 > 0 Then
denaro = Foglio1.Cells(20 + progriga2, nr2 + 10).Value
lettera = Foglio1.Cells(20 + progriga2, nr2 + 12).Value
tick = Foglio1.Cells(16, 9).Value
tickfuori = Foglio1.Cells(16, 10).Value
If valtreal > lettera Or valtreal = lettera Then
tickdiff = tick + diff2
End If
If valtreal < lettera And valtreal > denaro Then
tickfuori2 = tickfuori + diff2
tickdiff = tick
Foglio1.Cells(20 + progriga2 + 1, nr2 + 14).Value = diff2
Foglio1.Cells(16, 10).Value = tickfuori2
End If
If valtreal < denaro Or valtreal = denaro Then
tickdiff = tick - diff2
End If
End If
Foglio1.Cells(13, 6).Value = voltreal
voce = "C:\suoni\" + Format(Int(valtreal / 100) * 100) + ".wav"
Call PlaySound(voce, 0, SND_ASYNC)
progriga2 = Foglio1.Cells(13, 10).Value ' lettura prograssivo riga
progriga2 = progriga2 + 1
iniziobarra2 = Foglio1.Cells(13, 9).Value
finebarra2 = iniziobarra2 + pausa2
If finebarra2 >= fineday Then
finebarra2 = fineday
End If
Foglio1.Cells(13, 8).Value = iniziobarra2
Foglio1.Cells(13, 9).Value = finebarra2
Foglio1.Cells(20 + progriga2, nr2 + 1).Value = datatreal
' Foglio1.Cells(20 + progriga2, nr2 + 1).Value = iniziobarra2
' Foglio1.Cells(20 + progriga2, nr2 + 2).Value = finebarra2
Foglio1.Cells(20 + progriga2, nr2 + 6).Value = valtreal
Foglio1.Cells(20 + progriga2, nr2 + 5).Value = valtreal
Foglio1.Cells(20 + progriga2, nr2 + 4).Value = valtreal
Foglio1.Cells(20 + progriga2, nr2 + 3).Value = diff2
If diff2 > contratti2 Then
ct = Foglio1.Cells(16, 11).Value
prct = Foglio1.Cells(14, 10).Value
ct1 = ct + diff2
Foglio1.Cells(16, 11).Value = ct1
Foglio1.Cells(20 + progriga2, nr2 + 15).Value = diff2
Foglio1.Cells(prct + 1, 42).Value = datatreal
Foglio1.Cells(prct + 1, 43).Value = valtreal
Foglio1.Cells(prct + 1, 44).Value = diff2
prlotti = prct + 1
Foglio1.Cells(14, 10).Value = prlotti
End If
Foglio1.Cells(20 + progriga2, nr2 + 9).Value = qtaden
Foglio1.Cells(20 + progriga2, nr2 + 10).Value = preden
Foglio1.Cells(20 + progriga2, nr2 + 11).Value = qtalet
Foglio1.Cells(20 + progriga2, nr2 + 12).Value = prelet
Foglio1.Cells(20 + progriga2, nr2 + 13).Value = tickdiff
Foglio1.Cells(16, 9).Value = tickdiff

Foglio1.Cells(13, 10).Value = progriga2 ' scrittura prograssivo riga
Foglio1.Cells(13, 8).Value = iniziobarra2
Foglio1.Cells(13, 9).Value = finebarra2
End If
If vol2 < contratti Then
nalert = 0
Foglio1.Cells(9, 5).Value = nalert
End If

If vol2 > contratti Then
nalert = Foglio1.Cells(9, 5).Value
If nalert <= numeroalert Then
vcont = "C:\suoni\contratti.wav "
Call PlaySound(vcont, 0, SND_ASYNC)
nalert = nalert + 1
Foglio1.Cells(9, 5).Value = nalert
End If
End If
If vol3 > contratti2 Then
vcont = "C:\suoni\contratti.wav "
Call PlaySound(vcont, 0, SND_ASYNC)
End If


If progriga > 0 Then
Foglio1.Cells(20 + progriga, 3).Value = diff
Foglio1.Cells(20 + progriga, 7).Value = valtreal
Foglio2.Cells(2, 8).Value = diff
Foglio2.Cells(2, 6).Value = valtreal
Min = Foglio1.Cells(20 + progriga, 6).Value
Max = Foglio1.Cells(20 + progriga, 5).Value
op = Foglio1.Cells(20 + progriga, 4).Value
If op = 0 Then
op = valtreal
Foglio1.Cells(20 + progriga, 4).Value = op
Foglio2.Cells(2, 3).Value = op
End If
If Min = 0 Then
Foglio1.Cells(20 + progriga, 6).Value = valtreal
Foglio2.Cells(2, 4).Value = valtreal
End If
If Max = 0 Then
Foglio1.Cells(20 + progriga, 5).Value = valtreal
Foglio2.Cells(2, 5).Value = valtreal
End If

rminmax = Max - Min
Foglio1.Cells(20 + progriga, 8).Value = rminmax
Foglio2.Cells(2, 7).Value = rminmax
MediaRange = Foglio1.Cells(20 + progriga, 9).Value
Foglio2.Cells(3, 7).Value = MediaRange

If valtreal > Max Then
Foglio1.Cells(20 + progriga, 5).Value = valtreal
Foglio2.Cells(2, 5).Value = valtreal
End If
If valtreal < Min Then
Foglio1.Cells(20 + progriga, 6).Value = valtreal
Foglio2.Cells(2, 4).Value = valtreal
End If
End If
If progriga2 > 0 Then
Foglio1.Cells(20 + progriga2, nr2 + 3).Value = diff2
Foglio1.Cells(20 + progriga2, nr2 + 7).Value = valtreal
Min2 = Foglio1.Cells(20 + progriga2, nr2 + 6).Value
Max2 = Foglio1.Cells(20 + progriga2, nr2 + 5).Value
fibr1 = Foglio1.Cells(20 + progriga2, 38).Value
fibr2 = Foglio1.Cells(20 + progriga2, 40).Value
' Foglio1.Cells(17, 44).Value = fibr1
'Foglio1.Cells(18, 44).Value = fibr2
op2 = Foglio1.Cells(20 + progriga2, nr2 + 4).Value
If op2 = 0 Then
op2 = valtreal
Foglio1.Cells(20 + progriga2, nr2 + 4).Value = op2
End If
If Min2 = 0 Then
Foglio1.Cells(20 + progriga2, nr2 + 6).Value = valtreal
End If
If Max2 = 0 Then
Foglio1.Cells(20 + progriga2, nr2 + 5).Value = valtreal
End If
rminmax2 = Max2 - Min2
Foglio1.Cells(20 + progriga2, nr2 + 8).Value = rminmax2
If valtreal > Max2 Then
Foglio1.Cells(20 + progriga2, nr2 + 5).Value = valtreal
End If
If valtreal < Min2 Then
Foglio1.Cells(20 + progriga2, nr2 + 6).Value = valtreal
End If
End If
End Sub
 

FIB

Nuovo forumer
Grazie mille.....
Provo a verificare se riesco a gombinare da solo....
*
Altrimenti chiedo "Aiuto"
*
Di nuovo grazie
 

FIB

Nuovo forumer
Al posto della faccina cosa va indicato....
perchè non riesco a far funzionare nulla....
 

Users who are viewing this thread

Alto