Add files via upload
This commit is contained in:
parent
5f19a1a343
commit
2adaff0edf
138
Core/CoreDraw.py
Normal file
138
Core/CoreDraw.py
Normal file
@ -0,0 +1,138 @@
|
|||||||
|
|
||||||
|
import pandas as pd
|
||||||
|
import datetime
|
||||||
|
import numpy as np
|
||||||
|
import plotly as pl
|
||||||
|
import plotly.graph_objs as go
|
||||||
|
import matplotlib.pyplot as plt
|
||||||
|
import math
|
||||||
|
import scipy
|
||||||
|
import random
|
||||||
|
import statistics
|
||||||
|
|
||||||
|
|
||||||
|
import datetime
|
||||||
|
import matplotlib.dates as mdates
|
||||||
|
import matplotlib.pyplot as plt
|
||||||
|
|
||||||
|
import mplfinance as mpf
|
||||||
|
|
||||||
|
import plotly
|
||||||
|
#import plotly.plotly as py
|
||||||
|
import plotly.graph_objs as go
|
||||||
|
# these two lines allow your code to show up in a notebook
|
||||||
|
from plotly.offline import init_notebook_mode, iplot
|
||||||
|
from plotly.subplots import make_subplots
|
||||||
|
init_notebook_mode()
|
||||||
|
|
||||||
|
import CoreTraidMath
|
||||||
|
import plotly.express as px
|
||||||
|
|
||||||
|
class corePlt():
|
||||||
|
def __init__(self, params={
|
||||||
|
'vtype':'',
|
||||||
|
'df':pd.DataFrame(),
|
||||||
|
'row':1,
|
||||||
|
'col':1,
|
||||||
|
'name':''
|
||||||
|
}):
|
||||||
|
self.vtype=params['vtype']
|
||||||
|
self.df=params['df']
|
||||||
|
self.row=params['row']
|
||||||
|
self.col=params['col']
|
||||||
|
self.name=params['name']
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class coreDraw():
|
||||||
|
def __init__(self, data=[],needShow=False):
|
||||||
|
self.data=self.getPlts(data)
|
||||||
|
self.needShow=needShow
|
||||||
|
self.ans=self.getAns()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def getPlts(self, data):
|
||||||
|
ans=None
|
||||||
|
|
||||||
|
if type(data)==list:
|
||||||
|
ans=[]
|
||||||
|
for i in data:
|
||||||
|
ans.append(corePlt(i))
|
||||||
|
else:
|
||||||
|
ans=[corePlt(data)]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return ans
|
||||||
|
|
||||||
|
def getAns(self):
|
||||||
|
'''
|
||||||
|
data list
|
||||||
|
vtype
|
||||||
|
df
|
||||||
|
row=1
|
||||||
|
col=1
|
||||||
|
name
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
'''
|
||||||
|
|
||||||
|
ans=None
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
maxRow=1
|
||||||
|
maxCol=1
|
||||||
|
for i in self.data:
|
||||||
|
if i.row > maxRow:
|
||||||
|
maxRow =i.row
|
||||||
|
if i.col > maxCol:
|
||||||
|
maxCol =i.col
|
||||||
|
|
||||||
|
fig = make_subplots(
|
||||||
|
rows=maxRow,
|
||||||
|
cols=maxCol,
|
||||||
|
shared_xaxes=True,
|
||||||
|
vertical_spacing=0.02,
|
||||||
|
shared_yaxes=True,
|
||||||
|
horizontal_spacing=0.02,
|
||||||
|
#column_widths=[]
|
||||||
|
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
fig.update_layout(xaxis_rangeslider_visible=False)
|
||||||
|
|
||||||
|
|
||||||
|
for i in self.data:
|
||||||
|
if i.vtype=='Scatter':
|
||||||
|
fig.add_trace(go.Scatter(x=i.df['date'],y=i.df['value'],name=i.name), row=i.row, col=i.col)
|
||||||
|
elif i.vtype=='OCHL':
|
||||||
|
fig.add_trace(go.Candlestick(
|
||||||
|
x=i.df['date'],
|
||||||
|
open=i.df['open'],
|
||||||
|
high=i.df['high'],
|
||||||
|
low=i.df['low'],
|
||||||
|
close=i.df['close'],
|
||||||
|
name=i.name),
|
||||||
|
row=i.row, col=i.col
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
ans=fig
|
||||||
|
if self.needShow:
|
||||||
|
plotly.offline.iplot(fig)
|
||||||
|
return ans
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
124
Core/CoreTraidMath.py
Normal file
124
Core/CoreTraidMath.py
Normal file
@ -0,0 +1,124 @@
|
|||||||
|
|
||||||
|
import pandas as pd
|
||||||
|
import datetime
|
||||||
|
import numpy as np
|
||||||
|
import plotly as pl
|
||||||
|
import plotly.graph_objs as go
|
||||||
|
import matplotlib.pyplot as plt
|
||||||
|
import math
|
||||||
|
import scipy
|
||||||
|
import random
|
||||||
|
import statistics
|
||||||
|
|
||||||
|
|
||||||
|
import datetime
|
||||||
|
import matplotlib.dates as mdates
|
||||||
|
import matplotlib.pyplot as plt
|
||||||
|
|
||||||
|
import mplfinance as mpf
|
||||||
|
|
||||||
|
import plotly
|
||||||
|
#import plotly.plotly as py
|
||||||
|
import plotly.graph_objs as go
|
||||||
|
# these two lines allow your code to show up in a notebook
|
||||||
|
from plotly.offline import init_notebook_mode, iplot
|
||||||
|
from plotly.subplots import make_subplots
|
||||||
|
init_notebook_mode()
|
||||||
|
|
||||||
|
class CoreMath:
|
||||||
|
|
||||||
|
def __init__(self, base_df, params={
|
||||||
|
'dataType':'ohcl',
|
||||||
|
'colName':{
|
||||||
|
'open':'open',
|
||||||
|
'close':'close',
|
||||||
|
'high':'high',
|
||||||
|
'low':'low',
|
||||||
|
'date':'date'
|
||||||
|
},
|
||||||
|
'action': None,
|
||||||
|
'actionOptions':{}
|
||||||
|
}
|
||||||
|
):
|
||||||
|
|
||||||
|
self.base_df=base_df.reset_index(drop=True)
|
||||||
|
self.params=params
|
||||||
|
if self.params['dataType']=='ohcl':
|
||||||
|
self.col=self.base_df[self.params['colName'][self.params['actionOptions']['valueType']]]
|
||||||
|
elif self.params['dataType']=='series':
|
||||||
|
self.col=self.base_df
|
||||||
|
self.ans=self.getAns()
|
||||||
|
|
||||||
|
|
||||||
|
def getAns(self):
|
||||||
|
ans=None
|
||||||
|
|
||||||
|
if self.params['action']=='findExt':
|
||||||
|
ans = self.getExtremumValue()
|
||||||
|
if self.params['action']=='findMean':
|
||||||
|
ans = self.getMeanValue()
|
||||||
|
|
||||||
|
|
||||||
|
return ans
|
||||||
|
|
||||||
|
|
||||||
|
def getExtremumValue(self):
|
||||||
|
ans=None
|
||||||
|
'''
|
||||||
|
actionOptions:
|
||||||
|
'extremumtype':
|
||||||
|
'min'
|
||||||
|
'max'
|
||||||
|
'valueType':
|
||||||
|
'open'
|
||||||
|
'close'
|
||||||
|
'high'
|
||||||
|
'low'
|
||||||
|
'''
|
||||||
|
if self.params['actionOptions']['extremumtype']=='max':
|
||||||
|
ans=max(self.col)
|
||||||
|
|
||||||
|
if self.params['actionOptions']['extremumtype']=='min':
|
||||||
|
ans=min(self.col)
|
||||||
|
|
||||||
|
|
||||||
|
return ans
|
||||||
|
|
||||||
|
|
||||||
|
def getMeanValue(self):
|
||||||
|
'''
|
||||||
|
actionOptions:
|
||||||
|
'MeanType':
|
||||||
|
'MA'
|
||||||
|
'SMA'
|
||||||
|
'EMA'
|
||||||
|
'WMA'
|
||||||
|
--'SMMA'
|
||||||
|
'valueType':
|
||||||
|
'open'
|
||||||
|
'close'
|
||||||
|
'high'
|
||||||
|
'low'
|
||||||
|
'window'
|
||||||
|
'span'
|
||||||
|
'weights'
|
||||||
|
'''
|
||||||
|
ans=None
|
||||||
|
if self.params['actionOptions']['MeanType']=='MA':
|
||||||
|
ans = self.col.mean()
|
||||||
|
if self.params['actionOptions']['MeanType']=='SMA':
|
||||||
|
#ans=np.convolve(self.col, np.ones(self.params['actionOptions']['window']), 'valid') / self.params['actionOptions']['window']
|
||||||
|
ans=self.col.rolling(window=self.params['actionOptions']['window']).mean()
|
||||||
|
if self.params['actionOptions']['MeanType']=='EMA':
|
||||||
|
ans=self.col.ewm(span=elf.params['actionOptions']['span'], adjust=False).mean()
|
||||||
|
if self.params['actionOptions']['MeanType']=='WMA':
|
||||||
|
try:
|
||||||
|
weights=self.params['actionOptions']['weights']
|
||||||
|
except KeyError:
|
||||||
|
weights=np.arange(1,self.params['actionOptions']['window']+1)
|
||||||
|
ans=self.col.rolling(window=self.params['actionOptions']['window']).apply(lambda x: np.sum(weights*x) / weights.sum(), raw=False)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return(ans)
|
||||||
|
|
||||||
Loading…
x
Reference in New Issue
Block a user