示例#1
0
def on_pos(context, pos_handler, request_id, source, rcv_time):
    # print 'on_pos..'
    # print pos_handler.dump()
    # print pos_handler.get_tickers()

    stbase.TradeManager().kf_proxy.on_pos(pos_handler, request_id, source,
                                          rcv_time)
示例#2
0
def init():
    tm = stbase.TradeManager().init(context,logpath='z:/ams/main',strategy_name='main')

    stock = tm.addStock('1000001')

    stock2 = tm.addStock('1300252')
    stock3 = tm.addStock('1300310')
    stock4 = tm.addStock('1300025')


    stock.add_tick_handler(on_tick)
    stock2.add_tick_handler(on_tick)
    stock3.add_tick_handler(on_tick)
    stock4.add_tick_handler(on_tick)


    # stock.add_bar_handler(on_bar_m1,'m1')
    stock.add_bar_handler(on_bar_m5,'m5')
    stock.add_bar_handler(on_bar_m15,'m15')

    stock2.add_bar_handler(on_bar_m5, 'm5')
    stock2.add_bar_handler(on_bar_m15, 'm15')

    stock3.add_bar_handler(on_bar_m5, 'm5')
    stock3.add_bar_handler(on_bar_m15, 'm15')

    stock4.add_bar_handler(on_bar_m5, 'm5')
    stock4.add_bar_handler(on_bar_m15, 'm15')


    print_line(hash_object(context.Strategy.Product))
    prd = context.Strategy.Product
    print_line(prd.Name)
    print_line(prd.Stk_UseableAmt)
    print_line(prd.Stk_CurrentAmt)
    print_line(prd.Stk_StkValue)
    pos_list = prd.S_Pos
    print_line('len:{}'.format(len(pos_list)))
    pos_list=[]
    for pos in pos_list:
        print_line('ServerCode:{}'.format(pos.ServerCode))
        print_line('BsFlag:{}'.format(pos.BsFlag))
        print_line('CurrentQty:{}'.format(pos.CurrentQty))
        print_line('PositionQty:{}'.format(pos.PositionQty))
        print_line('TDTotalQty:{}'.format(pos.TDTotalQty))
        print_line('YdQty:{}'.format(pos.YdQty))
        print_line('TdQty:{}'.format(pos.TdQty))
        print_line('YdClosingqty:{}'.format(pos.YdClosingqty))
        print_line('TdClosingqty:{}'.format(pos.TdClosingqty))
        print_line('MarginUsedAmt:{}'.format(pos.MarginUsedAmt))
        print_line('OpenAvgPrice:{}'.format(pos.OpenAvgPrice))
        print_line('PostCostAmt:{}'.format(pos.PostCostAmt))
        print_line('--'*20)


    for bar in stock.get_hist_bars(ktype='week',limit=10):
        print_line(stock.bar_data(bar))

    print 'last_price:{} ,yesterday_close_price:{}'.format(stock.last_price , stock.yesterday_close_price)
示例#3
0
def record_signal(code, data, name=''):
    stbase.print_line(data, stdout=True)

    if name:
        name = name + '_' + code + '.signal'
        fname = stbase.TradeManager().getDataPath(name)
        data = current_datetime_string() + ' ' + data
        fp = open(fname, 'a+')
        # fp.writelines([data])
        fp.write(data + '\n')
        fp.close()
示例#4
0
def strategy_inday(code, bar, num=100, limit=0.02):
    """日内涨跌幅策略
    @:param code: 股票代码
    @:param num :买卖数量
    @:param limit: 价格浮动限
    """
    stock = stbase.TradeManager().getStock(code)

    zf = stock.last_price / stock.yesterday_close_price - 1
    if zf <= -limit:
        #跌幅过限
        amount = stbase.TradeManager().kf_proxy.get_ammount()
        pos_sum = stock.pos.net_total

        if stock.last_price * pos_sum <= amount * 0.1:
            """持仓资金占总资金 <= 10% """
            stbase.TradeManager().kf_proxy.buy(code, num)
    elif zf >= limit:
        if stock.pos.net_total >= num:
            stbase.TradeManager().kf_proxy.sell(code, num)
示例#5
0
def strategy_ma(code=CODE, interval=5):
    """计算均线策略"""
    close = get_bars(code, interval)
    print 'size:', len(close)
    # print close
    # nbar = interval

    a, b = ta.MA(close, 5)[-2:]

    c, d = ta.MA(close, 10)[-2:]

    if b >= d and a < c:
        num = 100
        amount = stbase.TradeManeager().kf_proxy.get_ammount()
        last_price = stbase.TradeManager().getStock(code).last_price
        cost = last_price * num
        if cost <= amount * 0.1:
            stbase.TradeManager().kf_proxy.buy(code, num)
    if b <= d and a > c:
        num = 100
        if num <= stbase.TradeManager().getStock(code).pos.net_yd:
            stbase.TradeManager().kf_proxy.sell(code, num)
示例#6
0
文件: pufa.py 项目: liguifan/Tibet
def init():
    tm = stbase.TradeManager().init(context,
                                    logpath='z:/ams/pufa',
                                    strategy_name='pufa')  # 不保存行情数据

    codes = ['1000001', '1300252', '1300310', '1300025', '0600000']
    # stock = tm.addStock('0600000')
    # stock = tm.addStock('1300310') #宜通世纪
    stocks = []
    for code in codes:
        stock = tm.addStock(code)
        stocks.append(stock)
        stock.add_tick_handler(on_tick)
示例#7
0
def on_tick(stock, stk):
    import simple_st
    # simple_st.strategy_inday(stock.code)

    # stk = stock.stk
    # print_line(stk.ServerCode,stk.KnockPrice,stk.KnockTime,stk.BuyPrice1
    print_line(stock.last_price)
    if not context.data.get('buy', False):
        print 'do buy()..'
        # order_no = stbase.TradeManager().xy_proxy.buy(stock.code,stock.last_price,100)
        order_no = stbase.TradeManager().xy_proxy.sell(stock.code,
                                                       stock.last_price, 100)
        context.data['buy'] = True
        print 'order_no is:' + str(order_no)
示例#8
0
def on_tick(stock, stk):
    import simple_st
    # simple_st.strategy_inday(stock.code)

    # stk = stock.stk
    # print_line(stk.ServerCode,stk.KnockPrice,stk.KnockTime,stk.BuyPrice1
    print_line(stock.last_price)
    print_line('BuyPrice1:{} BuyQty1:{} SellPrice1:{} SellQty1:{}'.format(
        stk.BuyPrice1, stk.BuyQty1, stk.SellPrice1, stk.SellQty1))
    if not context.data.get('buy', False):
        qty = int((stk.SellQty1 * 0.1) / 100) * 100
        print 'do buy()..', qty
        order_no = stbase.TradeManager().xy_proxy.buy(stock.code,
                                                      stk.SellPrice1, qty)
        # order_no = stbase.TradeManager().xy_proxy.sell(stock.code,stk.BuyPrice1,100)
        # context.data['buy'] = True
        print 'order_no is:' + str(order_no)
示例#9
0
文件: md_rec.py 项目: liguifan/Tibet
def init():
    tm = stbase.TradeManager().init(context,
                                    logpath='z:/ams/md',
                                    strategy_name='md_rec',
                                    market_data_save=True)

    codes = [
        '1000001', '1300252', '1300310', '1300025', '0600000', '1300638',
        '1300504', '0601162'
    ]

    # stock = tm.addStock('0600000')
    # stock = tm.addStock('1300310') #宜通世纪
    stocks = []
    for code in codes:
        stock = tm.addStock(code)
        stocks.append(stock)
示例#10
0
def strategy_ma(code=CODE, interval=5):
    """计算均线策略"""
    # close = get_bars(code, interval)
    stock = stbase.TradeManager().getStock(code)
    bars = stock.get_hist_bars('m{}'.format(interval), limit=30)
    close = map(lambda _: _.Close, bars)

    close = np.array(close)
    stbase.print_line('size:%s' % len(close))

    # if not close:
    #     print 'error: close is null.'
    print close.tolist()

    stbase.print_line(close.tolist())
    print 'to ma calculating...'
    ma5 = ta.MA(close, 5)

    ma10 = ta.MA(close, 10)

    a, b = ma5[-2:]
    c, d = ma10[-2:]

    strategy_name = 'strategy_ma'
    # print 'ma5:',ma5
    # print 'ma10:',ma10
    stbase.print_line('=={}=={}=='.format(code, interval))
    stbase.print_line('(strategy_ma) ma5:{}'.format(ma5.tolist()),
                      stdout=False)
    stbase.print_line('(strategy_ma) ma10:{}'.format(ma10.tolist()),
                      stdout=False)

    stbase.print_line('(strategy_ma)a:{} b:{} c:{} d:{}'.format(a, b, c, d),
                      stdout=False)

    last_price = stbase.TradeManager().getStock(code).last_price
    if b >= d and a < c:
        num = 100
        # stbase.print_line('-*'*20,stdout=False)
        # stbase.print_line('strategy_ma signal occur. (b >= d and a< c)',stdout=False)
        # stbase.print_line('a:{} b:{} c:{} d:{}'.format(a,b,c,d),stdout=False)

        stbase.record_signal(code, '-*' * 20)
        stbase.record_signal(code, '=={}=={}=='.format(code, interval))
        stbase.record_signal(code,
                             'strategy_ma signal occur. (b >= d and a< c)')
        stbase.record_signal(code, 'a:{} b:{} c:{} d:{}'.format(a, b, c, d))

        amount = stbase.TradeManager().xy_proxy.get_stock_amount_useable()

        cost = last_price * num
        if cost <= amount * 0.1:
            stbase.record_signal(
                code, 'do buy: {} , {} , {}'.format(code, last_price, num))
            stbase.TradeManager().xy_proxy.buy(code, last_price, num)

    if b <= d and a > c:
        num = 100
        # stbase.print_line('-*' * 20, stdout=False)
        # stbase.print_line('strategy_ma signal occur. (b <=d and a > c)',stdout=False)
        # stbase.print_line('a:{} b:{} c:{} d:{}'.format(a, b, c, d),stdout=False)

        stbase.record_signal(code, '-*' * 20)
        stbase.record_signal(code, '=={}=={}=='.format(code, interval))
        stbase.record_signal(code,
                             'strategy_ma signal occur.  (b <=d and a > c)')
        stbase.record_signal(code, 'a:{} b:{} c:{} d:{}'.format(a, b, c, d))

        if num <= stbase.TradeManager().getStock(code).pos.net_yd:
            stbase.record_signal(
                code, 'do sell: {} ,{}, {}'.format(code, last_price, num))
            stbase.TradeManager().xy_proxy.sell(code, last_price, num)
示例#11
0
文件: pufa.py 项目: liguifan/Tibet
def strategy_inday(code, num=100, limit=0.02, base_price=0):
    """日内涨跌幅策略
    @:param code: 股票代码
    @:param num :买卖数量
    @:param limit: 价格浮动限
    base_price : 参考基准价格 , 0 表示采用昨收盘价格

    当日仅仅允许买卖各触发一次

    """

    stock = stbase.TradeManager().getStock(code)

    if base_price == 0:
        zf = stock.last_price / stock.yesterday_close_price - 1
    else:
        zf = stock.last_price / base_price - 1

    st_price = stock.yesterday_close_price * (1 + limit)
    st_price = round(st_price, 2)
    # stbase.println('st_price:%s  '%st_price)
    stbase.println('zf:{} limit:{} diff:{}'.format(zf, limit, zf - limit))

    if zf <= -limit and stock.any.flag_buy:
        stbase.print_line(
            '(strategy_inday) zf:%s last_price:%s  base_price:%s' %
            (zf, stock.last_price, base_price))

        stbase.record_signal(code, '=={}=='.format(code))
        stbase.record_signal(code,
                             'strategy_inday signal occur. (zf <= -limit)')
        stbase.record_signal(code, 'zf:{} limit:{}'.format(zf, limit))
        #跌幅过限
        amount = stbase.TradeManager().xy_proxy.get_stock_amount_useable()
        pos_sum = stock.pos.net_total
        #
        if stock.pos.post_cost_amount <= amount * 0.1:
            """持仓资金占总资金 <= 10% """
            stbase.record_signal(
                code, 'do buy: {} ,{}, {}'.format(code, st_price, num))
            stbase.TradeManager().xy_proxy.buy(code, st_price, num)
            strategy_inday_buy_count[code] = 1
            stock.any.flag_buy = 0
            stock.any.flag_sell = 1

    if zf >= limit and stock.any.flag_sell:
        # print '=*'*20
        stbase.print_line(
            '(strategy_inday) zf:%s last_price:%s  base_price:%s' %
            (zf, stock.last_price, base_price))

        stbase.TM.record_signal(code, '=={}=='.format(code))
        stbase.TM.record_signal(code, '-*' * 20)
        stbase.TM.record_signal(code,
                                'strategy_inday signal occur. (zf >= -limit)')
        stbase.TM.record_signal(code, 'zf:{} limit:{}'.format(zf, limit))
        stbase.TM.record_signal(
            code, 'net_total:{} net_yd:{}'.format(stock.pos.net_total,
                                                  stock.pos.net_yd))
        if stock.pos.net_total >= num:
            stbase.TM.record_signal(
                code, 'do sell: {} ,{}, {}'.format(code, st_price, num))
            stbase.TradeManager().xy_proxy.sell(code, st_price, num)
            strategy_inday_sell_count[code] = 1
            stock.any.flag_sell = 0
            stock.any.flag_buy = 1
示例#12
0
#coding:utf-8
from utils.useful import hash_object
from functools import partial
import stbase
import simple_st



context = None
print_line = stbase.TradeManager().print_line
def init():
    tm = stbase.TradeManager().init(context,logpath='z:/ams/main',strategy_name='main')

    stock = tm.addStock('1000001')

    stock2 = tm.addStock('1300252')
    stock3 = tm.addStock('1300310')
    stock4 = tm.addStock('1300025')


    stock.add_tick_handler(on_tick)
    stock2.add_tick_handler(on_tick)
    stock3.add_tick_handler(on_tick)
    stock4.add_tick_handler(on_tick)


    # stock.add_bar_handler(on_bar_m1,'m1')
    stock.add_bar_handler(on_bar_m5,'m5')
    stock.add_bar_handler(on_bar_m15,'m15')

    stock2.add_bar_handler(on_bar_m5, 'm5')
示例#13
0
def init():
    tm = stbase.TradeManager().init(context, logpath='z:/ams/test')

    # stock = tm.addStock('1000001')
    # stock = tm.addStock('0600006')
    stock = tm.addStock('0600000')
    # stock = tm.addStock('1300123')
    #
    # stock = tm.addStock('1300252')
    #
    stock.add_tick_handler(on_tick)
    # stock.add_bar_handler(on_bar_m1,'m1')
    # stock.add_bar_handler(on_bar_m5,'m5')
    # stock.add_bar_handler(on_bar_m15,'m15')

    # print '='*20

    print_line(hash_object(context.Strategy.Product))
    prd = context.Strategy.Product
    print_line(prd.Name)
    print_line(prd.Stk_UseableAmt)
    print_line(prd.Stk_CurrentAmt)
    print_line(prd.Stk_StkValue)
    pos_list = prd.S_Pos
    print_line('len:{}'.format(len(pos_list)))
    pos_list = []
    for pos in pos_list:
        # if not pos.ServerCode == '1000001':
        # if not pos.ServerCode == '0600000':
        # if not pos.ServerCode == '1300252':
        #     continue
        print_line('ServerCode:{}'.format(pos.ServerCode))
        print_line('BsFlag:{}'.format(pos.BsFlag))
        print_line('CurrentQty:{}'.format(pos.CurrentQty))
        print_line('PositionQty:{}'.format(pos.PositionQty))
        print_line('TDTotalQty:{}'.format(pos.TDTotalQty))
        print_line('YdQty:{}'.format(pos.YdQty))
        print_line('TdQty:{}'.format(pos.TdQty))
        print_line('YdClosingqty:{}'.format(pos.YdClosingqty))
        print_line('TdClosingqty:{}'.format(pos.TdClosingqty))
        print_line('MarginUsedAmt:{}'.format(pos.MarginUsedAmt))
        print_line('OpenAvgPrice:{}'.format(pos.OpenAvgPrice))
        print_line('PostCostAmt:{}'.format(pos.PostCostAmt))
        print_line('--' * 20)

    # for bar in stock.get_hist_bars(ktype='week',limit=10):
    #     print_line(stock.bar_data(bar))
    #
    # print 'last_price:{} ,yesterday_close_price:{}'.format(stock.last_price , stock.yesterday_close_price)

    # simple_st.strategy_ma(stock.code,5)

    print_line('get_stock_amount_useable:%s' %
               stbase.TradeManager().xy_proxy.get_stock_amount_useable())
    print_line('get_stock_amount_asset:%s' %
               stbase.TradeManager().xy_proxy.get_stock_amount_asset())

    print_line('pos detail:%s' % stock.pos)

    # bars = stock.get_hist_bars('m1', limit=30)
    # bars = stock.get_hist_bars('m5', limit=30)
    # close = map(lambda _: _.Close, bars)

    # print_line(close)

    # test - ordering

    # stbase.TradeManager().addTimer(on_timer)
    # stock.add_trade_handler(on_trade)

    # print 'code:',stock.code
    # print 'net_yd:',stock.pos.net_yd
    # print str(stock)

    #查询委托订单
    # print_line("orders:%s"% len(context.Strategy.All_Order))
    orders = stbase.TradeManager().xy_proxy.get_orders().filter(code='0600008',
                                                                serial=39917)
    for order in orders.to_list():
        println(stbase.format_order(order))
示例#14
0
def on_tick(context, md, source, rcv_time):
    stbase.TradeManager().kf_proxy.on_tick(md, source, rcv_time)
示例#15
0
def strategy_inday(code, num=100, limit=0.02):
    """日内涨跌幅策略
    @:param code: 股票代码
    @:param num :买卖数量
    @:param limit: 价格浮动限

    当日仅仅允许买卖各触发一次

    """
    global strategy_inday_buy_count
    global strategy_inday_sell_count

    stock = stbase.TradeManager().getStock(code)

    zf = stock.last_price / stock.yesterday_close_price - 1
    # stbase.print_line('(strategy_inday) zf:%s last_price:%s  yd_close_price:%s'%(zf,stock.last_price,stock.yesterday_close_price),stdout=False )

    # stbase.print_line('strategy_inday,=={}=='.format(code))

    strategy_name = 'strategy_inday'
    st_price = stock.yesterday_close_price * (1 + limit)
    st_price = round(st_price, 2)
    # stbase.println('st_price:%s  '%st_price)
    stbase.println('zf:{} limit:{} diff:{}'.format(zf, limit, zf - limit))
    if zf <= -limit:
        stbase.print_line(
            '(strategy_inday) zf:%s last_price:%s  yd_close_price:%s' %
            (zf, stock.last_price, stock.yesterday_close_price),
            stdout=False)

        stbase.record_signal(code, '=={}=='.format(code))
        stbase.record_signal(code,
                             'strategy_inday signal occur. (zf <= -limit)')
        stbase.record_signal(code, 'zf:{} limit:{}'.format(zf, limit))
        #跌幅过限
        amount = stbase.TradeManager().xy_proxy.get_stock_amount_useable()
        pos_sum = stock.pos.net_total
        #
        if stock.pos.post_cost_amount <= amount * 0.1 and strategy_inday_buy_count.get(
                code, 0) == 0:
            """持仓资金占总资金 <= 10% """
            stbase.record_signal(
                code, 'do buy: {} ,{}, {}'.format(code, st_price, num))
            stbase.TradeManager().xy_proxy.buy(code, st_price, num)
            strategy_inday_buy_count[code] = 1

    if zf >= limit:
        # print '=*'*20
        stbase.print_line(
            '(strategy_inday) zf:%s last_price:%s  yd_close_price:%s' %
            (zf, stock.last_price, stock.yesterday_close_price))

        stbase.TM.record_signal(code, '=={}=='.format(code))
        stbase.TM.record_signal(code, '-*' * 20, 'strategy_inday')
        stbase.TM.record_signal(code,
                                'strategy_inday signal occur. (zf >= -limit)')
        stbase.TM.record_signal(code, 'zf:{} limit:{}'.format(zf, limit))
        stbase.TM.record_signal(
            code, 'net_total:{} net_yd:{}'.format(stock.pos.net_total,
                                                  stock.pos.net_yd))
        if stock.pos.net_total >= num and strategy_inday_sell_count.get(
                code, 0) == 0:
            stbase.TM.record_signal(
                code, 'do sell: {} ,{}, {}'.format(code, st_price, num))
            stbase.TradeManager().xy_proxy.sell(code, st_price, num)
            strategy_inday_sell_count[code] = 1
示例#16
0
def initialize(context):
    stbase.TradeManager().kf_proxy.on_init(context)
    stbase.TradeManager().any.trade = True
    print '==' * 30
示例#17
0
#coding:utf-8
"""
wingchun strategy -n s1 -p test_by.py

"""
import stbase
import simple_st

STOCK_LIST = simple_st.STOCK_LIST

bar_log_file = 'bar.log'
tick_log_file = 'tick.log'

stbase.TradeManager().init().addStock(STOCK_LIST)


def print_line(text, fp=None):
    text = str(text)
    # if fp:
    #     fp.write(text+'\n')
    #     fp.flush()
    print text


def on_timer(context):
    # print '>> onTimer()..'
    context.insert_func_after_c(1, on_timer)


def initialize(context):
    stbase.TradeManager().kf_proxy.on_init(context)