Create SignalB_B_1.py
This commit is contained in:
parent
f8e0ab8ff1
commit
424f416e17
138
Siganls/SignalB_B_1.py
Normal file
138
Siganls/SignalB_B_1.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 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_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
|
||||||
Loading…
x
Reference in New Issue
Block a user