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