diff --git a/.idea/marketTrade.iml b/.idea/marketTrade.iml index d0876a7..24b4394 100644 --- a/.idea/marketTrade.iml +++ b/.idea/marketTrade.iml @@ -2,7 +2,7 @@ - + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index d56657a..8edf60b 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,4 @@ - + \ No newline at end of file diff --git a/Docs/readme.txt b/docs/readme.txt similarity index 100% rename from Docs/readme.txt rename to docs/readme.txt diff --git a/Docs/с4.drawio b/docs/с4.drawio similarity index 100% rename from Docs/с4.drawio rename to docs/с4.drawio diff --git a/Core/CoreDraw.py b/market_trade/core/CoreDraw.py similarity index 100% rename from Core/CoreDraw.py rename to market_trade/core/CoreDraw.py diff --git a/Core/CoreTraidMath.py b/market_trade/core/CoreTraidMath.py similarity index 96% rename from Core/CoreTraidMath.py rename to market_trade/core/CoreTraidMath.py index 523a80e..8ed0114 100644 --- a/Core/CoreTraidMath.py +++ b/market_trade/core/CoreTraidMath.py @@ -1,138 +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 - - - - - -class CoreMath: - - def __init__(self, base_df, params={ - 'dataType':'ohcl', - '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['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() - elif self.params['action']=='findMean': - ans = self.getMeanValue() - elif self.params['action']=='findSTD': - ans=self.getSTD() - - - 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().to_list() - - if self.params['actionOptions']['MeanType']=='EMA': - ans=self.col.ewm(span=self.params['actionOptions']['span'], adjust=False).mean().to_list() - 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).to_list() - - - - return(ans) - - def getSTD(self): - ''' - actionOptions: - window - - - - - - ''' - - ans=None - - - try: - window=self.params['actionOptions']['window'] - ans=np.asarray([]) - for i in range(len(self.col)-window+1): - ans=np.append(ans,np.std(self.col[i:i+window], ddof=1)) - - except: - #window = len(self.col) - ans=np.std(self.col, ddof=1) - - return ans - + +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 + + + + + +class CoreMath: + + def __init__(self, base_df, params={ + 'dataType':'ohcl', + '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['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() + elif self.params['action']=='findMean': + ans = self.getMeanValue() + elif self.params['action']=='findSTD': + ans=self.getSTD() + + + 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().to_list() + + if self.params['actionOptions']['MeanType']=='EMA': + ans=self.col.ewm(span=self.params['actionOptions']['span'], adjust=False).mean().to_list() + 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).to_list() + + + + return(ans) + + def getSTD(self): + ''' + actionOptions: + window + + + + + + ''' + + ans=None + + + try: + window=self.params['actionOptions']['window'] + ans=np.asarray([]) + for i in range(len(self.col)-window+1): + ans=np.append(ans,np.std(self.col[i:i+window], ddof=1)) + + except: + #window = len(self.col) + ans=np.std(self.col, ddof=1) + + return ans + diff --git a/Core/Ind_ADX.py b/market_trade/core/Ind_ADX.py similarity index 100% rename from Core/Ind_ADX.py rename to market_trade/core/Ind_ADX.py diff --git a/Core/Ind_Alligator.py b/market_trade/core/Ind_Alligator.py similarity index 100% rename from Core/Ind_Alligator.py rename to market_trade/core/Ind_Alligator.py diff --git a/Core/Ind_DonchianChannel.py b/market_trade/core/Ind_DonchianChannel.py similarity index 100% rename from Core/Ind_DonchianChannel.py rename to market_trade/core/Ind_DonchianChannel.py diff --git a/Core/Ind_Envelopes.py b/market_trade/core/Ind_Envelopes.py similarity index 100% rename from Core/Ind_Envelopes.py rename to market_trade/core/Ind_Envelopes.py diff --git a/Core/Ind_Gator.py b/market_trade/core/Ind_Gator.py similarity index 100% rename from Core/Ind_Gator.py rename to market_trade/core/Ind_Gator.py diff --git a/Core/Ind_Ishimoku.py b/market_trade/core/Ind_Ishimoku.py similarity index 100% rename from Core/Ind_Ishimoku.py rename to market_trade/core/Ind_Ishimoku.py diff --git a/Core/Ind_LRI.py b/market_trade/core/Ind_LRI.py similarity index 100% rename from Core/Ind_LRI.py rename to market_trade/core/Ind_LRI.py diff --git a/Core/Ind_STD.py b/market_trade/core/Ind_STD.py similarity index 100% rename from Core/Ind_STD.py rename to market_trade/core/Ind_STD.py diff --git a/Core/Ind_Stochastic.py b/market_trade/core/Ind_Stochastic.py similarity index 100% rename from Core/Ind_Stochastic.py rename to market_trade/core/Ind_Stochastic.py diff --git a/Core/Ind_bollingerBands.py b/market_trade/core/Ind_bollingerBands.py similarity index 100% rename from Core/Ind_bollingerBands.py rename to market_trade/core/Ind_bollingerBands.py diff --git a/Core/readme.txt b/market_trade/core/readme.txt similarity index 100% rename from Core/readme.txt rename to market_trade/core/readme.txt diff --git a/News/InvestCal.py b/market_trade/news/InvestCal.py similarity index 100% rename from News/InvestCal.py rename to market_trade/news/InvestCal.py diff --git a/News/readme.txt b/market_trade/news/readme.txt similarity index 100% rename from News/readme.txt rename to market_trade/news/readme.txt diff --git a/Siganls/Signal_1.py b/market_trade/signals/Signal_1.py similarity index 96% rename from Siganls/Signal_1.py rename to market_trade/signals/Signal_1.py index 8374ea3..be69f75 100644 --- a/Siganls/Signal_1.py +++ b/market_trade/signals/Signal_1.py @@ -24,19 +24,13 @@ from plotly.offline import init_notebook_mode, iplot from plotly.subplots import make_subplots init_notebook_mode() -import Core.CoreTraidMath -import Core.CoreDraw -import Core.Ind_bollingerBands +import market_trade.CoreTraidMath +import market_trade.CoreDraw +import market_trade.Ind_bollingerBands import Siganls.coreSignal - - - - - - -class SignalB_B_1(coreSignal.coreSignal): +class SignalB_B_1(Siganls.coreSignal): def __init__(self, IndDict={}, mode='retro', @@ -131,8 +125,5 @@ class SignalB_B_1(coreSignal.coreSignal): ans['toch']=t/(t+f) except: pass - - - return ans diff --git a/Siganls/coreSignal.py b/market_trade/signals/coreSignal.py similarity index 100% rename from Siganls/coreSignal.py rename to market_trade/signals/coreSignal.py diff --git a/Siganls/readme.txt b/market_trade/signals/readme.txt similarity index 100% rename from Siganls/readme.txt rename to market_trade/signals/readme.txt diff --git a/с4.drawio b/с4.drawio deleted file mode 100644 index e7b4f92..0000000 --- a/с4.drawio +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file