From 424f416e17e9b11421883f65d37fd022b4a0379d Mon Sep 17 00:00:00 2001 From: Redsandy <34872843+Redsandyg@users.noreply.github.com> Date: Sun, 8 May 2022 17:52:57 +0300 Subject: [PATCH] Create SignalB_B_1.py --- Siganls/SignalB_B_1.py | 138 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 138 insertions(+) create mode 100644 Siganls/SignalB_B_1.py diff --git a/Siganls/SignalB_B_1.py b/Siganls/SignalB_B_1.py new file mode 100644 index 0000000..183a9d4 --- /dev/null +++ b/Siganls/SignalB_B_1.py @@ -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 CoreDraw +import Ind_bollingerBands +import coreSignal + + + + + + + + +class SignalB_B_1(coreSignal.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.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