Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Modificare datafeed file .csv mt4 per Tradestation
- # Modificare datafeed file .csv mt4 per Tradestation
- """ PREMESSA DATI METATRADER 4
- L’ora in MT4 è indicata come ora dell’Europa orientale (EET). Durante l’ora legale,
- EET è 3 ore avanti rispetto all’ora di Greenwich (GMT +3). Durante l’ora standard (invernale), EET è 2 ore avanti rispetto a GMT (GMT +2).
- Nell’Europa orientale (EET), il passaggio all’ora legale avviene l’ultima domenica di marzo alle 01:00 GMT,
- spostando l’orologio avanti di un’ora. Il ritorno all’ora solare dell’Europa orientale avviene l’ultima domenica di ottobre alle 1:00 GMT,
- riportando l’orologio indietro di un’ora.
- L'ore dai dati può anche dipendere da dove è posizionato il server del broker """
- # ----------------------------------------------- INIZIO CODICE COMPLETO ------------------------------------------------------ #
- # Uso la libreria di pandas per leggere il file .csv
- import csv
- import pandas as pd
- df = pd.read_csv('F:\Documenti Personali\Trading\Programmare Trading Bot\VisualStudioConnected\XAUUSD_H1_201301141800_202211161400.csv')
- # Tolgo la colonna che non mi serve con il metodo .drop e uso implace per non fare una copia del dataframe ma per mentenerlo permanente
- # e indico l'assae che è 0 per le righe e 1 è per le colonne
- # True va scritto in maiuscolo altrimenti non lo riconosce
- df.drop('<SPREAD>', inplace = True, axis = 1)
- df.drop('<TICKVOL>', inplace = True, axis = 1)
- # Adesso Cambio il nome alle colonne
- df.columns = ['date','time','open','high','low','close','volume']
- print(df)
- # Provo a cambiarlo con la funzione replace il . con - solo che questo lavoro va fatto solo nella colonna date
- # Attenzione ho docvuto mettere .str altrimento non la prende
- df["date"]=df["date"].str.replace('.','-')
- # Provo a impostare la data come indice
- df.set_index(['date'], inplace = True)
- print(df)
- # Salvo il file in formato .csv e me lo carica nella cartella vend di Visul Studio
- df.to_csv('Formattato_Tradestation_XAUUSD_H1_201301141800_202211161400.csv')
- # ----------------------------------------------- FINE CODICE COMPLETO ------------------------------------------------------ #
- """ # ---------------------------------------------- INIZIO RAGIONAMENTO CON RIPASSO ----------------------------------------------------- #
- import csv
- import pandas as pd
- # Apro solo il file 'r' in modalità lettura
- XAUUSD_CSV = open('F:\Documenti Personali\Trading\Programmare Trading Bot\VisualStudioConnected\XAUUSD_H1_201301141800_202211161400.csv', 'r')
- # Sopra l'ho solo aperto ma adesso lo leggo. Ho 2 modi per leggerlo: 1 Con Read 2 Con Readlines
- # 1 E' un modo classico
- Contenuto_XAUUSD_CSV = XAUUSD_CSV.read()
- # 2 E' un modo per leggerlo in linee
- Contenuto_XAUUSD_CSV_LINEE = XAUUSD_CSV.readlines()
- # Con un cilco for faccio stampare una linea alla volta del secondo modo di lettura readlines
- for x in Contenuto_XAUUSD_CSV_LINEE:
- print(x)
- # Con with open riesco ad far leggere il file dove le linee sono racchiuse in delle liste, in questo caso uso il file letto in modo classico
- with open('F:\Documenti Personali\Trading\Programmare Trading Bot\VisualStudioConnected\XAUUSD_H1_201301141800_202211161400.csv') as file:
- Contenuto_XAUUSD_CSV = csv.reader(file)
- for x in Contenuto_XAUUSD_CSV:
- print(x)
- # Con with open riesco ad far leggere il file dove le linee sono racchiuse in delle liste, in questo caso uso il file letto in modo linee
- with open('F:\Documenti Personali\Trading\Programmare Trading Bot\VisualStudioConnected\XAUUSD_H1_201301141800_202211161400.csv') as file:
- Contenuto_XAUUSD_CSV_LINEE = csv.reader(file)
- for x in Contenuto_XAUUSD_CSV_LINEE:
- print(x)
- # Con with open riesco ad far leggere il file dove le linee sono racchiuse in delle liste, in questo caso uso il file letto in modo linee
- # Mettendo nel print le [] vado a prendere solo le colonne che mi interessano
- with open('F:\Documenti Personali\Trading\Programmare Trading Bot\VisualStudioConnected\XAUUSD_H1_201301141800_202211161400.csv') as file:
- Contenuto_XAUUSD_CSV_LINEE = csv.reader(file)
- for x in Contenuto_XAUUSD_CSV_LINEE:
- print(x[0])
- # C'è un modo per fare leggere il file in un dictionary ed invece di csv.read uso csv.DictReader
- # Da notare che qui non sono riuscito a leggere la colonna separate che mi interesa []
- with open('F:\Documenti Personali\Trading\Programmare Trading Bot\VisualStudioConnected\XAUUSD_H1_201301141800_202211161400.csv') as file:
- Contenuto_XAUUSD_CSV_LINEE = csv.DictReader(file)
- for x in Contenuto_XAUUSD_CSV_LINEE:
- print(dict(x))
- # ORA UN PICCOLO RIPASSO...
- # Ripasso modificare un elememto della lista:
- # Ricordiamoci che -1 va a prendere l'ultimo valore della lista
- a = ['uno', 'due', 'tre']
- a[0] = 'quattro'
- a[-1] = 'cinque'
- # Ripasso aggiungere un valore nella lista in ultima posizione
- a = ['uno', 'due', 'tre']
- a.append('dieci')
- # Ripasso aggiungere un valore nella lista in una posizione prestabilita
- a = ['uno', 'due', 'tre']
- a.insert(0,'venti')
- # Ripasso rimuovere un valore nella lista: () lo rimuoverà in ultima posizione, (0) lo rimuoverà nella posizione che vogliamo
- a = ['uno', 'due', 'tre']
- a.pop(0)
- # -------- ORA NEL NOSTRO FILE DOBBIAMO TOGLIERE TICK VOLUME E SPRED PERCHE' NON CI SERVONO PER TRADESTATION ---------- #
- # Uso la libreria di pandas per leggere il file .csv
- import csv
- import pandas as pd
- df = pd.read_csv('F:\Documenti Personali\Trading\Programmare Trading Bot\VisualStudioConnected\XAUUSD_H1_201301141800_202211161400.csv')
- # Tolgo la colonna che non mi serve con il metodo .drop e uso implace per non fare una copia del dataframe ma per mentenerlo permanente
- # e indico l'assae che è 0 per le righe e 1 è per le colonne
- # True va scritto in maiuscolo altrimenti non lo riconosce
- df.drop('<SPREAD>', inplace = True, axis = 1)
- df.drop('<TICKVOL>', inplace = True, axis = 1)
- # Adesso Cambio il nome alle colonne
- df.columns = ['date','time','open','high','low','close','volume']
- print(df)
- # Salvo il file in formato .csv e me lo carica nella cartella vend di Visul Studio
- # Noto che però ho un indice che nell'altro data frame non avevo e provo a vedere il vecchio indice se era settato su date per vedere se devo
- # risettare il nuovo indice su data
- df.to_csv('Formattato_Tradestation_XAUUSD_H1_201301141800_202211161400.csv') # NON ESEGUIRE !!!
- # Provo a impostare la data come indice
- df.set_index(['date'], inplace = True)
- # Salvo il file in formato .csv e me lo carica nella cartella vend di Visul Studio
- df.to_csv('Formattato_Tradestation_XAUUSD_H1_201301141800_202211161400.csv') # NON ESEGUIRE !!!
- # Tutto ok per adesso solo che scopro che le date sono delimitate da: . invede di -
- # Provo a cambiarlo con la funzione replace il . con - solo che questo lavoro va fatto solo nella colonna date
- # Attenzione ho docvuto mettere .str altrimento non la prende
- df["date"]=df["date"].str.replace('.','-')
- # Provo a impostare la data come indice
- df.set_index(['date'], inplace = True)
- # Salvo il file in formato .csv e me lo carica nella cartella vend di Visul Studio
- df.to_csv('Formattato_Tradestation_XAUUSD_H1_201301141800_202211161400.csv')
- # ---------------------------------------------- FINE RAGIONAMENTO CON RIPASSO ----------------------------------------------------- # """
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement