forked from ivanstruk/Backtesting-Pre-Market-Price-Action
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathEOD_parser.py
119 lines (103 loc) · 4.3 KB
/
EOD_parser.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
# -*- coding: utf-8 -*-
"""
Created on Tue Nov 19
@author: Ivan Struk
"""
import yfinance as yf
import pandas as pd
import numpy as np
from pandas.plotting import register_matplotlib_converters
register_matplotlib_converters()
""" Markets
"""
def spy():
spy_1 = pd.read_csv("d_SP500.csv", encoding = "utf-8", usecols= ["Symbol"])
spy_list = spy_1["Symbol"]
real_spy_list = list(spy_list)
spy = real_spy_list
return spy
def qqq():
qqq_1 = pd.read_csv("d_Nasdaq100.csv")
qqq_list = qqq_1["Ticker"]
real_qqq_list = list(qqq_list)
qqq = real_qqq_list
return qqq
""" These are the history modules. They pull data from Yahoo Finance
and also handle most of the calculations.
"""
def get_hist(symbol):
target_tickers = []
target_tickers.append(symbol)
fetch = yf.download(tickers = target_tickers,
period = "5y",
interval = "1d",
group_by = "ticker",
auto_adjust = False,
prepost = True,
treads = True,
proxy = None)
df = pd.DataFrame(data=fetch, index=None).reset_index(drop=False)
df["Pre-Market Change"] = df["Open"] - df["Close"].shift(+1)
df["Intraday Change"] = df["Close"] - df["Open"]
df["Total Daily Change"] = df["Intraday Change"] + df["Pre-Market Change"]
df["Pre-Market R%"] = round(((df["Pre-Market Change"] / df["Close"].shift(+1))*100),2)
df["Intraday R%"] = round(((df["Intraday Change"] / df["Open"])*100),2)
df["Total Daily R%"] = round((df["Pre-Market R%"] + df["Intraday R%"]),2)
df["PM Price Action Share"] = round(df["Pre-Market R%"]/df["Total Daily R%"],2)
df["% Daily Change Att PreM"] = df["Pre-Market Change"] / df["Total Daily Change"]
df["ABS PM Chn"] = df["Pre-Market Change"].abs()
df["ABS ID Chn"] = df["Intraday Change"].abs()
df["ABS ID + PM"] = df["ABS ID Chn"] + df["ABS PM Chn"]
df["ABS PM CHN / ABS ID + PM"] = round((df["ABS PM Chn"] / df["ABS ID + PM"]),2)
df["Intraday HL Range"] = df["High"] - df["Low"]
df1 = df.iloc[1:]
return df1
def get_hist2(symbol):
target_tickers = []
target_tickers.append(symbol)
fetch = yf.download(tickers = target_tickers,
period = "5y",
interval = "1d",
group_by = "ticker",
auto_adjust = False,
prepost = True,
treads = True,
proxy = None)
df = pd.DataFrame(data=fetch, index=None).reset_index(drop=False)
df["Pre-Market Change"] = df["Open"] - df["Close"].shift(+1)
df["Intraday Change"] = df["Close"] - df["Open"]
df["Premarket D"] = np.where(df['Pre-Market Change']>0, "Up", "Down")
df["Intraday D"] = np.where(df['Intraday Change']>0, "Up", "Down")
df["H: Both True"] = np.where(df['Intraday D'] == df["Premarket D"], 1, 0)
df2 = df.iloc[1:]
return df2
def hunt_hist(symbol):
target_tickers = []
target_tickers.append(symbol)
fetch = yf.download(tickers = target_tickers,
period = "5y",
interval = "1d",
group_by = "ticker",
auto_adjust = False,
prepost = True,
treads = True,
proxy = None)
df = pd.DataFrame(data=fetch, index=None).reset_index(drop=False)
df["Pre-Market Change"] = df["Open"] - df["Close"].shift(+1)
df["Intraday Change"] = df["Close"] - df["Open"]
df["Premarket D"] = np.where(df['Pre-Market Change']>0, 2, 1)
df["Intraday D"] = np.where(df['Intraday Change']>0, 2, 1)
df["H: Both True"] = df["Intraday D"] + df["Premarket D"]
df["H1: Increasing"] = np.where(df["H: Both True"] == 4, 1, 0)
df["H2: Decreasing"] = np.where(df["H: Both True"] == 2, 1, 0)
df["H: Both True"] = df["Intraday D"] + df["Premarket D"]
df["H1: Increasing"] = np.where(df["H: Both True"] == 4, 1, 0)
df["H2: Decreasing"] = np.where(df["H: Both True"] == 2, 1, 0)
df["Pre-Market D+"] = np.where(df['Pre-Market Change']>0, 1, 0)
df["Intraday D+"] = np.where(df['Intraday Change']>0, 1, 0)
df["Pre-Market D-"] = np.where(df['Pre-Market Change']<0, 1, 0)
df["Intraday D-"] = np.where(df['Intraday Change']<0, 1, 0)
df["Temp Calc"] = df["Pre-Market D+"]+df["Intraday D+"]
df["Temp Calc1"] = np.where(df['Temp Calc']>1, 1, 0)
df3 = df.iloc[1:]
return df3