Condividi:        

MT4->TXT->Xls

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

Re: MT4->TXT->Xls

Postdi Flash30005 » 29/07/11 23:33

Sicuramente!
Gianca532011 ha scritto:Semplice, funzionale e funzionante.

gli utenti con la tua stessa versione di office ti ringrazieranno ;)
Ma specifica che hai office 2007 o superiore perché con 2003 quel codice va "in panne"

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Sponsor
 

Re: MT4->TXT->Xls

Postdi Gianca532011 » 30/07/11 14:38

vero, utilizzo excel 2007.
saluti.
gianca53
Giancarlo
win 10 - Office 2016 Ita
Gianca532011
Utente Senior
 
Post: 326
Iscritto il: 27/05/11 10:18

Re: MT4->TXT->Xls

Postdi Gianca532011 » 03/08/11 14:03

Una domanda, anzi... due .
1) la formula data da Anthony per la definizione di un intervallo dinamico, qui riproposta, è possibile adattarla a un range tipo A6:G86, contenente 80 righe ? questa domanda è propedeutica alla n. 2

codice originale
Codice: Seleziona tutto
=SCARTO(Foglio2!$AF$6;MAX(0;SOMMA(--(LUNGHEZZA(Foglio2!$AF$6:$AF$1000)>0))-80);0;MIN(80;SOMMA(--(LUNGHEZZA(Foglio2!$AF$6:$AF$1000)>0)));1)


2) è possibile effettuare una scansione a ritroso di un grafico sulla base di intervalli dinamici fissi di 80 righe, leggendole da una tabella contenente per es. 1000 righe (A6:g1006) ?

In pratica su un grafico che si aggiorna di continuo vorrei, se possibile fare delle visual a ritroso , sempre mantenendo l'impostazione di 80 dati sull' asse tempo (X) previsti nel grafico attuale. Ciò a vantaggio di un buona leggibilità .
Grazie .
gianca532011
Giancarlo
win 10 - Office 2016 Ita
Gianca532011
Utente Senior
 
Post: 326
Iscritto il: 27/05/11 10:18

Re: MT4->TXT->Xls

Postdi Anthony47 » 26/05/16 22:39

Non ricordo perche' 5 anni fa le domande poste non trovarono risposte... e 5 anni dopo probabilmente non servono piu'...

C'e' una richiesta a proposito dei file a suo tempo allegati, vedere qui: viewtopic.php?f=26&t=106947

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

Re: MT4->TXT->Xls

Postdi Gianca532011 » 27/05/16 07:33

Ciao,
allego link per l'ultima versione funzionante in excel 2007 , nei grafici annessi si ottiene la derivata prima del prezzo , ma era un mio tentativo per identificare il momento di entrata in acquisto-vendita sul mercato forex. Ovviamente fallito :(
Attenzione, se usato con 2013 è necessario attivare excel come amministratore, poi si deve prima aprire excel e quindi caricare il file; nB questa procedura poi ha l'effetto collaterale di non permettere l'apertura diretta dei file con doppio click, ovvero mi dà errore.
Se qualcuno trova una spiegazione e un rimedio a questo pasticcio, sarei contento di leggerla.

Adesso devo uscire al rientro inserisco il progetto VBA cosi resta in " memoria " e magari lo aggiustiamo.



http://www.filedropper.com/provavba81
Giancarlo
win 10 - Office 2016 Ita
Gianca532011
Utente Senior
 
Post: 326
Iscritto il: 27/05/11 10:18

Re: MT4->TXT->Xls

Postdi fedeinve » 27/05/16 10:12

Ciao a tutti
innanzitutto grazie per la velocità di risposta. Ho visto il file di Giancarlo ed è fatto molto bene, complimenti. Io nella programmazione sono un neofita, dove posso darò il mio contributo. Partendo dal file di Giancarlo, che è esattamente quello che mi serviva, vorrei aggiungere la possibiltà di inserire indicatori che possono essere utili per fare un'analisi e spero di farlo con l'aiuto del forum in un ottica di condivisione.
A presto
fedeinve
Newbie
 
Post: 7
Iscritto il: 25/05/16 19:42

Re: MT4->TXT->Xls

Postdi Gianca532011 » 29/05/16 11:59

Ho salvato tutte le macro del progetto in un file word, ma come faccio a pubblicarlo in forma definitiva - visibile anche dopo n tempo - senza l'obbligo di usare i vari siti che forniscono alloggio i temporaneo? Penso che questa esigenza sia sentita anche da altri utenti che, magari dopo qualche mese o anni, vorrebbero consultare questa o quella macro ... cosa ne pensa la direzione del forum ?

Ps Posso fare un copia -incolla ma ne risulterebbe una pagina estesa x circa 150 righe.
Giancarlo
win 10 - Office 2016 Ita
Gianca532011
Utente Senior
 
Post: 326
Iscritto il: 27/05/11 10:18

Re: MT4->TXT->Xls

Postdi Anthony47 » 30/05/16 00:10

Puoi fare un Copia /Incolla, poi al codice applichi il tag "Code":
-selezioni il codice
-premi il pulsante Code, visibile sopra il textbox in cui stai scrivendo il messaggio.

Ne approfitto per chiederti l'origine del file MT4.exe, che l'uso del file che hai pubblicato mi chiede di mandare in esecuzione, cosa che per ora ho accuratamente evitato.
La spiegazione del mancato lancio del programma su XL2013 (ma forse e' un problema di versione di SO, non di versione XL) sta' nel fatto che le procedure di sicurezza nelle versioni piu' recenti impediscono di mandare in esecuzione codice potenzialmente maligno.

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

Re: MT4->TXT->Xls

Postdi Gianca532011 » 30/05/16 13:59

Ok , farò capia /incolla.

Il file MT4.exe è il motore della piattaforma Metatrader disponibile anche in versione gratuita previa registrazione. E' una piattaforma con la quale è possibile acquisire dati in tempo reale dal mercato delle valute per es EUR/USD, EUR/NZD ecc.
Il file excel scarica i dati -via DDE- da questa piattaforma che deve essere aperta, quindi attiva, come pure deve essere attivata la funzione DDE.
Se Vuoi posso allegare un link di installazione.Tra l'altro utilizzo anche un sw di programmazione che mi permette di confezionare sistemi esperti che possono autonomamente attivare ordini sulla base di indicatori specifici e chiudere gli ordini stessi una volta che siano state raggiunte opportune condizioni di profitto, oppure in caso di inversione di tendenza, oppure ove raggiunta una condizione di perdita nota (stop loss) .
Molto interessante, ma inutile dirlo sono 4/5 anni che ci lavoro -rigorosamente in demo - senza mai aver trovato la soluzione vincente vale a dire quella che mi permetterebbe la vita da nababbo. :lol:
ciao Anthony
Giancarlo
win 10 - Office 2016 Ita
Gianca532011
Utente Senior
 
Post: 326
Iscritto il: 27/05/11 10:18

Re: MT4->TXT->Xls

Postdi Gianca532011 » 30/05/16 14:07

Ecco il codice completo .

N.B. il progetto che segue funziona senza problemi su excel 2007, su 2013 e successivi è da testare.
Per tutte le versioni dovrà essere attivata la separazione dei decimali con il punto e non con la virgola, ovvero : File , opzioni, imp.avanzate ,opzioni di modifica, DESELEZIONA “utilizza separatori di sistema”, verifica che il separatore decimali sia il punto e il separatore di migliaia sia la virgola . Conferma OK.


Codice: Seleziona tutto
' In This workbook
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call StopTimer
Call EndTimer
End Sub

Private Sub Workbook_Open()
Call StartTimer
Call Start2
End Sub

'In Modulo 1
Public RunWhen As Double
Public Const cRunIntervalSecondi = 60 '<<=== in secondi
Public Const cRunWhat = "AggiornaDati"
Public Declare Function SetTimer Lib "user32" ( _
    ByVal HWnd As Long, _
    ByVal nIDEvent As Long, _
    ByVal uElapse As Long, _
    ByVal lpTimerFunc As Long) As Long

Public Declare Function KillTimer Lib "user32" ( _
    ByVal HWnd As Long, _
    ByVal nIDEvent As Long) As Long

Public TimerID As Long
Public TimerSeconds As Single

Public Sub StartTimer()
RunWhen = Now + TimeSerial(0, 0, cRunIntervalSecondi)
Application.OnTime EarliestTime:=RunWhen, _
Procedure:=cRunWhat, _
Schedule:=True
End Sub


Public Sub StopTimer()
On Error Resume Next
Application.OnTime EarliestTime:=RunWhen, _
Procedure:=cRunWhat, _
Schedule:=False

End Sub

Public Sub AggiornaDati()
Dim WB As Workbook
Dim sh As Worksheet
Dim RngIn As Range
Dim RngOut As Range
Dim iRow As Long
Dim CalcMode As Long

Set WB = Workbooks("ProvaVBA8_1.xlsm") '<<=== da CAMBIARE
Set sh = WB.Sheets("DDEInput") '<<=== da CAMBIARE
Range("c3:c5000").NumberFormat = "0.00000"
Range("D3:D5000").NumberFormat = "0.00000"
Range("E3:E5000").NumberFormat = "h:mm"
       

With sh
iRow = lastrow(sh, .Range("A:A"))
Set RngIn = .Range("A1:R1")
Set RngOut = .Range("A" & iRow).Offset(1, 0). _
Resize(1, RngIn.Columns.Count)
End With

'On Error GoTo XIT
With Application
CalcMode = .Calculation
.Calculation = xlCalculationManual
.ScreenUpdating = False
End With

RngOut.Value = RngIn.Value
Call StartTimer
'Call StartTimer2

XIT:
With Application
.Calculation = CalcMode
.ScreenUpdating = True
End With

End Sub

 Sub Start2()
    TimerSeconds = 60 ' how often to "pop" the timer.
    TimerID = SetTimer(0&, 0&, TimerSeconds * 1000&, AddressOf TimerProc)
End Sub

Sub EndTimer()
    On Error Resume Next
    KillTimer 0&, TimerID
End Sub


Sub TimerProc(ByVal HWnd As Long, ByVal uMsg As Long, _
        ByVal nIDEvent As Long, ByVal dwTimer As Long)
       
Sheets("DDEInput").Select
CellaFlag = "O1"
dati = "J2:N2"
DWS = "Foglio2"
CWS = ActiveSheet.Name
     
       Range("c2:c5000").NumberFormat = "0.00000"
    Range("d2:d5000").NumberFormat = "0.00000"
    Range("e2:e5000").NumberFormat = "h:mm"
   
Range(dati).Copy
Sheets(DWS).Select
Range("a65536:N65536").End(xlUp).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False

End Sub
       
           
Function lastrow(sh As Worksheet, _
Optional Rng As Range)
If Rng Is Nothing Then
Set Rng = sh.Cells
End If

On Error Resume Next
lastrow = Rng.Find(What:="*", _
After:=Rng.Cells(1), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row

On Error GoTo 0
End Function


' In Modulo 2
Sub Eliminadati()
Set sh = ThisWorkbook.Worksheets("DDEInput")
    Range("A3:E50000").Select
    Selection.ClearContents
End Sub

Public Sub Contadati()
    Dim sh As Worksheet
    Dim lRiga  As Long
    Dim lng As Long
    Set sh = ThisWorkbook.Worksheets("DDEInput")
    With sh
        lRiga = .Range("A" & .Rows.Count).End(xlUp).Row
        lng = Evaluate("=COUNTA(" & sh.Name & "!A3:A" & lRiga & ")")
        MsgBox lng
    End With
    Set sh = Nothing
 End Sub

Sub Cancella()
Set sh = Worksheets("Foglio2")
    Range("$A$2:$E$5000").Select
    Selection.ClearContents
End Sub


Giancarlo
win 10 - Office 2016 Ita
Gianca532011
Utente Senior
 
Post: 326
Iscritto il: 27/05/11 10:18

Re: MT4->TXT->Xls

Postdi fedeinve » 30/05/16 15:31

Grazie Giancarlo
fedeinve
Newbie
 
Post: 7
Iscritto il: 25/05/16 19:42

Re: MT4->TXT->Xls

Postdi fedeinve » 31/05/16 13:49

Ciao Giancarlo,
ho copiato il codice che hai messo nel post precedente nel file che avevi dato, nominato come ProvaVBA8_1, è corretta come procedura? Ho notato che quando apro il file e attivo la macro, nel foglio DDEinput memorizza i prezzi ogni minuto senza problemi, mentre nel foglio 2 inizia a memorizzarli correttamente alcuni minuti dopo, prima esce sempre #REF!. E' così oppure sono io che non ho attivato qualcosa?
Grazie
fedeinve
Newbie
 
Post: 7
Iscritto il: 25/05/16 19:42

Re: MT4->TXT->Xls

Postdi Gianca532011 » 31/05/16 16:46

Ciao Federico,
No. il file è già completo di macro, quindi inutile se non dannoso aggiungere il codice che ho postato appena sopra, che ho messo a parte con lo scopo di documentare le macro inserite, perchè come sai l'upload del file ha carattere temporaneo, dopo un mese ...nisba.

Per l'errore francamente è capitato anche a me (con excel 2013) dovrei però verificare con il 2007 x vedere se si ripete .
Considera inoltre che i miei ricordi, nello specifico, non arrivano al 2011, ho riletto l'ultimo post di quel periodo e mi sembra che allora tutto filasse bene.
Giancarlo
win 10 - Office 2016 Ita
Gianca532011
Utente Senior
 
Post: 326
Iscritto il: 27/05/11 10:18

Re: MT4->TXT->Xls

Postdi Gianca532011 » 31/05/16 18:14

Ciao,
sotto al "rif" nel foglio DDEinput , caselle L ed M ,c'è la funzione di calcolo della media, se non ricordo male l'avevo inserita utilizzando ad es. un campionamento dati di 5 secondi e poi calcolavo la media. Mi sfugge però dove sta il numero per il quale dividere. es. con 5 secondi in un minuto ho 12 intervalli , quindi devo dividere per questo numero per ottenere la media semplice, ma dove sia collocato questo divisore ... per ora non lo so .
Giancarlo
win 10 - Office 2016 Ita
Gianca532011
Utente Senior
 
Post: 326
Iscritto il: 27/05/11 10:18

Re: MT4->TXT->Xls

Postdi fedeinve » 01/06/16 14:38

Ciao,
ho guardato la media di cui parlavi prima, ho visto che è una media a 12 periodi, in cui si sommano gli ultimi 12 prezzi e si dividono per 12, dov'è la formula non lo so, ma sarebbe interessante trovarlo, perchè poi è possibile calcolare la media anche per altri periodi e con i prezzi che già abbiamo, fare altri indicatori utili per le analisi di studio.
fedeinve
Newbie
 
Post: 7
Iscritto il: 25/05/16 19:42

Re: MT4->TXT->Xls

Postdi Gianca532011 » 08/06/16 20:33

ciao, alla fine ho trovato la formula "incriminata" che trovi da menù: Formule , gestione nomi, ti compare la maschera con i due riferimenti Cbid e Dask, fai la selezione e ti ritrovi le due istruzioni:

x Cbid

=SCARTO(DDEInput!$A$1;CONTA.VALORI(DDEInput!$A:$A)-12;2;12;1)

x Dask
=SCARTO(DDEInput!$A$1;CONTA.VALORI(DDEInput!$A:$A)-12;3;12;1)

per la spiegazione, mi spiace ma ti confonderei le idee, meglio se vedi post precedenti di Anthony, oppure puoi fare esperimenti modificando la formula stessa in funzione dei tempi che ti interessano (1-5-15-20 minuti o secondi etc) e relativa numerosità della media .
Giancarlo
win 10 - Office 2016 Ita
Gianca532011
Utente Senior
 
Post: 326
Iscritto il: 27/05/11 10:18

Re: MT4->TXT->Xls

Postdi Gianca532011 » 09/06/16 06:37

in funzione dei tempi che ti interessano (1-5-15-20 minuti o secondi etc) e relativa numerosità della media .


Chiarisco: i tempi di campionamento sono espressi in secondi e li trovi nelle primissime righe del progetto

Codice: Seleziona tutto
Public RunWhen As Double
Public Const cRunIntervalSecondi = 60 '<<=== in secondi


sulla base delle tue esigenze determini la media di tuo interesse impostando la numerosità del denominatore.
Giancarlo
win 10 - Office 2016 Ita
Gianca532011
Utente Senior
 
Post: 326
Iscritto il: 27/05/11 10:18

Re: MT4->TXT->Xls

Postdi fedeinve » 20/06/16 16:55

Ciao,
dal file di Giancarlo si riesce ad avere in excel tutti i prezzi in tempo reale della metratrader. Vorrei sapere se è possibile con una macro o una formula come quella postata sopra per la media, che mi possa salvare gli ultimi 50 prezzi e che si aggiorni ad ogni variazione, per avere sempre un campionamento fisso ma aggiornato su cui lavorare. Io non sono capace, qualcuno mi potrebbe dare una mano?
Grazie anticipatamente
Federico
fedeinve
Newbie
 
Post: 7
Iscritto il: 25/05/16 19:42

Precedente

Torna a Applicazioni Office Windows

Chi c’è in linea

Visitano il forum: Nessuno e 50 ospiti