Exemple #1
0
    def __init__(self):
        # start logger service
        from rrlib.rrLogger import logger
        from rrlib.rrPortfolio import rrPortfolio
        self.portfolio = rrPortfolio()
        self.log = logger()
        # To keep track of pending orders
        self.buyprice = None
        self.buycomm = None
        self.oneplot = False
        # starting ini parameters
        import configparser
        config = configparser.ConfigParser()
        config.read("rrlib/robotRay.ini")
        # max investment in % terms of porfolio
        # deprecating margin relates to R not maxinv
        self.maxinv = config.get('backtrader', 'maxinv')
        self.marginRequirement = float(config.get('backtrader', 'marginreq'))
        self.stoplossdistance = float(config.get('backtrader', 'stoploss'))

        # Add two MovingAverageSimple indicator and a crossover
        self.inds = dict()
        for i, d in enumerate(self.datas):
            self.inds[d] = dict()
            self.inds[d]['sma1'] = bt.indicators.SimpleMovingAverage(
                d.close, period=self.params.smashort)
            self.inds[d]['sma2'] = bt.indicators.SimpleMovingAverage(
                d.close, period=self.params.smalong)
            self.inds[d]['cross'] = bt.indicators.CrossOver(
                self.inds[d]['sma1'], self.inds[d]['sma2'])

            if i > 0:  # Check we are not on the first loop of data feed:
                if self.oneplot is True:
                    d.plotinfo.plotmaster = self.datas[0]
Exemple #2
0
 def __init__(self, *args, **kwargs):
     # starting common services
     sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
     # starting logging
     from rrlib.rrLogger import logger
     self.log = logger()
     # starting backend services
     from rrlib.rrDb import rrDbManager
     from rrlib.rrPutSellStrategy import rrPutSellStrategy as rps
     from rrlib.rrController import rrController
     self.db = rrDbManager()
     self.sellp = rps()
     self.cont = rrController()
     # starting ini parameters
     config = configparser.ConfigParser()
     config.read("rrlib/robotRay.ini")
     # Telegram API key & chat id for secure comms
     self.APIkey = config.get('telegram', 'api')
     self.chatid = config.get('telegram', 'chatid')
     self.startBot = config.get('telegram', 'startbot')
     self.log.logger.debug("  rrTelegram module starting.  ")
     # starting bot
     # self.bot = telegram.bot(self.APIkey)
     self.upd = Updater(self.APIkey)
     self.dp = self.upd.dispatcher
Exemple #3
0
 def __init__(self):
     # Starting common services
     from rrlib.rrLogger import logger, TqdmToLogger
     # Get logging service
     self.log = logger()
     self.tqdm_out = TqdmToLogger(self.log.logger)
     self.log.logger.debug("  Backtrader starting.  ")
     # starting ini parameters
     import configparser
     import math
     config = configparser.ConfigParser()
     config.read("rrlib/robotRay.ini")
     # db filename to confirm it exists
     self.source = config.get('datasource', 'source')
     if self.source == "ib":
         self.funds = str(self.getAvailableFunds())
     else:
         self.funds = config.get('portfolio', 'funds')
     if self.source == "ib":
         self.R = str(int(math.ceil(self.getAvailableFunds()*0.005 / 100.0)) * 100)
     else:
         self.R = config.get('portfolio', 'R')
     self.monthlyPremium = config.get('portfolio', 'monthlyPremium')
     if self.source == "ib":
         self.BP = float(self.getBuyingPower())
     else:
         self.BP = config.get('portfolio', 'BP')
Exemple #4
0
 def __init__(self, symbol):
     sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
     from rrlib.rrLogger import logger
     self.symbol = symbol
     self.log = logger()
     self.log.logger.debug("    Init Stock IB Data Fetcher "+str(symbol))
     self.ib = IBConnection()
Exemple #5
0
 def __init__(self):
     sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
     from rrlib.rrLogger import logger
     self.log = logger()
     # ib parameter import
     import configparser
     config = configparser.ConfigParser()
     config.read("rrlib/robotRay.ini")
     self.ib_ip = config['ib']['ip']
     self.ib_port = int(config['ib']['port'])
     self.ib = IB()
Exemple #6
0
 def __init__(self, symbol):
     sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
     from rrlib.rrLogger import logger
     self.symbol = symbol
     self.log = logger()
     self.log.logger.debug("    Init Option Public Data Fetcher for " +
                           symbol)
     # timeout import
     import configparser
     config = configparser.ConfigParser()
     config.read("rrlib/robotRay.ini")
     self.timeout = int(config['urlfetcher']['Timeout'])
Exemple #7
0
 def __init__(self, *args, **kwargs):
     # starting common services
     sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
     # starting logging
     from rrlib.rrLogger import logger
     self.log = logger()
     # starting ini parameters
     config = configparser.ConfigParser()
     config.read("rrlib/robotRay.ini")
     # Telegram API key & chat id for secure comms
     self.IFTTT = config['ifttt']['key']
     self.url = config['ifttt']['url']
     self.log.logger.debug("  rrIFTTT module starting.  ")
 def __init__(self):
     # starting common services
     sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
     # starting logging
     from rrlib.rrLogger import logger
     self.log = logger()
     # starting backend services
     from rrlib.rrDb import rrDbManager
     self.db = rrDbManager()
     # starting ini parameters
     import configparser
     config = configparser.ConfigParser()
     config.read("rrlib/robotRay.ini")
     self.log.logger.debug("  Golden Strategy module starting.  ")
Exemple #9
0
    def __init__(self, *args, **kwargs):
        self.log = logger()
        self.intro()

        # Handle Ctrl - C

        def SigIntHand(SIG, FRM):
            self.log.logger.info(
                "To close wait for prompt and enter quit or exit. Ctrl-C does not exit"
            )

        signal.signal(signal.SIGINT, SigIntHand)
        self.runCycle = 0
        self.threads = []
        self.running = True
        self.log.logger.info("Initialization finished robotRay server")
 def __init__(self, symbol):
     # starting common services
     sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
     # starting logging service
     from rrlib.rrLogger import logger
     self.symbol = symbol
     self.log = logger()
     self.log.logger.debug("    Init Stock Data Fetcher " + str(symbol))
     # starting ini parameters
     import configparser
     config = configparser.ConfigParser()
     config.read("rrlib/robotRay.ini")
     # Get datasource from IB or Public
     self.source = config.get('datasource', 'source')
     # For manual fetching set time out
     self.timeout = int(config['urlfetcher']['Timeout'])
Exemple #11
0
 def __init__(self):
     # starting common services
     sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
     # starting logging
     from rrlib.rrLogger import logger
     self.log = logger()
     # starting backend services
     from rrlib.rrDb import rrDbManager
     self.db = rrDbManager()
     # portfolio startup
     from rrlib.rrPortfolio import rrPortfolio
     self.portfolio = rrPortfolio()
     # starting ini parameters
     import configparser
     config = configparser.ConfigParser()
     config.read("rrlib/robotRay.ini")
     # daily decrease green if % stock dtd growth < -4.5%, -4.5% < yellow < 2%, red > 2%
     self.dayPriceChgGreen = config.get('sellputstrategy', 'dayPriceChgGreen')
     self.dayPriceChgRed = config['sellputstrategy']['dayPriceChgRed']
     # expected minimum monthly premium for holding the option 1%
     self.monthlyPremium = self.portfolio.monthlyPremium
     # sma200 below 0 is red, <0.1 yellow, > 0.1 green
     self.smaGreen = config['sellputstrategy']['smaGreen']
     self.smaRed = config['sellputstrategy']['smaRed']
     # sales growth quarter to quarter
     self.salesGrowthGreen = config['sellputstrategy']['salesGrowthGreen']
     self.salesGrowthRed = config['sellputstrategy']['salesGrowthRed']
     # retreive R
     self.R = self.portfolio.R
     self.availableFunds = self.portfolio.funds
     # Intraday kpi green and red
     self.IntradayKPIGreen = config['sellputstrategy']['IntradayKPIGreen']
     self.IntradayKPIRed = config['sellputstrategy']['IntradayKPIRed']
     # Get number of days to BTC on Options
     self.BTCdays = config['sellputstrategy']['BTCdays']
     # Target of premium collected before closing
     self.PremiumTarget = config['sellputstrategy']['PremiumTarget']
     # Get option expected price flexiblity to ask limit
     self.ExpPrice2Ask = config['sellputstrategy']['ExpPrice2Ask']
     # is telegram bot enabled for commands
     self.startbot = config.get('telegram', 'startbot')
     # Get verbose option boolean
     self.verbose = config['sellputstrategy']['verbose']
     self.log.logger.debug("  Put Sell Strategy module starting.  ")
Exemple #12
0
 def __init__(self, *args, **kwargs):
     # starting common services
     sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
     # starting logging service
     from rrlib.rrLogger import logger
     self.log = logger()
     # starting backend services
     from rrlib.rrDb import rrDbManager
     self.db = rrDbManager()
     self.bt = rrBacktrader()
     self.sellp = rrPutSellStrategy()
     self.rrGoldenStrategy = rrGoldenStrategy()
     # starting ini parameters
     config = configparser.ConfigParser()
     config.read("rrlib/robotRay.ini")
     # run outside trading hours
     self.oth = config.get("debug", "oth")
     self.log.logger.debug("Initialization finished robotRay controller")
     # controller runtime variables
     self.runCycle = 0
Exemple #13
0
 def __init__(self):
     # Starting common services
     from rrlib.rrLogger import logger, TqdmToLogger
     from rrlib.rrDb import rrDbManager
     # Get logging service
     self.db = rrDbManager()
     self.log = logger()
     self.tqdm_out = TqdmToLogger(self.log.logger)
     self.log.logger.debug("  Backtrader starting.  ")
     # starting ini parameters
     import configparser
     config = configparser.ConfigParser()
     config.read("rrlib/robotRay.ini")
     # db filename to confirm it exists
     self.dbFilename = config.get('backtrader', 'filename')
     self.timeframe = config.get('backtrader', 'timeframe')
     self.initializeDb()
     # Get datsource from pubic or ib
     self.source = config.get('datasource', 'source')
     # Get verbose option boolean
     self.verbose = config.get('datasource', 'verbose')
Exemple #14
0
 def __init__(self):
     # Starting common services
     from rrlib.rrLogger import logger, TqdmToLogger
     from rrlib.rrPortfolio import rrPortfolio
     # Get logging service
     self.log = logger()
     self.tqdm_out = TqdmToLogger(self.log.logger)
     self.log.logger.debug("  DB Manager starting.  ")
     # start portfolio
     self.portfolio = rrPortfolio()
     # starting ini parameters
     import configparser
     config = configparser.ConfigParser()
     config.read("rrlib/robotRay.ini")
     # db filename to confirm it exists
     self.dbFilename = config.get('DB', 'filename')
     self.initializeDb()
     # Get list of stocks to track
     self.stocks = config.get('stocks', 'stocks')
     # Get datsource from pubic or ib
     self.source = config.get('datasource', 'source')
     # Get verbose option boolean
     self.verbose = config.get('datasource', 'verbose')
Exemple #15
0
 def __init__(self):
     # Starting common services
     from rrlib.rrLogger import logger, TqdmToLogger
     from rrlib.rrBacktrader import rrBacktrader
     from rrlib.rrPortfolio import rrPortfolio
     from rrlib.rrDb import rrDbManager as db
     # Get logging service
     self.log = logger()
     self.tqdm_out = TqdmToLogger(self.log.logger)
     self.log.logger.debug("  Backtrader starting.  ")
     # startup backtrading db
     self.btdb = rrBacktrader()
     self.portfolio = rrPortfolio()
     self.db = db()
     # starting ini parameters
     import configparser
     config = configparser.ConfigParser()
     config.read("rrlib/robotRay.ini")
     # max investment in % terms of porfolio
     # deprecating margin relates to R not maxinv
     self.maxinv = config.get('backtrader', 'maxinv')
     self.commission = float(config.get('backtrader', 'commission'))
     self.marginRequirement = float(config.get('backtrader', 'marginreq'))
     self.stoplossdistance = float(config.get('backtrader', 'stoploss'))
     # for now use IB like commisions
     self.COMMINFO_DEFAULT = dict(
         stocklike=False,  # Futures-like
         commtype=bt.CommissionInfo.COMM_FIXED,  # fixed price per asset
         commission=2.0,  # Standard IB Price for futures
         # mult=1000.0,  # multiplier default 1
         margin=float(self.portfolio.R)/(1-(1-self.stoplossdistance)) * \
         self.marginRequirement  # IB avg 27% del costo de la trx en acciones
     )
     # Generate Cerebro
     self.cerebro = bt.Cerebro()
     self.cerebro.broker.setcash(float(self.portfolio.funds))
Exemple #16
0
 def __init__(self):
     # Starting common services
     from rrlib.rrLogger import logger, TqdmToLogger
     from rrlib.rrDb import rrDbManager
     # Get logging service
     self.db = rrDbManager()
     self.log = logger()
     self.tqdm_out = TqdmToLogger(self.log.logger)
     self.log.logger.debug("  Daily scanner starting.  ")
     # starting ini parameters
     import configparser
     config = configparser.ConfigParser()
     config.read("rrlib/robotRay.ini")
     # set patterns for daily detection
     self.patterns = pd.DataFrame(
         np.array([
             # ['CDL2CROWS', 'Two Crows', 'Low reversal w conf', '5.7 % ', '35.2 %'],
             [
                 'CDL3BLACKCROWS', '* Three Black Crows *', 'High R2BE',
                 '-0.144', '0.286'
             ],
             [
                 'CDL3INSIDE', 'Three Inside Up/Down', 'Medium Reversal',
                 '0.062', '0.354'
             ],
             [
                 'CDL3LINESTRIKE', '* Three Line Strike *', 'High R2BU',
                 '0.108', '0.369'
             ],
             # ['CDL3OUTSIDE', 'Three Outside Up/Down', 'Medium Reversal', '0.051', '0.35'],
             [
                 'CDL3STARSINSOUTH', 'Three Stars In The South',
                 'Rare Medium R2BU w conf', '0.20', '0.40'
             ],
             [
                 'CDL3WHITESOLDIERS', '* Three Advancing White Soldiers *',
                 'High R2BU', '-0.001', '0.333'
             ],
             [
                 'CDLABANDONEDBABY', '* Abandoned Baby *', 'High reversal',
                 '-0.046)', '0.318'
             ],
             ['CDLADVANCEBLOCK', 'Advance Block', '', '0.142', '0.381'],
             # ['CDLBELTHOLD' , 'Belt-hold', '','0.037', '0.346'],            [
             [
                 'CDLBREAKAWAY', 'Breakaway',
                 'High Over(Sold/bought) 5 day use as conf', '0.109', '0.37'
             ],
             [
                 'CDLCLOSINGMARUBOZU', 'Closing Marubozu',
                 'Rare High confirmation', '-0.047', '0.318'
             ],
             [
                 'CDLCONCEALBABYSWALL', '* Concealing Baby Swallow *',
                 'Medium Rare R2BU', '0.50', '0.50'
             ],
             [
                 'CDLCOUNTERATTACK', 'Counterattack', 'Low Reversal w conf',
                 '0', '0'
             ],
             [
                 'CDLDARKCLOUDCOVER', 'Dark Cloud Cover', '', '0.061',
                 '0.354'
             ],
             # ['CDLDOJI','Doji','','',''],
             ['CDLDOJISTAR', 'Doji Star', '', '0.238', '0.413'],
             # ['CDLDRAGONFLYDOJI', 'Dragonfly Doji', '', '0.054', '0.351'],
             [
                 'CDLENGULFING', 'Engulfing Pattern', 'Low Reversal',
                 '0.104', '0.368'
             ],
             [
                 'CDLEVENINGDOJISTAR', 'Evening Doji Star', 'High R2BE', '',
                 ''
             ],
             [
                 'CDLEVENINGSTAR', '* Evening Star *', 'Rare High R2BE',
                 '0.006', '0.335'
             ],
             # ['CDLGAPSIDESIDEWHITE', 'Up/Down-gap side-by-side white lines', '', '0.013', '0.338'],
             ['CDLGRAVESTONEDOJI', 'Gravestone Doji', '', '0.196', '0.399'],
             ['CDLHAMMER', 'Hammer', 'Medium R2BU', '0.225', '0.408'],
             [
                 'CDLHANGINGMAN', 'Hanging Man', 'Medium R2BE', '0.075',
                 '0.358'
             ],
             ['CDLHARAMI', 'Harami Pattern', '', '0.219', '0.406'],
             [
                 'CDLHARAMICROSS', 'Harami Cross Pattern', '', '0.207',
                 '0.402'
             ],
             ['CDLHIGHWAVE', 'High-Wave Candle', '', '0.263', '0.421'],
             ['CDLHIKKAKE', 'Hikkake Pattern', '', '0.11', '0.371'],
             [
                 'CDLHIKKAKEMOD', 'Modified Hikkake Pattern', '', '0.14',
                 '0.381'
             ],
             ['CDLHOMINGPIGEON', 'Homing Pigeon', '', '0.344', '0.448'],
             [
                 'CDLIDENTICAL3CROWS', '* Identical Three Crows *',
                 'High R2BE', '-0.078', '0.307'
             ],
             # ['CDLINNECK', 'In-Neck Pattern', 'Low Continuation', '0.047', '0.349'],
             [
                 'CDLINVERTEDHAMMER', 'Inverted Hammer', 'Medium R2BU',
                 '0.182', '0.394'
             ],
             # ['CDLKICKING', 'Kicking', '', '-0.11', '0.294'],
             # ['CDLKICKINGBYLENGTH','Kicking', 'bull/bear determined by the longer marubozu', '-0.117', '0.294'],
             ['CDLLADDERBOTTOM', 'Ladder Bottom', '', '-0.147', '0.382'],
             # ['CDLLONGLEGGEDDOJI', 'Long Legged Doji', '', '', ''],
             # ['CDLMARUBOZU', 'Marubozu', '', '-0.085', '0.305'],
             ['CDLMATCHINGLOW', 'Matching Low', '', '0.261', '0.42'],
             # ['CDLMATHOLD', 'Mat Hold', '','-0.40', '0.20'],
             ['CDLMORNINGDOJISTAR', 'Morning Doji Star', '', '0', '0'],
             ['CDLMORNINGSTAR', 'Morning Star', '', '0.152', '0.384'],
             # ['CDLONNECK', 'On-Neck Pattern', '', '0.015', '0.338'],
             ['CDLPIERCING', 'Piercing Pattern', '', '0.185', '0.395'],
             ['CDLRICKSHAWMAN', 'Rickshaw Man', '', '0.304', '0.435'],
             [
                 'CDLRISEFALL3METHODS', 'Rising/Falling Three Methods', '',
                 '0.088', '0.363'
             ],
             # ['CDLSEPARATINGLINES', 'Separating Lines', '', '-0.049', '0.317'],
             ['CDLSHOOTINGSTAR', 'Shooting Star', '', '0.135', '0.378'],
             # ['CDLSHORTLINE', 'Short Line Candle', '', '', ''],
             ['CDLSPINNINGTOP', 'Spinning Top', '', '0.271', '0.424'],
             # ['CDLSTALLEDPATTERN', 'Stalled Pattern', '', '', ''],
             ['CDLSTICKSANDWICH', 'Stick Sandwich', '', '0.273', '0.424'],
             # ['CDLTAKURI', 'Takuri (Dragonfly Doji with very long lower shadow)','', '0.038', '0.346'],
             ['CDLTASUKIGAP', 'Tasuki Gap', '', '0.17', '0.39'],
             # ['CDLTHRUSTING', 'Thrusting Pattern', '', '0.051', '0.35'],
             # ['CDLTRISTAR', 'Tristar Pattern', '', '0.032', '0.344'],
             ['CDLUNIQUE3RIVER', 'Unique 3 River', '', '0.206', '0.402'],
             [
                 'CDLUPSIDEGAP2CROWS', 'Upside Gap Two Crows', '', '0.158',
                 '0.386'
             ],
             [
                 'CDLXSIDEGAP3METHODS', 'Upside/Downside Gap Three Methods',
                 '', '0.133', '0.378'
             ]
         ]),
         columns=['cod', 'desc', 'impact', 'roi', 'successrate'])