Arkadaşlar pyqt5 te bir uygulama yaptım. İşlemin tamamlanma yüzdesini ve listwidget e hisseleri işlem devam ederken göstermek istiyorum ama threading olayını tam kavrayamadım. Eklemiş olduğum koda bunu yapabilecek birisi var mı acaba? İşlem tara fonksiyonunda gerçekleşiyor. For döngüsünde tamamlanma yüzdesi ve listwidget a ekleme olayı işlem bitene kadar çalışmıyor.
Bugünkü taramada EREGL ve SELEC al çıktı bakalım yarın bakacağım borsaya.
import yfinance as yf
import pandas as pd
import numpy as np
import datetime
from datetime import timedelta
from sqlitehelper import *
from PyQt5 import QtWidgets, uic
from PyQt5.QtWidgets import QMainWindow, QMessageBox
import sys
from hisse import Hisse
helper = SqliteHelper("borsa.db")
helper.hisse_tablo()
class Borsa(QMainWindow):
def __init__(self):
super(Borsa, self).__init__()
uic.loadUi("ui/main.ui", self)
self.show()
self.actionHisse.triggered.connect(self.hisse_show)
self.pushButton.clicked.connect(self.tara)
def hisse_show(self):
self.window = QtWidgets.QMainWindow()
self.ui = Hisse()
self.ui.show()
def tara(self):
try:
self.listWidget.clear()
self.listWidget_2.clear()
bugun = datetime.datetime.now()
start = bugun - timedelta(days=250)
end = bugun + timedelta(days=1)
start = str(start.year) + "-" + str(start.month) + "-" + str(start.day)
end = str(end.year) + "-" + str(end.month) + "-" + str(end.day)
hisseler = helper.select("select Hisse from borsa order by Hisse ASC")
count = 0
for item in hisseler:
count = count + 1
yuzde = (count / len(hisseler))*100
hisse = item[0] + ".IS"
df = yf.download(hisse, start=start, end=end)
df['ema_20'] = df['Close'].ewm(span=20, adjust=False).mean()
df['ema_50'] = df['Close'].ewm(span=50, adjust=False).mean()
df['ema_200'] = df['Close'].ewm(span=200, adjust=False).mean()
df['bullish'] = 0.0
df['bullish'] = np.where(df['ema_50'] > df['ema_200'], 1.0, 0.0)
df['crossover'] = df['bullish'].diff()
df['bullish_20_50'] = 0.0
df['bullish_20_50'] = np.where(df['ema_20'] > df['ema_50'], 1.0, 0.0)
df['crossover_20_50'] = df['bullish_20_50'].diff()
#bu bölümün işlem bitene kadar çalışmıyor. Threading olayını anlamadım.
if df['crossover'].iloc[-1] > 0 and df['crossover_20_50'].iloc[-1] > 0:
self.listWidget.addItem(item[0] + ": GÜÇLÜ AL")
elif df['crossover'].iloc[-1] > 0:
self.listWidget.addItem(item[0] + ": AL")
elif df['crossover'].iloc[-1] < 0 and df['crossover_20_50'].iloc[-1] < 0:
self.listWidget_2.addItem(item[0] + ": GÜÇLÜ SAT")
elif df['crossover'].iloc[-1] < 0:
self.listWidget_2.addItem(item[0] + ": SAT")
#bu bölümün işlem bitene kadar çalışmıyor. Threading olayını anlamadım.
self.label_4.setText("%" + str(yuzde))
except:
pass