Announcement

Collapse
No announcement yet.

Mt4 collegata con foglio di calcolo

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    #46
    Fino a qua l'ho fatto... come da post #41. Quindi il file .csv è collegato al foglio data base il quale è collegato al foglio di calcolo.
    Quindi dal foglio di Calc (excel) premo "dati -> sorgente dati" si apre una finestra, seleziono il database e subito dopo seleziono cinque record e li trascino nell'area dati (sempre come in immagine post #41, dove si vede bene in GBP 1 giorno) e si modifica il foglio di Calc interno allo stesso file, con l'algoritmo e le sue complessissime formule ^_^

    Quindi penso che il primo step... ciò che hai postato, si potrebbe dire fatto.

    Penso manchi questo passaggio finale, come hai detto:

    "Perchè la query:
    Nel database diventano necessarie le query perchè ti permettono di "staccarti" dalla quantità di righe che leggi dal file e selezionare solo quelle che ti servono indipendentemente da quante sono in totale, la quantità di righe che si faranno selezionare alla query saranno quelle che andranno nei vari spazi delle tue tabelle."

    Io, ho provato a fargli girare questa macro:

    ""Sub Aggiorna
    ThisComponent.DatabaseRanges.getbyname("Importa1") .refresh
    ThisComponent.DatabaseRanges.getbyname("Importa2") .refresh
    ThisComponent.DatabaseRanges.getbyname("Importa3") .refresh
    ThisComponent.DatabaseRanges.getbyname("Importa4") .refresh
    ThisComponent.DatabaseRanges.getbyname("Importa5") .refresh
    End Sub"

    Ma la macro non va...
    Stiamo allo stesso punto?


    Comment


      #47
      Originally posted by biofede View Post
      Quindi dal foglio di Calc (excel) premo "dati -> sorgente dati" si apre una finestra, seleziono il database e subito dopo seleziono cinque record e li trascino nell'area dati (sempre come in immagine post #41, dove si vede bene in GBP 1 giorno) e si modifica il foglio di Calc interno allo stesso file, con l'algoritmo e le sue complessissime formule ^_^
      Se interpreto bene quello che hai detto tu selezioni i record e li trascini nel foglio di calcolo, questo credo sia semplicemente un copia e incolla e i dati restano statici.
      La procedura che ti permette il collegamento dovrebbe farti selezionare una tabella e non delle righe, perchè il riferimento dell'area del foglio di calcolo deve andare ad una intera tabella (che avrà molte righe, per questo poi si userà una query, ma la vediamo dopo), anche perchè se alla tabella del database vengono aggiunte righe tu vedrai sempre le cinque che hai selezionato.
      Poi magari open office lavora in modo diverso e ti sto mandando fuori strada.

      Per aiutarmi a capire, se hai tempo e voglia, dovremmo creare un database solo per le prove e cominciare a definire quello, poi passare al foglio di calcolo, ma facendo tutto passo passo altrimenti mi incasino anche io.
      Fammi sapere.

      Comment


        #48
        Originally posted by MaDo View Post
        Fammi sapere.

        image_478.png


        Questa immagine è solo una parte del foglio di calcolo di Open Office. In particolare qua si vede solo il foglio da me organizzato per l'importazione dei dati dal data base il quale è collegato al file .cvs. Quindi dalla finestrella, seleziono il data base, lo apro e mi compaiono i record aggiornati della coppia in esame. Ne seleziono 5 e tramite la freccetta verde li trascino nell'area dati. Questa area dati è collegata con incolla speciale al foglio di calcolo interno allo stesso file dove c'è l'algoritmo del sistema, e in questo caso in figura a GBP 1 giorno. Quindi sul file di Calc di Open Office ho 7 fogli, uno è dove ci sono tutte le aree dati collegati (quella in immagine) agli altri restanti 6 fogli dove ci sono le coppie che trado (eurusd, usdcad, gbpusd, nzdusd, audusd, usdjpy) con i vari time frame.

        Speriamo che mi son spiegato bene ^_^

        PS: io ho tanta voglia di fare questa cosa... e ti ringrazio per la disponibilità

        Adesso vedo di organizzare un file di esempio per farmi capire meglio... ma penso che dovresti poi scaricarti OpenOffice! A dopo.

        Comment


          #49
          Originally posted by biofede View Post
          Quindi dalla finestrella, seleziono il data base, lo apro e mi compaiono i record aggiornati della coppia in esame. Ne seleziono 5 e tramite la freccetta verde li trascino nell'area dati.
          Questa è la parte che non riesco a capire, il fatto che devi trascinare i record nel foglio di calcolo.
          Supponendo che il file csv abbia solo 5 righe e tu esegui il tutto come hai spiegato, se poi il file csv viene modificato mantenendo la dimensione di 5 righe ma con contenuto diverso cosa succede?
          Senza trascinare di nuovo i dati il foglio di calcolo mostra i dati vecchi o quelli nuovi?

          Comment


            #50
            Originally posted by MaDo View Post
            ... righe ma con contenuto diverso cosa succede?Senza trascinare di nuovo i dati il foglio di calcolo mostra i dati vecchi o quelli nuovi?
            Ecco... non succede niente, fino a quando non fai il drag & drop dei nuovi 5 'open', 'close', 'low', 'high' e 'tick'. E lì, il computo delle operazioni mi da delle indicazioni di prezzo. Che io dovrei eseguire per entrare a mercato e cercare di non perdere. Mostra quindi sempre, l'ultimo aggiornamento dati nel time frame di riferimento.

            Mi piacerebbe trovare il modo di aggiornare, senza che io facessi il drag & drop manuale. Penso che bisognare collegare la benedetta area dati (sull'immagine GBP 1 giorno carattere ombrati, 'open', 'close', 'low', 'high' e 'tick' e "intestazione data,ora,etc.") con gli ultimi 5+1 record chiusi del file .csv e comunque presenti nel file del data base.

            Fai conto che la macro non mi funziona, a me.... ThisComponent.DatabaseRanges.getbyname("Importa1") .refresh - pero' è quello che cerco io. Immagine che "Importa1" è l'area dati di GBP 1 giorno. Mi piacerebbe quindi trovare una via del refresh del foglio di excel o di calc (openoffice). ^_^
            Poi io la macro la metto sul foglio di calcolo, non è che la devo mettere sul database?

            La cosa delle query sinceramente stavo a leggere qualcosa, anche a vedere. Mi avevi fatto notare che potevano servire ad estrapolare gli ultimi 5+1 record del file del data base aggiornato al suo time frame di riferimento? Sinceramente, sto ancora seguendo quello spunto. Poi una volta selezionati con la query, sempre se è possibile... sarà necessario il collegamento con area "Importa1"!

            Comunque, per assurdo renderlo aggiornabile in tempo reale è molto più facile. Con il collegamento DDT della metatrader, come mi faceva notare un amico della chat, un indicatore o un foglio di calcolo come ad esempio un "market watch" per la strategia Ichimokuun lo vedi grazie all'importazione delle ultime n chiusure. Ad esempio 14 per l'RSI o per me quattro/cinque record. Ma per adesso sempre con il drag & drop manuale. :72.bandit_80_anim_g Si potrebbero fare cose simpatiche e utili. Un'alternativa al linguaggio della piattaforma del broker, Mt4 o piattaforme a noleggio per l'analisi dati, ma sempre ognuna con il proprio linguaggio. Un foglio di calcolo ti puoi sbizzarrire con un po' di matematica. Ti puoi fare una dasboard con gli indicatori multiframe con le caselle che cambiano colore, grafici e via dicendo ^_^. Tutto qua.

            Mi son fatto un giro per il web è ne fanno di caruccie... anche complesse con in botto di fogli e dati a non finire :03.bigsmile_80_anim Non lo so se è fantasia metropolitana, ma da un foglio di excel puoi fare anche la compra/vendita con la MT4 se non addirittura con altre piattaforme, ma qua stiamo oltre... tocca fa un team super specializzato :_lol:
            Last edited by biofede; 20-12-2015, 02:52.

            Comment


              #51
              Originally posted by biofede View Post

              Ecco... non succede niente, fino a quando non fai il drag & drop dei nuovi 5 'open', 'close', 'low', 'high' e 'tick'. :
              Questo mi fa presupporre che il collegamento non è dinamico.

              Originally posted by biofede View Post

              La cosa delle query sinceramente stavo a leggere qualcosa, anche a vedere. Mi avevi fatto notare che potevano servire ad estrapolare gli ultimi 5+1 record del file del data base aggiornato al suo time frame di riferimento? Sinceramente, sto ancora seguendo quello spunto. Poi una volta selezionati con la query, sempre se è possibile... sarà necessario il collegamento con area "Importa1"! :
              Si esatto, non ti interessa più la lunghezza in righe del file tu leggi sempre le ultime n righe.

              Originally posted by biofede View Post

              Comunque, per assurdo renderlo aggiornabile in tempo reale è molto più facile. Con il collegamento DDT della metatrader, come mi faceva notare un amico della chat, un indicatore o un foglio di calcolo come ad esempio un "market watch" per la strategia Ichimokuun lo vedi grazie all'importazione delle ultime n chiusure. :
              Non conosco il collegamento DDT, forse ti riferisci al DDE, se è così so che si possono esportare i dati in tempo reale ma in ogni cella puoi avere il valore del momento aggiornato ad ogni tick e nulla più.
              Non so come si faccia ad avere le ultime n chiusure ma, se hai un link da guardare o se il tuo amico può postare qui un esempio, me lo posso studiare.


              Per evitare di incasinare il mio pc nuovo da 10 giorni preparo una macchina virtuale e ci installo Open Office così mi faccio le mie prove.
              In attesa di maggiori informazioni sul collegamento DDE (o DDT che sia) lavorerò sul progetto attualmente in corso.

              Di mio sto studiando il codice del''indicatore Period_Converter_OptMOD per creare un indicatore che ad ogni nuova barra mi scriva il file con sempre e solo le ultime n righe, questo ci permetterebbe rendere più semplice il progetto.

              Progetto, progetto, progetto che noia chiamarlo solo progetto, biofede devi trovargli un nome!:03.bigsmile_80_anim


              Comment


                #52
                si si... DDE.. ieri sera era tardissimo e ero tornato da due :122.WAsmile: - Il collegamento non è dinamico ma devo stare sempre a dragdroppare.
                Usando i valori dinamici delle DDE il sistema lo fai girare sopra le n chiusure dragdroppate. Invece con una "condizione si possono ricavare i max e min in tempo reale".
                un nome... pensiamoci ^_^

                Comment


                  #53
                  Ho installato Libre Office e mi sono studiato il foglio di calcolo, noto con piacere che è al pari di Excel quindi possiamo fare un gran bel lavoro senza utilizzare il database, biofede fatti un bel caffè perchè adesso ti faccio lavorare.
                  Posto una guida passo passo per tutti gli utenti.

                  Prima parte: collegare un file csv al foglio di calcolo

                  Dal menu Inserisci selezionare Foglio da file...


                  Selezione file 1.PNG


                  Portarsi nel percorso dei file della Metatrader e selezionare il file desiderato

                  Selezione file 2.PNG


                  Nella finestra che compare impostare come separatore il punto e virgola e premere OK.

                  Selezione file 3.PNG


                  Nella finestra successiva spuntare la casella Collega e premere OK

                  Selezione file 4.PNG


                  A questo punto il file è collegato, salvarlo (io con grande fantasia l'ho chiamato Progetto biofede).
                  Ripetere l'operazione per ogni file che si vuole collegare.
                  Ogni volta che il file viene aperto chiederà se deve aggiornare i collegamenti (rileggere il file csv).

                  Selezione file 5.PNG

                  Comment


                    #54
                    Se si lavora con il file aperto e si necessita di aggiornare i collegamenti (rileggere il file csv) dal menu File premere Ricarica.

                    Selezione file 6.PNG


                    In questo modo abbiamo un foglio di calcolo che ci presenta i dati contenuti nei file csv.
                    La lunghezza del file csv ci impedisce di utilizzarlo cosi come è ma tramite opportune formule leggeremo solo le ultime n righe che ci interessano, quando ricarichiamo il foglio i dati saranno di più o di meno ma le formule che inseriremo ci faranno leggere sempre e solo le ultime righe indipendentemente da quante sono.

                    Preparo il prossimo post...

                    Comment


                      #55
                      In volata, si stacca dal gruppo e appronta la salita da solo... alla conquista della maglia rosa! :88.bike_80_anim_gif

                      :_applauso:

                      PS: mi ci viene da sorridere, alla fine hai installato Libre Office e non Open Office! Tanto è la stessa cosa, pero' mi fa ridere la cosa.

                      Comment


                        #56
                        Originally posted by biofede View Post
                        In volata, si stacca dal gruppo e appronta la salita da solo... alla conquista della maglia rosa! :88.bike_80_anim_gif

                        :_applauso:

                        PS: mi ci viene da sorridere, alla fine hai installato Libre Office e non Open Office! Tanto è la stessa cosa, pero' mi fa ridere la cosa.
                        Googolando ho letto questo e agito di conseguenza:

                        "Il risultato pratico è che LibreOffice può usare il codice di OpenOffice senza problemi mentre non vale il contrario, ossia che Openoffice usi il codice di Libreoffice.
                        Questo significa che i miglioramenti del programma OpenOffice possono essere incorporati in LibreOffice, mentre quello che si trova in LibreOffice non può essere portato in OpenOffice.

                        LibreOffice e Apache OpenOffice sono ugualmente buone scelte per sostituire gratis Microsoft Office e non ci sono molte differenze visibili a occhio.
                        Per scegliere qual è meglio, bisogna considerare il vantaggio di usare LibreOffice, sia perchè in grado di incorporare più funzioni e miglioramenti (grazie alla diversa licenza), sia perchè viene sviluppato più rapidamente con nuove versioni rilasciate molto più frequentemente rispetto ad Apache OpenOffice."

                        Comment


                          #57
                          Seconda parte: trovare la posizione delle ultime n righe
                          Per trovare la posizione delle ultime righe useremo la formula CONTA.VALORI() passando come riferimento la colonna A del foglio desiderato, in pratica ci limitiamo a contare tutte le celle che contengono qualcosa, non avendo il file csv intestazioni il valore che ci viene restituito corrisponde al numero di righe del file.
                          Inserisco un nuovo foglio che chiamo "Formule" dove predispongo tutto il lavoro di recupero delle righe.
                          Nel mio esempio preparo il foglio per la lettura delle ultime 5 righe, quindi metto la formula nella posizione che sarà quella della quinta riga.
                          La formula ha la seguente sintassi CONTA.VALORI(nomefoglio.intervallo) e sara la seguente CONTA.VALORI(EURUSD_1440.A:A)

                          Ultime righe 1.PNG

                          Per avere la posizione delle righe precedenti utilizziamo una semplice sottrazione

                          Ultime righe 2.PNG

                          e trasciniamo per completare

                          Ultime righe 3.PNG



                          Questa parte del foglio Formule ci restituisce la posizione delle ultime 5 righe nel foglio del simbolo. Se si ricaricano i dati questi valori cambieranno a seconda della quantità di righe.
                          Ora che sappiamo quali sono le ultime 5 righe dobbiamo andare a leggerne il loro contenuto.

                          Comment


                            #58
                            Terza parte: l'indirizzo delle celle da leggere
                            Leggere il valore di una cella in un foglio di calcolo è molto semplice, basta inserire la formula =A1 per leggere il valore in A1.
                            Il problema si pone quando non sappiamo dove sia la cella da leggere, che è il nostro problema.
                            Qui andiamo ad utilizzare la formula INDIRIZZO() che ci permette di costruire la combinazione di riga, colonna e foglio.
                            La battaglia navale sul foglio di calcolo! :42.rofl_80_anim_gif

                            La formula INDIRIZZO() è così strutturata INDIRIZZO(riga;colonna;riferimento;tipo;foglio), i valori riferimento e tipo sono opzionali e a noi non servono.
                            Inseriamo nella cella C2 la seguente formula =INDIRIZZO($A2;1;1;;"EURUSD_1440") il valore che verrà restituito sarà l'indirizzo della cella nella colonna A della riga 10 del foglio EURUSD_1440.
                            Faccio notare che il riferimento di riga nella colonna A2 è stato scritto con il simbolo del dollaro davanti, il simbolo del dollaro davanti ad un valore di riga o di colonna serve per "bloccare" quel valore durante il trascinamento.
                            In pratica se trascino verso destra la formula il riferimento ad "A" rimane invariato, mentre se trascino verso il basso il riferimento a "2" si aggiorna al cambio di riga.
                            Se volessi bloccare completamente il valore in modo che non cambi al trascinamento della formula usero la sintassi $A$2.
                            Se invece uso la sintassi normale A2 la formula varia sia che la si trascini a destra che in basso.
                            Indirizzo 1.PNG


                            Trasciniamo la nostra formula in basso per completare la serie di indirizzi per la colonna A (la colonna della data/ora).
                            Indirizzo 2.PNG


                            Ora trasciniamo la formula a destra (come vedete il riferimento alla cella A2 non cambia) e correggiamo il valore di colonna da restituire con il numero 2 (il secondo parametro).
                            La formula ci restituirà l'indirizzo della della colonna B della riga 10 (il prezzo Open).
                            Trasciniamo verso il basso anche questa per completare la serie di indirizzi.
                            Indirizzo 3.PNG



                            Ripetiamo quanto sopra per le altre colonne, abbiamo compilato la serie di indirizzi di tutte le celle che ci servono.
                            La colonna Indirizzo A contiene l'indirizzo di tutte le celle delle 5 righe della data, la colonna Indirizzo B contiene l'indirizzo di tutte le celle delle 5 righe dell'Open e cosi via.
                            E' facile visivamente verificare che tutti gli indirizzi siano giusti. Indirizzo 4.PNG


                            Ripetiamo di nuovo il tutto pe ogni foglio csv collegato, è noioso da fare ma poi non è più necessario intervenire. Indirizzo 5.PNG


                            Ora sappiamo dove sono tutte le celle che ci servono.
                            La serie di formule INDIRIZZO() prende sempre come riferimento i valori restituiti dalla serie di formule CONTA.VALORI() quindi quando si ricaricano i dati se i valori di "Ultime 5 righe" cambiano di conseguenza cambiano automaticamente tutti gli indirizzi delle celle da leggere.

                            Nessun commento? :43.whew_80_anim_gif

                            Comment


                              #59
                              Una cosa... ma invece di fare il foglio sul file di calcolo, di ogni .csv, non si potrebbe utilizzare CONTA.VALORI tramite "visualizza->sorgente dati" e applicare:
                              INDIRIZZO(riga;colonna;riferimento;tipo;foglio) con in aggiunta il nome del file di riferimento?

                              Comment


                                #60
                                Originally posted by biofede View Post
                                Una cosa... ma invece di fare il foglio sul file di calcolo, di ogni .csv, non si potrebbe utilizzare CONTA.VALORI tramite "visualizza->sorgente dati" e applicare:
                                INDIRIZZO(riga;colonna;riferimento;tipo;foglio) con in aggiunta il nome del file di riferimento?
                                Le formule del foglio di calcolo quelle sono e quelle rimangono non si possono modificare, la formula INDIRIZZO ha quei parametri e non si possono aggiungere altri.
                                Per quale motivo vuoi usare una sorgente dati?

                                Comment

                                Working...
                                X