Advertisement
Maurizio-Ciullo

Modificare datafeed .csv Da Meta Trader 4 A Tradestation

Nov 27th, 2022 (edited)
1,098
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 7.60 KB | None | 0 0
  1.                                         # Modificare datafeed file .csv mt4 per Tradestation
  2.  
  3.                                         # Modificare datafeed file .csv mt4 per Tradestation
  4.                                        
  5. """                                             PREMESSA DATI METATRADER 4
  6. L’ora in MT4 è indicata come ora dell’Europa orientale (EET). Durante l’ora legale,
  7. 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).
  8.  
  9. Nell’Europa orientale (EET), il passaggio all’ora legale avviene l’ultima domenica di marzo alle 01:00 GMT,
  10. 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,
  11. riportando l’orologio indietro di un’ora.
  12.  
  13. L'ore dai dati può anche dipendere da dove è posizionato il server del broker """
  14.  
  15. # ----------------------------------------------- INIZIO CODICE COMPLETO ------------------------------------------------------ #        
  16.  
  17. # Uso la libreria di pandas per leggere il file .csv
  18. import csv
  19. import pandas as pd
  20. df = pd.read_csv('F:\Documenti Personali\Trading\Programmare Trading Bot\VisualStudioConnected\XAUUSD_H1_201301141800_202211161400.csv')
  21.  
  22. # 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
  23. # e indico l'assae che è 0 per le righe e 1 è per le colonne
  24. # True va scritto in maiuscolo altrimenti non lo riconosce
  25. df.drop('<SPREAD>', inplace = True, axis = 1)
  26. df.drop('<TICKVOL>', inplace = True, axis = 1)
  27.  
  28. # Adesso Cambio il nome alle colonne
  29. df.columns = ['date','time','open','high','low','close','volume']
  30.  
  31. print(df)
  32.  
  33. # Provo a cambiarlo con la funzione replace il . con - solo che questo lavoro va fatto solo nella colonna date
  34. # Attenzione ho docvuto mettere .str altrimento non la prende
  35.  
  36. df["date"]=df["date"].str.replace('.','-')
  37.  
  38. # Provo a impostare la data come indice
  39. df.set_index(['date'], inplace = True)
  40. print(df)
  41.  
  42. # Salvo il file in formato .csv e me lo carica nella cartella vend di Visul Studio
  43. df.to_csv('Formattato_Tradestation_XAUUSD_H1_201301141800_202211161400.csv')
  44.  
  45. # ----------------------------------------------- FINE CODICE COMPLETO ------------------------------------------------------ #
  46.  
  47. """ # ---------------------------------------------- INIZIO RAGIONAMENTO CON RIPASSO ----------------------------------------------------- #
  48.  
  49. import csv
  50. import pandas as pd
  51.  
  52. # Apro solo il file 'r' in modalità lettura
  53. XAUUSD_CSV = open('F:\Documenti Personali\Trading\Programmare Trading Bot\VisualStudioConnected\XAUUSD_H1_201301141800_202211161400.csv', 'r')
  54.  
  55.  
  56. # Sopra l'ho solo aperto ma adesso lo leggo. Ho 2 modi per leggerlo: 1 Con Read 2 Con Readlines
  57.  
  58. # 1 E' un modo classico
  59. Contenuto_XAUUSD_CSV = XAUUSD_CSV.read()
  60. # 2 E' un modo per leggerlo in linee
  61. Contenuto_XAUUSD_CSV_LINEE = XAUUSD_CSV.readlines()
  62.  
  63.  
  64. # Con un cilco for faccio stampare una linea alla volta del secondo modo di lettura readlines
  65. for x in Contenuto_XAUUSD_CSV_LINEE:
  66.    print(x)
  67.  
  68.  
  69. # 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    
  70. with open('F:\Documenti Personali\Trading\Programmare Trading Bot\VisualStudioConnected\XAUUSD_H1_201301141800_202211161400.csv') as file:
  71.    Contenuto_XAUUSD_CSV = csv.reader(file)
  72.    for x in Contenuto_XAUUSD_CSV:
  73.        print(x)
  74.    
  75. # 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    
  76. with open('F:\Documenti Personali\Trading\Programmare Trading Bot\VisualStudioConnected\XAUUSD_H1_201301141800_202211161400.csv') as file:
  77.    Contenuto_XAUUSD_CSV_LINEE = csv.reader(file)
  78.    for x in Contenuto_XAUUSD_CSV_LINEE:
  79.        print(x)
  80.        
  81. # 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    
  82. # Mettendo nel print le [] vado a prendere solo le colonne che mi interessano
  83. with open('F:\Documenti Personali\Trading\Programmare Trading Bot\VisualStudioConnected\XAUUSD_H1_201301141800_202211161400.csv') as file:
  84.    Contenuto_XAUUSD_CSV_LINEE = csv.reader(file)
  85.    for x in Contenuto_XAUUSD_CSV_LINEE:
  86.        print(x[0])
  87.        
  88. # C'è un modo per fare leggere il file in un dictionary ed invece di csv.read uso csv.DictReader
  89. # Da notare che qui non sono riuscito a leggere la colonna separate che mi interesa []        
  90. with open('F:\Documenti Personali\Trading\Programmare Trading Bot\VisualStudioConnected\XAUUSD_H1_201301141800_202211161400.csv') as file:
  91.    Contenuto_XAUUSD_CSV_LINEE = csv.DictReader(file)
  92.    for x in Contenuto_XAUUSD_CSV_LINEE:
  93.        print(dict(x))
  94.        
  95.        
  96. # ORA UN PICCOLO RIPASSO...  
  97.        
  98. # Ripasso modificare un elememto della lista:
  99. # Ricordiamoci che -1 va a prendere l'ultimo valore della lista
  100. a = ['uno', 'due', 'tre']
  101. a[0] = 'quattro'
  102. a[-1] = 'cinque'
  103.  
  104. # Ripasso aggiungere un valore nella lista in ultima posizione
  105. a = ['uno', 'due', 'tre']
  106. a.append('dieci')
  107.  
  108. # Ripasso aggiungere un valore nella lista in una posizione prestabilita
  109. a = ['uno', 'due', 'tre']
  110. a.insert(0,'venti')
  111.  
  112. # Ripasso rimuovere un valore nella lista: () lo rimuoverà in ultima posizione, (0) lo rimuoverà nella posizione che vogliamo
  113. a = ['uno', 'due', 'tre']
  114. a.pop(0)        
  115.        
  116.        
  117. # -------- ORA NEL NOSTRO FILE DOBBIAMO TOGLIERE TICK VOLUME E SPRED PERCHE' NON CI SERVONO PER TRADESTATION ---------- #
  118.  
  119. # Uso la libreria di pandas per leggere il file .csv
  120. import csv
  121. import pandas as pd
  122. df = pd.read_csv('F:\Documenti Personali\Trading\Programmare Trading Bot\VisualStudioConnected\XAUUSD_H1_201301141800_202211161400.csv')
  123.  
  124. # 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
  125. # e indico l'assae che è 0 per le righe e 1 è per le colonne
  126. # True va scritto in maiuscolo altrimenti non lo riconosce
  127. df.drop('<SPREAD>', inplace = True, axis = 1)
  128. df.drop('<TICKVOL>', inplace = True, axis = 1)
  129.  
  130. # Adesso Cambio il nome alle colonne
  131. df.columns = ['date','time','open','high','low','close','volume']
  132.  
  133. print(df)
  134.  
  135. # Salvo il file in formato .csv e me lo carica nella cartella vend di Visul Studio
  136. # 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
  137. # risettare il nuovo indice su data
  138. df.to_csv('Formattato_Tradestation_XAUUSD_H1_201301141800_202211161400.csv')            # NON ESEGUIRE !!!
  139.  
  140. # Provo a impostare la data come indice
  141. df.set_index(['date'], inplace = True)
  142. # Salvo il file in formato .csv e me lo carica nella cartella vend di Visul Studio
  143. df.to_csv('Formattato_Tradestation_XAUUSD_H1_201301141800_202211161400.csv')            # NON ESEGUIRE !!!
  144.  
  145. # Tutto ok per adesso solo che scopro che le date sono delimitate da: . invede di -
  146.  
  147. # Provo a cambiarlo con la funzione replace il . con - solo che questo lavoro va fatto solo nella colonna date
  148. # Attenzione ho docvuto mettere .str altrimento non la prende
  149.  
  150. df["date"]=df["date"].str.replace('.','-')
  151.  
  152. # Provo a impostare la data come indice
  153. df.set_index(['date'], inplace = True)
  154. # Salvo il file in formato .csv e me lo carica nella cartella vend di Visul Studio
  155. df.to_csv('Formattato_Tradestation_XAUUSD_H1_201301141800_202211161400.csv')
  156.  
  157. # ---------------------------------------------- FINE RAGIONAMENTO CON RIPASSO ----------------------------------------------------- # """
  158.  
  159.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement