This commit is contained in:
infidel
2022-04-06 14:56:09 +07:00
commit eb3dc17ee6
41 changed files with 4898 additions and 0 deletions

178
plot_end.py Normal file
View File

@@ -0,0 +1,178 @@
import matplotlib.pyplot as plt
import json
import os
from datetime import datetime, date, timedelta
from matplotlib.dates import date2num
import yfinance as yf
import sys
import glob
import numpy as np
from collections import Counter
# path='../Febrian/Bang Nino/Samples/NEE/2020-05-08/'
my_args = sys.argv[1:]
tick = my_args[0]
filter=int(my_args[1])
visual=50
print(tick)
# path='./Samples/'+tick+'/2020-12-07/'
path='./Samples/'+tick+'/'
all_dirs = glob.glob(path+"*")
print(path)
print(all_dirs)
latest_dir = max(all_dirs, key=os.path.getctime)
print("Latest Data = ", latest_dir)
latest_dir = latest_dir + "/"
listsymbol = os.listdir(latest_dir+'/')
print(listsymbol)
with open(latest_dir+listsymbol[0],'r') as f:
print(latest_dir+listsymbol[0])
hasil=json.load(f)
# print(hasil)
print(len(hasil[0]))
print(len(hasil[1]))
print(len(hasil[2]))
akhir=datetime.strptime(str(hasil[2][-1]),'%Y-%m-%d').date()
print("Current Log : ",akhir)
extend1=[akhir+timedelta(days=x) for x in range(1,50,1)]
extend=[]
for x in extend1:
if x.weekday() not in [5,6]:
extend.append(x)
extend=extend[:14]
extend=[str(x) for x in extend]
print("ASasdasdsa",extend)
# date=date2num(date)
date=hasil[2]
#plt.plot(([date[-1]]+extend)[-7:],hasil[1][-7:],color='grey',linewidth=3, linestyle='--', marker='x', alpha=0.8, label="Confirmation")
plt.plot(hasil[2][-10:],hasil[1][0:-7][-10:],color='b',linewidth=2)
# plt.show()
symbol=yf.Ticker(tick)
symbol=symbol.history(start=akhir,end=akhir+timedelta(days=30),interval='1d')
# print(symbol)
symbol=symbol.drop(symbol.index[0])
symbol=symbol.drop(symbol.index[0])
symbol=symbol['Close'][0:14].tolist()
# plt.plot(extend,symbol,color='g',linewidth=10)
avg=[]
gap_avg = []
for ex,x in enumerate(listsymbol):
gap_val = []
with open(latest_dir+x) as f:
print("#################################################")
print(x)
hasil=json.load(f)
# a=hasil[0][-14:][:14]
a = hasil[0][-14:][:7]
b=hasil[1][-7:]
print("A & B Temp :")
print(a)
print(b)
count=0
print("Predict - Real ")
for x in range(len(b)):
print("%.2f" % (a[x]-b[x]))
if (b[x]-(filter/10) <= a[x] <= b[x]+(filter/10)):
count=count+1
if count>4:
print("ACCEPTED . . .")
for i in range(len(b)):
gap_val.append(abs(a[i]-b[i]))
print(len(gap_val))
predict_val = hasil[0][-14:]
avg.append(predict_val)
# avg.append(hasil[0][-10][:14])
plt.plot((date+extend)[-20:],hasil[0][-20:], label='Sample %s'%ex, alpha=0.3)
gap_avg.append(gap_val)
print()
else:
print("NOT ACCEPTED . . .")
print()
# print(avg)
print("#################################################")
print(avg)
print(len(avg))
print(gap_avg)
print(len(gap_avg))
print("#################################################")
avg_total=[]
good_index=[]
for x in range(len(extend)):
print("NOW ", x)
temp=[]
gap_temp = []
pred_temp = []
if x < 7:
for a in range(len(gap_avg)):
# print(gap_temp.size())
gap_temp.append(gap_avg[a][x])
print("Gap Temp")
print(gap_temp)
# for b in range(len(gap_avg)):
good_index.append(gap_temp.index(min(gap_temp)))
else:
print("LOL")
c = Counter(good_index)
c = c.most_common(1)
good_index.append(c[0][0])
print("Good Index")
print(len(good_index))
print(good_index)
print()
for c in range(len(extend)):
print(c)
temp.append(avg[int(good_index[c])][c])
print(temp)
# avg_total.append(sum(temp)/len(temp))
# mean_pred = np.mean(temp)
# print(mean_pred)
avg_total = temp
print(avg_total)
# print(avg_total)
atas=[x+(1/visual*x) for x in avg_total]
bawah=[x-(1/visual*x) for x in avg_total]
print([hasil[1][0:-5][-1]]+bawah)
print([hasil[1][0:-5][-1]]+atas)
print([date[-1]]+extend)
plt.fill_between([date[-1]]+extend,[hasil[1][0:-5][-1]]+bawah,[hasil[1][0:-5][-1]]+atas,alpha=0.2,label='Prediction Band')
plt.plot([date[-1]]+extend,[hasil[1][-5]]+avg_total,color='y',linewidth=3,label='Prediction', marker='x')
plt.plot(([date[-1]]+extend)[-15:][:8],hasil[1][-8:],color='grey',linewidth=3, linestyle='--', marker='x', alpha=0.8, label="Confirmation")
plt.grid()
# plt.show()
# print("Date Extended ",(date+extend))
symbol = yf.Ticker(tick)
symbol = symbol.history(start=akhir,end=akhir+timedelta(days=20),interval='1d')
print(symbol)
symbol = symbol.drop(symbol.index[0])
symbol = symbol.drop(symbol.index[0])
symbol = symbol['Close'][0:14].tolist()
# symbol = symbol['Close'].tolist()
# print(symbol)
#plt.plot(extend[0:len(symbol)],symbol,color='g',label='Actual',linewidth=1)
# plt.plot(hasil[1],color='r', linestyle='--', label='Confirmation',linewidth=2)
# plt.plot(hasil[2]+extend[0:14],hasil[0],color='b',label='Train',linewidth=2, alpha=0.4)
# plt.plot(symbol, label="Symbol Real")
# plt.plot(hasil[0], label="Real Predictioh")
# print(symbol)
# print(symbol)
# detail = str(akhir)+"\n"+"Prediction :"+str(avg_total[-1:])+"\n"+"Real : "
# plt.text(0.05, 120, detail, color='black', bbox=dict(facecolor='none', edgecolor='black', boxstyle='round,pad=1'))
plt.legend(loc='upper center', bbox_to_anchor=(0.5, -0.01),
fancybox=True, shadow=True, ncol=7)
plt.title(tick+" Date: "+str(hasil[2][-1])+" to "+str(extend[-1]))
# plt.get_xaxis().set_ticks([])
new=yf.Ticker(tick)
new=new.history(interval="1d",start=([date[-1]]+extend)[-15:][:8][-1],end=datetime.today())
plt.plot(new.index.astype(str),new["Close"],color='red',linewidth=3, linestyle='--', marker='x', alpha=0.8, label="True Trend")
print(new)
print(extend[-len(new):])
plt.xticks([])
plt.show()