Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
wiseplat
GitHub Repository: wiseplat/python-code
Path: blob/master/ invest-robot-contest_NeuroInvest-main/NeuroInvest/trade_moment.py
5929 views
1
from config import scanInterval, scanPeriod
2
from kalman import Kalman
3
from utility import currentTimestamp
4
5
class TradeMoment:
6
__lastMomentStart = None
7
__kalman = None
8
__tradeX = None
9
__tradeY = None
10
__predictionsX = None
11
__predictionsY = None
12
13
def getMomentData(self, history, tradeModel):
14
now = currentTimestamp()
15
momentStart = now - scanPeriod
16
17
if self.__lastMomentStart is None or self.__lastMomentStart < momentStart - scanInterval:
18
dayHistory = {valueTime: value for valueTime, value in history.items() if valueTime >= momentStart}
19
20
if dayHistory is not None and len(dayHistory) > 0:
21
self.__kalman = Kalman(dayHistory)
22
self.__tradeX, self.__tradeY = zip(*dayHistory.items())
23
24
if tradeModel is not None:
25
self.__updatePredictions(tradeModel, now)
26
27
return {"tradeX": self.__tradeX, "tradeY": self.__tradeY, "smoothY": list(self.__kalman.getSmoothData()),
28
"predictionsX": self.__predictionsX, "predictionsY": self.__predictionsY}
29
30
return None
31
32
33
def __updatePredictions(self, tradeModel, nowTime):
34
predictions = tradeModel.tradePredict(list(self.__tradeY), nowTime)
35
36
if predictions is not None:
37
self.__predictionsX, self.__predictionsY = zip(*predictions.items())
38
39
self.__predictionsX = self.__tradeX[len(self.__tradeX) - 1:] + self.__predictionsX
40
self.__predictionsY = self.__tradeY[len(self.__tradeY) - 1:] + self.__predictionsY
41