Exemplo n.º 1
0
def prod_test(tday, name='prod_test'):
    logging.basicConfig(
        filename="ctp_" + name + ".log",
        level=logging.DEBUG,
        format=
        '%(name)s:%(funcName)s:%(lineno)d:%(asctime)s %(levelname)s %(message)s'
    )
    #trader_cfg = TEST_TRADER
    user_cfg = PROD_USER
    agent_name = name
    ins_setup = {
        'm1505': (0, 0.5, 8, False),
        'RM505': (0, 0.5, 10, False),
        'rb1505': (0, 0.5, 10, False),
        'y1505': (0, 0.5, 4, False),
        'l1505': (0, 0.5, 4, False),
        'pp1505': (0, 0.5, 4, False),
        'ru1505': (0, 0.5, 1, False),
        'ag1506': (0, 0.5, 6, False),
        'au1506': (0, 0.5, 1, False),
        'j1505': (0, 0.5, 2, False),
        'al1505': (0, 0.5, 5, False),
        'IF1504': (0, 0.5, 1, True)
    }
    insts = ins_setup.keys()
    units_dt = [ins_setup[inst][2] for inst in insts]
    under_dt = [[inst] for inst in insts]
    vol_dt = [[1] for inst in insts]
    ratios = [[ins_setup[inst][1], ins_setup[inst][1]] for inst in insts]
    lookbacks = [ins_setup[inst][0] for inst in insts]
    daily_close = [ins_setup[inst][3] for inst in insts]

    dt_strat = strat_dt.DTTrader('ProdDT',
                                 under_dt,
                                 vol_dt,
                                 trade_unit=units_dt,
                                 ratios=ratios,
                                 lookbacks=lookbacks,
                                 agent=None,
                                 daily_close=False,
                                 email_notify=['*****@*****.**'])
    dt_strat.close_tday = daily_close
    strategies = [dt_strat]
    strat_cfg = {'strategies': strategies, \
                 'folder': 'C:\\dev\\src\\ktlib\\pythonctp\\pyctp\\', \
                 'daily_data_days':3, \
                 'min_data_days':1 }
    #myagent = create_agent(agent_name, user_cfg, trader_cfg, insts, strat_cfg)
    all_insts = ins_setup.keys()
    myagent, my_trader = emulator.create_agent_with_mocktrader(
        agent_name, all_insts, strat_cfg, tday)
    fut_api.make_user(myagent, user_cfg)
    myagent.resume()
    try:
        while 1:
            time.sleep(1)
    except KeyboardInterrupt:
        myagent.mdapis = []
        myagent.trader = None
Exemplo n.º 2
0
 def onRestart(self):
     if self.agent != None:
         self.scur_day = self.agent.scur_day
     save_insts = filter_main_cont(self.scur_day)
     self.agent = agent.SaveAgent(name = self.name, trader = None, cuser = None, instruments=save_insts, daily_data_days=0, min_data_days=0, tday = tday)
     self.agent.logger.addHandler(self.text_handler)
     fut_api.make_user(self.agent, misc.PROD_USER)
     return
Exemplo n.º 3
0
def rbreaker_test(tday, name='rbreaker_test'):
    logging.basicConfig(
        filename="ctp_" + name + ".log",
        level=logging.DEBUG,
        format=
        '%(name)s:%(funcName)s:%(lineno)d:%(asctime)s %(levelname)s %(message)s'
    )
    #trader_cfg = TEST_TRADER
    user_cfg = PROD_USER
    agent_name = name
    ins_setup = {
        'IF1504': [[0.35, 0.07, 0.25], 1, 30],
        'ru1509': [[0.35, 0.07, 0.25], 1, 120],
        'rb1510': [[0.35, 0.07, 0.25], 10, 20],
        'RM509': [[0.35, 0.07, 0.25], 8, 20],
        'm1509': [[0.35, 0.07, 0.25], 8, 30],
        'ag1506': [[0.35, 0.07, 0.25], 8, 40],
        'y1509': [[0.35, 0.07, 0.25], 8, 60]
    }
    insts = ins_setup.keys()
    units_rb = [ins_setup[inst][1] for inst in insts]
    under_rb = [[inst] for inst in insts]
    vol_rb = [[1] for inst in insts]
    ratios = [ins_setup[inst][0] for inst in insts]
    min_rng = [ins_setup[inst][2] for inst in insts]
    stop_loss = 0.02
    rb_strat = strat_rb.RBreakerTrader('RBreaker',
                                       under_rb,
                                       vol_rb,
                                       trade_unit=units_rb,
                                       ratios=ratios,
                                       min_rng=min_rng,
                                       trail_loss=stop_loss,
                                       freq=1,
                                       agent=None,
                                       email_notify=['*****@*****.**'])
    strategies = [rb_strat]
    strat_cfg = {'strategies': strategies, \
                 'folder': 'C:\\dev\\src\\ktlib\\pythonctp\\pyctp\\', \
                 'daily_data_days':1, \
                 'min_data_days':1 }
    #myagent = create_agent(agent_name, user_cfg, trader_cfg, insts, strat_cfg)
    all_insts = ins_setup.keys()
    myagent, my_trader = emulator.create_agent_with_mocktrader(
        agent_name, all_insts, strat_cfg, tday)
    fut_api.make_user(myagent, user_cfg)
    myagent.resume()
    try:
        while 1:
            time.sleep(1)
    except KeyboardInterrupt:
        myagent.mdapis = []
        myagent.trader = None
Exemplo n.º 4
0
def save_all(tday):
    logging.basicConfig(filename="save_all_agent.log",level=logging.INFO,format='%(name)s:%(funcName)s:%(lineno)d:%(asctime)s %(levelname)s %(message)s')
    save_insts = filter_main_cont(tday)
    app_name = 'SaveAgent'
    my_agent = agent.SaveAgent(name = app_name, trader = None, cuser = None, instruments=save_insts, daily_data_days=0, min_data_days=0, tday = tday)
    fut_api.make_user(my_agent, misc.PROD_USER)
    try:
        while 1:
            time.sleep(1)
            
    except KeyboardInterrupt:
        my_agent.mdapis = []; my_agent.trader = None
Exemplo n.º 5
0
def semi_mock(curr_date, user_cfg, insts=[['IF1412', 'IF1503']]):
    ''' 半模拟
        实际行情,mock交易
    '''
    logging.basicConfig(
        filename="ctp_semi_mock.log",
        level=logging.INFO,
        format=
        '%(name)s:%(funcName)s:%(lineno)d:%(asctime)s %(levelname)s %(message)s'
    )
    instruments = list(set(itertools.chain(*insts)))
    data_func = [
            ('d', BaseObject(name = 'ATR_20', sfunc=fcustom(data_handler.ATR, n=20), rfunc=fcustom(data_handler.atr, n=20))), \
            ('d', BaseObject(name = 'DONCH_L10', sfunc=fcustom(data_handler.DONCH_L, n=10), rfunc=fcustom(data_handler.donch_l, n=10))),\
            ('d', BaseObject(name = 'DONCH_H10', sfunc=fcustom(data_handler.DONCH_H, n=10), rfunc=fcustom(data_handler.donch_h, n=10))),\
            ('d', BaseObject(name = 'DONCH_L20', sfunc=fcustom(data_handler.DONCH_L, n=20), rfunc=fcustom(data_handler.donch_l, n=20))),\
            ('d', BaseObject(name = 'DONCH_H20', sfunc=fcustom(data_handler.DONCH_H, n=20), rfunc=fcustom(data_handler.donch_h, n=20))),\
            ('1m',BaseObject(name = 'EMA_3',     sfunc=fcustom(data_handler.EMA, n=3),      rfunc=fcustom(data_handler.ema, n=3))), \
            ('1m',BaseObject(name = 'EMA_30',    sfunc=fcustom(data_handler.EMA, n=30),     rfunc=fcustom(data_handler.ema, n=30))) \
        ]
    test_strat = strat.Strategy('TestStrat', [insts], None, data_func,
                                [[1, -1]])
    strat_cfg = {'strategies': [test_strat], \
                 'folder': 'C:\\dev\\src\\ktlib\\pythonctp\\pyctp\\', \
                 'daily_data_days':25, \
                 'min_data_days':2 }

    agent_name = "Test"
    tday = curr_date
    my_agent, my_trader = create_agent_with_mocktrader(agent_name, instruments,
                                                       strat_cfg, tday)
    fut_api.make_user(my_agent, user_cfg)

    req = BaseObject(InstrumentID='cu1502')
    my_trader.ReqQryInstrumentMarginRate(req)
    my_trader.ReqQryInstrument(req)
    my_trader.ReqQryTradingAccount(req)

    my_agent.resume()

    try:
        while 1:
            time.sleep(1)
    except KeyboardInterrupt:
        my_agent.mdapis = []
        my_agent.trader = None
    pass
Exemplo n.º 6
0
def prod_test(tday, name='prod_test'):
    logging.basicConfig(filename="ctp_" + name + ".log",level=logging.DEBUG,format='%(name)s:%(funcName)s:%(lineno)d:%(asctime)s %(levelname)s %(message)s')
    #trader_cfg = TEST_TRADER
    user_cfg = PROD_USER
    agent_name = name
    ins_setup = {'m1505':(0, 0.5, 8, False),
                'RM505':(0, 0.5, 10, False),
                'rb1505':(0,0.5, 10, False),
                'y1505':(0, 0.5, 4, False), 
                'l1505':(0, 0.5, 4, False),
                'pp1505':(0,0.5, 4, False),
                'ru1505':(0, 0.5, 1, False),
                'ag1506':(0, 0.5, 6, False),
                'au1506':(0, 0.5, 1, False),
                'j1505':(0, 0.5,  2, False),
                'al1505':(0, 0.5, 5, False),
                'IF1504':(0, 0.5, 1, True)}
    insts = ins_setup.keys()
    units_dt = [ins_setup[inst][2] for inst in insts]
    under_dt = [[inst] for inst in insts]
    vol_dt = [[1] for inst in insts]
    ratios = [[ins_setup[inst][1], ins_setup[inst][1]] for inst in insts]
    lookbacks = [ins_setup[inst][0] for inst in insts]
    daily_close = [ins_setup[inst][3] for inst in insts]

    dt_strat = strat_dt.DTTrader('ProdDT', under_dt, vol_dt, trade_unit = units_dt,
                                 ratios = ratios, lookbacks = lookbacks, 
                                 agent = None, daily_close = False, 
                                 email_notify = ['*****@*****.**'])
    dt_strat.close_tday = daily_close
    strategies = [dt_strat]
    strat_cfg = {'strategies': strategies, \
                 'folder': 'C:\\dev\\src\\ktlib\\pythonctp\\pyctp\\', \
                 'daily_data_days':3, \
                 'min_data_days':1 }
    #myagent = create_agent(agent_name, user_cfg, trader_cfg, insts, strat_cfg)
    all_insts = ins_setup.keys()
    myagent, my_trader = emulator.create_agent_with_mocktrader(agent_name, all_insts, strat_cfg, tday)
    fut_api.make_user(myagent,user_cfg)
    myagent.resume()
    try:
        while 1: time.sleep(1)
    except KeyboardInterrupt:
        myagent.mdapis = [] 
        myagent.trader = None    
Exemplo n.º 7
0
def semi_mock(curr_date, user_cfg, insts = [['IF1412', 'IF1503']]):
    ''' 半模拟
        实际行情,mock交易
    '''
    logging.basicConfig(filename="ctp_semi_mock.log",level=logging.INFO,format='%(name)s:%(funcName)s:%(lineno)d:%(asctime)s %(levelname)s %(message)s')    
    instruments = list(set(itertools.chain(*insts)))
    data_func = [ 
            ('d', BaseObject(name = 'ATR_20', sfunc=fcustom(data_handler.ATR, n=20), rfunc=fcustom(data_handler.atr, n=20))), \
            ('d', BaseObject(name = 'DONCH_L10', sfunc=fcustom(data_handler.DONCH_L, n=10), rfunc=fcustom(data_handler.donch_l, n=10))),\
            ('d', BaseObject(name = 'DONCH_H10', sfunc=fcustom(data_handler.DONCH_H, n=10), rfunc=fcustom(data_handler.donch_h, n=10))),\
            ('d', BaseObject(name = 'DONCH_L20', sfunc=fcustom(data_handler.DONCH_L, n=20), rfunc=fcustom(data_handler.donch_l, n=20))),\
            ('d', BaseObject(name = 'DONCH_H20', sfunc=fcustom(data_handler.DONCH_H, n=20), rfunc=fcustom(data_handler.donch_h, n=20))),\
            ('1m',BaseObject(name = 'EMA_3',     sfunc=fcustom(data_handler.EMA, n=3),      rfunc=fcustom(data_handler.ema, n=3))), \
            ('1m',BaseObject(name = 'EMA_30',    sfunc=fcustom(data_handler.EMA, n=30),     rfunc=fcustom(data_handler.ema, n=30))) \
        ]
    test_strat = strat.Strategy('TestStrat', [insts], None, data_func, [[1,-1]])
    strat_cfg = {'strategies': [test_strat], \
                 'folder': 'C:\\dev\\src\\ktlib\\pythonctp\\pyctp\\', \
                 'daily_data_days':25, \
                 'min_data_days':2 }

    agent_name = "Test" 
    tday = curr_date
    my_agent, my_trader = create_agent_with_mocktrader(agent_name, instruments, strat_cfg, tday)
    fut_api.make_user(my_agent,user_cfg)
    
    req = BaseObject(InstrumentID='cu1502')
    my_trader.ReqQryInstrumentMarginRate(req)
    my_trader.ReqQryInstrument(req)
    my_trader.ReqQryTradingAccount(req)    
    
    my_agent.resume()
    
    try:
        while 1: time.sleep(1)
    except KeyboardInterrupt:
        my_agent.mdapis = []; 
        my_agent.trader = None
    pass
Exemplo n.º 8
0
def rbreaker_test(tday, name='rbreaker_test'):
    logging.basicConfig(filename="ctp_" + name + ".log",level=logging.DEBUG,format='%(name)s:%(funcName)s:%(lineno)d:%(asctime)s %(levelname)s %(message)s')
    #trader_cfg = TEST_TRADER
    user_cfg = PROD_USER
    agent_name = name
    ins_setup = {'IF1504': [[0.35, 0.07, 0.25], 1,  30],
                'ru1509':  [[0.35, 0.07, 0.25], 1,  120],
                'rb1510':  [[0.35, 0.07, 0.25], 10, 20],
                'RM509' :  [[0.35, 0.07, 0.25], 8,  20],
                'm1509' :  [[0.35, 0.07, 0.25], 8,  30],
                'ag1506': [[0.35, 0.07, 0.25], 8,  40],
                'y1509' : [[0.35, 0.07, 0.25], 8,  60]}
    insts = ins_setup.keys()
    units_rb = [ins_setup[inst][1] for inst in insts]
    under_rb = [[inst] for inst in insts]
    vol_rb = [[1] for inst in insts]
    ratios = [ins_setup[inst][0] for inst in insts]
    min_rng = [ins_setup[inst][2] for inst in insts]
    stop_loss = 0.02
    rb_strat = strat_rb.RBreakerTrader('RBreaker', under_rb, vol_rb, trade_unit = units_rb,
                                 ratios = ratios, min_rng = min_rng, trail_loss = stop_loss, freq = 1, 
                                 agent = None, email_notify = ['*****@*****.**'])
    strategies = [rb_strat]
    strat_cfg = {'strategies': strategies, \
                 'folder': 'C:\\dev\\src\\ktlib\\pythonctp\\pyctp\\', \
                 'daily_data_days':1, \
                 'min_data_days':1 }
    #myagent = create_agent(agent_name, user_cfg, trader_cfg, insts, strat_cfg)
    all_insts = ins_setup.keys()
    myagent, my_trader = emulator.create_agent_with_mocktrader(agent_name, all_insts, strat_cfg, tday)
    fut_api.make_user(myagent,user_cfg)
    myagent.resume()
    try:
        while 1: time.sleep(1)
    except KeyboardInterrupt:
        myagent.mdapis = [] 
        myagent.trader = None