как построить график данных из файла журнала? - PullRequest
0 голосов
/ 03 августа 2020

У меня есть файл журнала, в котором есть сводка сделок, файл журнала выглядит так

date        time       amt     sell/buy     type    current_price 
2020-08-03 01:20:06    1.5    0.00187130    SELL    0.00187030
2020-08-03 01:23:20    1.1    0.00187110    SELL    0.00187090
2020-08-03 01:26:36    1.8    0.00187190    SELL    0.00187070
2020-08-03 01:29:52    1.3    0.00187160    SELL    0.00186820
2020-08-03 01:36:24    1.4    0.00186580    BUY    0.00186780
2020-08-03 01:39:41    1.4    0.00186860    SELL    0.00186640
2020-08-03 01:42:54    1.3    0.00186710    BUY    0.00186880
2020-08-03 01:46:10    1.0    0.00186990    SELL    0.00186980
2020-08-03 01:49:25    1.2    0.00186840    BUY    0.00186850

моя цель - отобразить данные внутри этого файла журнала, значения, которые я хочу отобразить, - это date_time отформатируйте цену sell/buy и current_price Я читаю строки из файла журнала с помощью readlines и для каждой строки я добавляю date_time и current_price к date_time_lst и current_prices_lst затем для каждой сделки Я добавляю sell/buy цену и date_time в другие списки, это явно неэффективно и требует много времени, когда я получаю график с plt.show, я получаю значения, которые не соответствуют порядку на графике.

как вы можете видеть, ось Y не в порядке возрастания или убывания, что я делаю неправильно и как я могу улучшить это

введите описание изображения здесь


date_time_lst = []
current_price_lst = [] 
BUYS_prices_lst = [] 
SELLS_prices_lst = [] 
BUYS_DATES =[]
SELLS_DATES = [] 





with open(file__name , "r") as r_handle:
    log_lines = r_handle.readlines()
for line in log_lines:
    line = line.split()
    
    date_time_lst.append(str(line[0] + " " + line[1]))
    current_price_lst.append(line[5])



    if line[4] == "SELL":
            ## the amount of BNB multiplyed by the sell price returns the amount of bitcoin we get from the trade
        amt = float(line[2])*float(line[3])
        SELLS_prices_lst.append(line[3])
        SELLS_DATES.append(str(line[0] + " " + line[1]))
        ## the amount above gets added to the qoute_balance (bitcoin_balance)
        qoute_balance += amt


        ## the original BNB amount is subtracted from the base_balance (binance_balance)
        base_balance -= float(line[2])

    

    elif line[4] == "BUY":
        amt_ = float(line[2])*float(line[3])
        qoute_balance += amt_
        base_balance -= float(line[2])
        BUYS_prices_lst.append(line[3])
        BUYS_DATES.append(str(line[0] + " " + line[1]))



plt.rcParams['axes.facecolor'] = 'grey'
plt.grid(color="black")
plt.scatter(date_time_lst , current_price_lst, color='green' , label='current_coin_prices')
plt.legend(loc='lower right')
plt.show()

1 Ответ

1 голос
/ 03 августа 2020

значения, которые не соответствуют порядку на графике.

  • Числа читаются как строки. Перед добавлением в списки превратите их в числа с плавающей запятой.

    • price = float(line[3])
      current = float(line[5])
      
  • Превратите столбцы даты и времени в datetime объект

    • dt = line[0] + ' ' + line[1]
      dt = datetime.datetime.strptime(dt,'%Y-%m-%d %H:%M:%S')
      
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...