changing structure

This commit is contained in:
2022-05-10 14:27:43 +03:00
parent 6dfe72a3d9
commit c2ddfc0536
23 changed files with 144 additions and 154 deletions

View File

@@ -0,0 +1,129 @@
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 market_trade.CoreTraidMath
import market_trade.CoreDraw
import market_trade.Ind_bollingerBands
import Siganls.coreSignal
class SignalB_B_1(Siganls.coreSignal):
def __init__(self,
IndDict={},
mode='retro',
):
super().__init__(name='1.1',mode=mode,target='nextBar',valeType='price')
self.IndDict=IndDict
self.BB=Ind_bollingerBands.BB(
IndDict['BB']['df'],
IndDict['BB']['params'],
IndDict['BB']['needFig'],
IndDict['BB']['showOnlyIndex'],
IndDict['BB']['drawFig']
)
self.getAns()
if mode=='retro':
self.analiz=self.analiz()
def getAns(self):
if self.mode=='retro':
df=self.BB.base_df#.set_index('date')
#print (df)
df_ind=pd.DataFrame.from_dict({
'date': self.BB.ans['x'],
'BB': self.BB.ans['BB'],
'pSTD': self.BB.ans['pSTD'],
'mSTD': self.BB.ans['mSTD'],
})
self.df_ind=df_ind
#df_ind=df_ind.set_index('date')
#print(df_ind)
dictSig={}
ans_sig=[]
analizLst=[]
difSize=len(df)-len(df_ind)
for i in range(len(df_ind)):
#print(df.iloc[i+dif]['date'],df_ind.iloc[i]['date'])
if df.iloc[i+difSize]['close'] >df_ind.iloc[i]['pSTD']:
ans_sig.append(1)
elif df.iloc[i+difSize]['close'] <df_ind.iloc[i]['mSTD']:
ans_sig.append(-1)
else:
ans_sig.append(0)
self.ans={
'signal':ans_sig,
'dttm':self.BB.ans['x']
}
return self.ans
def analiz(self):
df=self.BB.base_df
dictSig={}
ans_sig=self.ans['signal']
difSize=len(df)-len(self.df_ind)
analizLst=[]
for i in range(len(self.df_ind)-1):
if ans_sig[i]==1 and df.iloc[i+difSize]['close']<df.iloc[i+difSize+1]['high']:
analizLst.append(1)
elif ans_sig[i]==1 and df.iloc[i+difSize]['close']>=df.iloc[i+difSize+1]['low']:
analizLst.append(-1)
elif ans_sig[i]==-1 and df.iloc[i+difSize]['close']>df.iloc[i+difSize+1]['low']:
analizLst.append(1)
elif ans_sig[i]==-1 and df.iloc[i+difSize]['close']<=df.iloc[i+difSize+1]['high']:
analizLst.append(-1)
else:
analizLst.append(0)
self.analizLst=analizLst
t=0
f=0
zeroNum=0
for i in self.analizLst:
if i==1:
t=t+1
if i==-1:
f=f+1
if i==0:
zeroNum=zeroNum+1
ans={}
ans['chstota']=sum(self.analizLst)/len(self.analizLst)
ans['zeroNum %']=zeroNum/len(self.analizLst)
ans['t %']=t/len(self.analizLst)
ans['f %']=f/len(self.analizLst)
try:
ans['toch']=t/(t+f)
except:
pass
return ans

View File

@@ -0,0 +1,14 @@
class coreSignal():
def __init__ (self,
#indDict={},
name='NoName',
mode='retro',
target=None,
valeType=None
):
self.ans=None
self.name=name
#self.indDict=indDict
self.mode=mode
self.target=target # nextBar
self.valeType=valeType #price o c h l

View File

@@ -0,0 +1,13 @@
Signal_1
BB синал предсказывающий будет ли цена за следубщий бар больше\меньше цены закртыия текущего, если текущиий бар закрылся ниже\выше диапазона BB
ind_params={'MeanType':'SMA','window':5,'valueType':'low','kDev':2}
#df_candle[:3000],ind_params,True,False,True
indEl1={
'df':df_candle[:3000],
'params':ind_params,
'needFig':False,
'showOnlyIndex':False,
'drawFig':True
}
a=Signal_1.SignalB_B_1({'BB':indEl1})