def setUpClass(self): Logger.pushLogData("unitTesting", __name__) forceWorkingDirectory() pyswing.globals.potentialRuleMatches = None pyswing.globals.equityCount = None pyswing.database.overrideDatabase("output/TestMarketRule.db") pyswing.constants.pySwingStartDate = datetime.datetime(2014, 1, 1) deleteFile(pyswing.database.pySwingDatabase) args = "-n %s" % ("unitTesting") createDatabase(args.split()) pretendDate = datetime.datetime(2015, 9, 1) with patch.object(Equity, '_getTodaysDate', return_value=pretendDate) as mock_method: self._equity = Equity("WOR.AX") self._equity.importData() indicatorADI = IndicatorADI() indicatorADI.updateIndicator() self.rule = MarketRule("Indicator_ADI", "ADI > 0") self.rule.evaluateRule()
def test_IndicatorSMA(self): indicatorADI = IndicatorADI() dataPoint = indicatorADI._indicatorDataFrame.ix['2015-08-31 00:00:00'] # These tests will fail if the Adjusted Close values change... self.assertAlmostEqual(dataPoint['ADI'], -2.00, 2) self.assertAlmostEqual(dataPoint['ADI_ROC'], 12.5, 2) self.assertAlmostEqual(dataPoint['ADI_EMA'], -1.16, 2) self.assertAlmostEqual(dataPoint['ADI_SUM'], -18.0, 2)
def updateIndicators(argv): """ Update Indicators. :param argv: Command Line Parameters. -n = Name Example: python -m pyswing.UpdateIndicators -n asx """ Logger.log(logging.INFO, "Log Script Call", {"scope": __name__, "arguments": " ".join(argv)}) Logger.pushLogData("script", __name__) marketName = "" try: shortOptions = "n:dh" longOptions = ["marketName=", "debug", "help"] opts, __ = getopt.getopt(argv, shortOptions, longOptions) except getopt.GetoptError as e: Logger.log(logging.ERROR, "Error Reading Options", {"scope": __name__, "exception": str(e)}) usage() sys.exit(2) for opt, arg in opts: if opt in ("-d", "--debug"): Logger().setLevel(logging.DEBUG) elif opt in ("-h", "--help"): print("?") usage() sys.exit() elif opt in ("-n", "--marketName"): marketName = arg if marketName != "": pyswing.database.initialiseDatabase(marketName) Logger.log(logging.INFO, "Update Indicators", {"scope": __name__, "market": marketName}) tickerCodesRelativeFilePath = "resources/%s.txt" % (marketName) market = Market(tickerCodesRelativeFilePath) # Market Indicators adiIndicator = IndicatorADI() adiIndicator.updateIndicator() # Equity Indicators for index, row in market.tickers.iterrows(): tickerCode = row[0] equity = Equity(tickerCode) equityDataFrame = equity.dataFrame() smaIndicator = IndicatorSMA(equityDataFrame, tickerCode) smaIndicator.updateIndicator() emaIndicator = IndicatorEMA(equityDataFrame, tickerCode) emaIndicator.updateIndicator() bbIndicator = IndicatorBB20(equityDataFrame, tickerCode) bbIndicator.updateIndicator() rocIndicator = IndicatorROC(equityDataFrame, tickerCode) rocIndicator.updateIndicator() macdIndicator = IndicatorMACD(equityDataFrame, tickerCode) macdIndicator.updateIndicator() stochIndicator = IndicatorSTOCH(equityDataFrame, tickerCode) stochIndicator.updateIndicator() rsiIndicator = IndicatorRSI(equityDataFrame, tickerCode) rsiIndicator.updateIndicator() adxIndicator = IndicatorADX(equityDataFrame, tickerCode) adxIndicator.updateIndicator() aroonIndicator = IndicatorAROON(equityDataFrame, tickerCode) aroonIndicator.updateIndicator() dxIndicator = IndicatorDX(equityDataFrame, tickerCode) dxIndicator.updateIndicator() TeamCity.setBuildResultText("Updated Indicators") else: Logger.log(logging.ERROR, "Missing Options", {"scope": __name__, "options": str(argv)}) usage() sys.exit(2)
def updateIndicators(argv): """ Update Indicators. :param argv: Command Line Parameters. -n = Name Example: python -m pyswing.UpdateIndicators -n asx """ Logger.log(logging.INFO, "Log Script Call", { "scope": __name__, "arguments": " ".join(argv) }) Logger.pushLogData("script", __name__) marketName = "" try: shortOptions = "n:dh" longOptions = ["marketName=", "debug", "help"] opts, __ = getopt.getopt(argv, shortOptions, longOptions) except getopt.GetoptError as e: Logger.log(logging.ERROR, "Error Reading Options", { "scope": __name__, "exception": str(e) }) usage() sys.exit(2) for opt, arg in opts: if opt in ("-d", "--debug"): Logger().setLevel(logging.DEBUG) elif opt in ("-h", "--help"): print("?") usage() sys.exit() elif opt in ("-n", "--marketName"): marketName = arg if marketName != "": pyswing.database.initialiseDatabase(marketName) Logger.log(logging.INFO, "Update Indicators", { "scope": __name__, "market": marketName }) tickerCodesRelativeFilePath = "resources/%s.txt" % (marketName) market = Market(tickerCodesRelativeFilePath) # Market Indicators adiIndicator = IndicatorADI() adiIndicator.updateIndicator() # Equity Indicators for index, row in market.tickers.iterrows(): tickerCode = row[0] equity = Equity(tickerCode) equityDataFrame = equity.dataFrame() smaIndicator = IndicatorSMA(equityDataFrame, tickerCode) smaIndicator.updateIndicator() emaIndicator = IndicatorEMA(equityDataFrame, tickerCode) emaIndicator.updateIndicator() bbIndicator = IndicatorBB20(equityDataFrame, tickerCode) bbIndicator.updateIndicator() rocIndicator = IndicatorROC(equityDataFrame, tickerCode) rocIndicator.updateIndicator() macdIndicator = IndicatorMACD(equityDataFrame, tickerCode) macdIndicator.updateIndicator() stochIndicator = IndicatorSTOCH(equityDataFrame, tickerCode) stochIndicator.updateIndicator() rsiIndicator = IndicatorRSI(equityDataFrame, tickerCode) rsiIndicator.updateIndicator() adxIndicator = IndicatorADX(equityDataFrame, tickerCode) adxIndicator.updateIndicator() aroonIndicator = IndicatorAROON(equityDataFrame, tickerCode) aroonIndicator.updateIndicator() dxIndicator = IndicatorDX(equityDataFrame, tickerCode) dxIndicator.updateIndicator() TeamCity.setBuildResultText("Updated Indicators") else: Logger.log(logging.ERROR, "Missing Options", { "scope": __name__, "options": str(argv) }) usage() sys.exit(2)