Exemplo n.º 1
0
    def __init__(self, ctaEngine, setting):

        super(MutilEMaStrategy, self).__init__(ctaEngine, setting)

        self.bg = BarGenerator(self.onBar)
        self.am = ArrayManager()

        self.frequency = mtm.frequency
        self.pricePosi_top = 0
        self.pricePosi_bot = 4
        self.status = Status()
        self.tick = None

        self.locking = False
        self.lockActionToken = False
        self.unlockActionToken = False

        self.controlRisk = ControlRisk(security=mtm.jqdata_security,
                                       ctaEngine=self)

        self.strategyBase = MutilEMaStrategyBase(security=mtm.jqdata_security,
                                                 status=self.status,
                                                 frequency=mtm.frequency,
                                                 ctaTemplate=self,
                                                 enableTrade=mtm.enableTrade,
                                                 enableBuy=mtm.enableBuy,
                                                 enableShort=mtm.enableShort,
                                                 controlRisk=self.controlRisk)
Exemplo n.º 2
0
def start(startTime=None,
          jqSecurity=None,
          frequency=None,
          enableBuy=None,
          enableShort=None):
    security = jqSecurity  #'FG9999.XZCE' 'RB9999.XSGE' 'JM9999.XDCE'
    status = Status()
    frequency = frequency
    strategyBase = MutilEMaStrategyBase(security=security,
                                        status=status,
                                        ctaTemplate=None,
                                        frequency=frequency,
                                        jqDataAccount='13268108673',
                                        jqDataPassword='******',
                                        enableTrade=False,
                                        enableBuy=enableBuy,
                                        enableShort=enableShort)
    times = util.getTimeSerial(startTime, count=1000 * 800, periodSec=12)
    for t in times:
        if strategyBase.startJudgeAndRefreshStatus(t):
            strategyBase.trade(None)
Exemplo n.º 3
0
# 大商所
#
# 代码	名称	代码	名称
# A9999.XDCE	豆一主力合约	JD9999.XDCE	鸡蛋主力合约
# B9999.XDCE	豆二主力合约	JM9999.XDCE	焦煤主力合约
# BB9999.XDCE	胶板主力合约	L9999.XDCE	聚乙烯主力合约
# C9999.XDCE	玉米主力合约	M9999.XDCE	豆粕主力合约
# CS9999.XDCE	淀粉主力合约	P9999.XDCE	棕榈油主力合约
# FB9999.XDCE	纤板主力合约	PP9999.XDCE	聚丙烯主力合约
# I9999.XDCE	铁矿主力合约	V9999.XDCE	聚氯乙烯主力合约
# J9999.XDCE	焦炭主力合约	Y9999.XDCE	豆油主力合约

status = Status()
strategyBase = MutilEMaStrategyBase(security='RB9999.XSGE',
                                    status=status,
                                    ctaTemplate=None,
                                    frequency='5m',
                                    jqDataAccount='13268108673',
                                    jqDataPassword='******',
                                    enableTrade=False,
                                    enableBuy=True,
                                    enableShort=True,
                                    enableNotify=True,
                                    isJustListening=True)
while True:
    currentTime = time.strftime('%Y-%m-%d %H:%M:%S',
                                time.localtime(time.time()))
    if strategyBase.startJudgeAndRefreshStatus(currentTime):
        time.sleep(1)
    time.sleep(3)
Exemplo n.º 4
0
#                                         status=status,
#                                         ctaTemplate=None,
#                                         frequency=frequency,
#                                         jqDataAccount='13268108673',
#                                         jqDataPassword='******',
#                                         enableTrade=False,
#                                         enableBuy=enableBuy,
#                                         enableShort=enableShort
#                                         )
#     times = util.getTimeSerial(startTime, count=1000*800, periodSec=12)
#     for t in times:
#         if strategyBase.startJudgeAndRefreshStatus(t):
#             strategyBase.trade(None)

# jqSecurity='TA8888.XZCE'
# dao.updateAllPosition(3, jqSecurity)
# start(jqSecurity=jqSecurity, startTime='2018-10-10 14:00:00', frequency='5m', enableBuy=True, enableShort=True)
status = Status()
strategyBase = MutilEMaStrategyBase(security='JM9999.XDCE',
                                    status=status,
                                    ctaTemplate=None,
                                    frequency='10m',
                                    jqDataAccount='13268108673',
                                    jqDataPassword='******',
                                    enableTrade=False,
                                    enableBuy=True,
                                    enableShort=True)
while True:
    if strategyBase.startJudgeAndRefreshStatus():
        print('tick')
    time.sleep(5)
Exemplo n.º 5
0
class MutilEMaStrategy(CtaTemplate):
    """双指数均线策略Demo"""
    className = 'MutilEMaStrategy'
    author = u'*****@*****.**'
    # 策略参数
    fastWindow = 5  # 快速均线参数
    slowWindow = 10  # 慢速均线参数
    initDays = 30  # 初始化数据所用的天数
    # 策略变量
    fastMa0 = None  # 当前最新的快速EMA
    fastMa1 = None  # 上一根的快速EMA
    slowMa0 = None
    slowMa1 = None
    # 参数列表,保存了参数的名称
    paramList = ['name','className','author','vtSymbol','fastWindow','slowWindow']
    # 变量列表,保存了变量的名称
    varList = ['inited','trading','pos','fastMa0','fastMa1','slowMa0','slowMa1']
    # 同步列表,保存了需要保存到数据库的变量名称
    syncList = ['pos']
    # ----------------------------------------------------------------------
    def __init__(self, ctaEngine, setting):

        super(MutilEMaStrategy, self).__init__(ctaEngine, setting)

        self.bg = BarGenerator(self.onBar)
        self.am = ArrayManager()

        self.frequency = mtm.frequency
        self.pricePosi_top = 0
        self.pricePosi_bot = 4
        self.status = Status()
        self.tick = None
        self.strategyBase = MutilEMaStrategyBase(security=mtm.jqdata_security,
                                                 status=self.status,
                                                 frequency=mtm.frequency,
                                                 ctaTemplate=self,
                                                 enableTrade=mtm.enableTrade,
                                                 enableBuy=mtm.enableBuy,
                                                 enableShort=mtm.enableShort
                                                 )
    # ----------------------------------------------------------------------
    def onInit(self):
        """初始化策略(必须由用户继承实现)"""
        self.writeCtaLog(u'多重EMA策略初始化')
        self.putEvent()

    # ----------------------------------------------------------------------
    def onStart(self):
        """启动策略(必须由用户继承实现)"""
        self.writeCtaLog(u'多重EMA策略启动')
        self.putEvent()

    # ----------------------------------------------------------------------
    def onStop(self):
        """停止策略(必须由用户继承实现)"""
        self.writeCtaLog(u'多重EMA策略停止')
        self.putEvent()

    # ----------------------------------------------------------------------
    def onTick(self, tick):
        """收到行情TICK推送(必须由用户继承实现)"""
        self.bg.updateTick(tick)
        self.tick = tick
        if self.strategyBase.startJudgeAndRefreshStatus():
            self.strategyBase.trade(tick)
            self.putEvent()

    # ----------------------------------------------------------------------
    def onBar(self, bar):
        """收到Bar推送(必须由用户继承实现)"""
        # 发出状态更新事件
        self.putEvent()

    # ----------------------------------------------------------------------
    def onOrder(self, order):
        """收到委托变化推送(必须由用户继承实现)"""
        # 对于无需做细粒度委托控制的策略,可以忽略onOrder
        pass

    # ----------------------------------------------------------------------
    def onTrade(self, trade):
        """收到成交推送(必须由用户继承实现)"""
        # 对于无需做细粒度委托控制的策略,可以忽略onOrder
        pass

    # ----------------------------------------------------------------------
    def onStopOrder(self, so):
        """停止单推送"""
        pass