• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Podział pliku na mniejsze części (importy z innych plików)

VPS Starter Arubacloud
0 głosów
233 wizyt
pytanie zadane 15 lutego w Python przez juuunior Początkujący (460 p.)

Witam wszystkich

 

Pierwszy raz piszę w Pythonie i nie wiem jak sensownie rozdzielić kod na pliki, będzie to program odpalany w terminalu który łączy się z api Tradingview pobiera dane instrumentów finansowych.  Więc pobieram te dane i tworze tablice do której poszczególne  X   będą dokładać jakiś wynik obliczeń, tych X -ów może być w przyszłości dużo i mogą być dosyć rozbudowane więc chce je zrobić w osobnych plikach i importować jako funkcje.....  ale chcąc przenieś X do innego pliku zakładam  że muszę też tam dać tablice z danymi z api które potrzebuje do obliczeń ale odpala cały główny plik zamiast tylko tablice z funkcji  jak to zrobić sensownie ?

from tvDatafeed import TvDatafeed, Interval
import numpy as np
from sklearn.ensemble import RandomForestRegressor

#username = 'YourTradingViewUsername'
#password = 'YourTradingViewPassword'

tv = TvDatafeed()

data_us10y = tv.get_hist(symbol='US10Y',exchange='TVC',interval=Interval.in_daily,n_bars=30)
data_bound10y = tv.get_hist(symbol='DE10Y',exchange='TVC',interval=Interval.in_daily,n_bars=30)
data_british10y = tv.get_hist(symbol='GB10Y',exchange='TVC',interval=Interval.in_daily,n_bars=30)
data_dax = tv.get_hist(symbol='DEU40',exchange='TVC',interval=Interval.in_daily,n_bars=30)
data_spx = tv.get_hist(symbol='SPX',exchange='TVC',interval=Interval.in_daily,n_bars=30)
data_dji = tv.get_hist(symbol='DJI',exchange='TVC',interval=Interval.in_daily,n_bars=30)
data_usoil = tv.get_hist(symbol='USOIL',exchange='TVC',interval=Interval.in_daily,n_bars=30)
data_gold = tv.get_hist(symbol='GOLD',exchange='TVC',interval=Interval.in_daily,n_bars=30)
data_cotton = tv.get_hist(symbol='COTTONH2024',exchange='ACTIVTRADES',interval=Interval.in_daily,n_bars=30)

#/////////////////////////////////////////
deu40_cena = data_dax['close']
deu40_symbol = data_dax['symbol'][0]
spxcena = data_spx['close']
spx_symbol = data_spx['symbol'][0]
djicena = data_dji['close']
dji_symbol = data_dji['symbol'][0]
usoilcena = data_usoil['close']
usoil_symbol = data_usoil['symbol'][0]
goldcena = data_gold['close']
gold_symbol = data_gold['symbol'][0]
cottoncena = data_cotton['close']
cotton_symbol = data_cotton['symbol'][0]
us10ycena = data_us10y['close']
us10y_symbol = data_us10y['symbol'][0]
bound10ycena = data_bound10y['close']
bound10y_symbol = data_bound10y['symbol'][0]
british10ycena = data_british10y['close']
british10y_symbol = data_british10y['symbol'][0]

# ////////////////////////////////////////////////////////////  TABLICA INSTRUMENTÓW //////////////////////////////////////
instrumenty = {} # grupy:  1-indexy 2-towary 3-obligacje
instrumenty[deu40_symbol] = {'cena': deu40_cena, 'grupa': 1}
instrumenty[spx_symbol] = {'cena': spxcena, 'grupa': 1}
instrumenty[dji_symbol] = {'cena': djicena, 'grupa': 1}
instrumenty[usoil_symbol] = {'cena': usoilcena, 'grupa': 2}
instrumenty[gold_symbol] = {'cena': goldcena, 'grupa': 2}
instrumenty[cotton_symbol] = {'cena': cottoncena, 'grupa': 2}
instrumenty[us10y_symbol] = {'cena': us10ycena, 'grupa': 3}
instrumenty[bound10y_symbol] = {'cena': bound10ycena, 'grupa': 3}
instrumenty[british10y_symbol] = {'cena': british10ycena, 'grupa': 3}

# Extracting the first and last positions
us10y1 = data_us10y['close'][0]
us10y2 = data_us10y['close'][-1]

de10y1 = data_bound10y['close'][0]
de10y2 = data_bound10y['close'][-1]

gb10y1 = data_british10y['close'][0]
gb10y2 = data_british10y['close'][-1]

deu40_1 = data_dax['close'][0]
deu40_2 = data_dax['close'][-1]

spx1 = data_spx['close'][0]
spx2 = data_spx['close'][-1]

dji1 = data_dji['close'][0]
dji2 = data_dji['close'][-1]

usoil1 = data_usoil['close'][0]
usoil2 = data_usoil['close'][-1]

gold1 = data_gold['close'][0]
gold2 = data_gold['close'][-1]

cotton1 = data_cotton['close'][0]
cotton2 = data_cotton['close'][-1]


# tablice danych do kitchina ////////////////////////////////////////////////////////////
obligacje1 = [us10y1, de10y1, gb10y1]   # średnia cen różnych obligacji miesiąc wcześniej || 
obligacje2 = [us10y2, de10y2, gb10y2]    # średnia teraz

akcje1 = [spx1, dji1, deu40_1] 
akcje2 = [spx2, dji2, deu40_2]

surowce1 = [usoil1, gold1, cotton1]  
surowce2 = [usoil2, gold2, cotton2] # góra 1 ,  dół 0 

tak wyglądają dane z api

# Utworzenie pustego słownika przed pętlą
    koszykinstrumentow = {}
    model_priorytetu_glowny = {}
    model_przewidywania = {}
    symbole = []
    
if grupainst == 0:
   
    # Iterowanie po wszystkich kluczach z instrumenty i dodawanie ich do słownika jako listy
    for klucz in instrumenty:
      koszykinstrumentow[klucz] =  [wskaznikK] # przykładowa wartość jako lista
      model_priorytetu_glowny[klucz] = np.array([1, -1, 5, -1])
      model_przewidywania[klucz] = np.array([[5], [6], [7], [8]])
      symbole.append(klucz)
else:
 
   # Iterowanie po kluczach z instrumenty, które mają odpowiednią wartość grupa i dodawanie ich do słownika jako listy
    for klucz in instrumenty:
        if instrumenty[klucz]['grupa'] == grupainst:
            koszykinstrumentow[klucz] =  [wskaznikK] # pierwszy x kitchin
            model_priorytetu_glowny[klucz] = np.array([1, -1, 5, -1])
            model_przewidywania[klucz] = np.array([[5], [6], [7], [8]])
            symbole.append(klucz)

tutaj są tablice z których X  będzie korzystać i je obliczać 

#------------------------------------------------- 2 X ----------------------------------------------------------------------------

klucz_drugi_wskaznik = ['TVC:DEU40', 'TVC:SPX', 'TVC:DJI'] # symbole których dotyczy X
# Sprawdzenie 
znaleziono = False
for wartosc in klucz_drugi_wskaznik:    # if spr. czy symbole z X pasują do któregoś z symboli 
    if wartosc in symbole:
        znaleziono = True
        break

if znaleziono:

    klucz_drugi_wskaznik_niezn = symbole #wszystkie symbole z kitchina
    roznica = list(set(klucz_drugi_wskaznik_niezn) - set(klucz_drugi_wskaznik)) # roźnica pomiędzy tablicami

    wynikos = 5 # import mechaniki x

    # Iteruj przez listę kluczy
    for klucz in klucz_drugi_wskaznik:
        koszykinstrumentow[klucz].append(wynikos)

    for kluczz in roznica:
        koszykinstrumentow[kluczz].append(0)   

else:   # jeśli żaden nie pasuje to dajemy 0 dla kazdego
    for kluczzz in symbole:
        koszykinstrumentow[kluczzz].append(0)  

#--------------------------------------------------------------------------------------------------------------------------------    

to jest jeden z X który chce przenieść do innego pliku  wysłać mu dane z tablic funkcją z głównego pliku a następnie całego X importować do głównego pliku jako funkcja   i stosowałem ten zapis from tak że niby tylko jedną funkcję powinno czytać z głównego pliku ale i tak czytało cały główny plik

1 odpowiedź

0 głosów
odpowiedź 19 lutego przez RobertGelu Nowicjusz (160 p.)
edycja 19 lutego przez RobertGelu

Cześć,

Chcąc udzieilć Ci odpowiedzi pomyślałem o programach pakujących typu ZIP i pozostałe...

 Ale aby odpowiedzieć na Twoje pytanie raczej dogłębnłe, odnalazłem odpowiedź a przy okazji taki poradnik p. Wojciecha  "Dzielenie i łączenie plików – W jaki sposób tego dokonać? (Poradnik)"

 Jest on na poniższej stronie

https://wojciechpietrzak.com.pl/dzielenie-i-laczenie-plikow/

także nie jesteś pierwszą osobą która się chce dowiedzieć więcej... Pozdrawiam

Podobne pytania

0 głosów
1 odpowiedź 304 wizyt
pytanie zadane 23 czerwca 2023 w Python przez Mateusz Analityk Stary wyjadacz (13,710 p.)
+1 głos
2 odpowiedzi 669 wizyt
pytanie zadane 12 listopada 2022 w Python przez Giacomo Nowicjusz (200 p.)
0 głosów
2 odpowiedzi 544 wizyt
pytanie zadane 26 października 2020 w Python przez lucyliu Początkujący (370 p.)

93,013 zapytań

141,977 odpowiedzi

321,266 komentarzy

62,355 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...