Пример #1
0
def zwBackTest100(qx):
    '''
    zwBackTest100(qx):
    zwQT回溯测试子函数,测试一只股票xcod,在指定时间xtim的回溯表现数据
    会调用qx.staFun指定的策略分析函数,获取当前的股票交易数目 qx.stkNum
    并且根据股票交易数目 qx.stkNum,判定是不是有效的交易策略
    【输入】
        qx (zwQuantx): zwQuantx数据包
        #qx.stkCode,当前交易的股票代码
        #qx.xtim,当前交易的时间
    【输出】
         无
         '''
    
    #----运行策略函数,进行策略分析
    qx.stkNum=qx.staFun(qx);
    #----
    if qx.stkNum!=0:
        #----检查,是不是有效交易
        xfg,qx.xtrdChk=zwx.xtrdChkFlag(qx)
        if xfg:
            #----如果是有效交易,加入交易列表
            zwx.xtrdLibAdd(qx)
            #qx.prQCap();
        elif qx.trdNilFlag:
            zwx.xtrdLibNilAdd(qx)
Пример #2
0
def zwBackTest100(qx):
    '''
    zwBackTest100(qx):
    zwQT回溯测试子函数,测试一只股票xcod,在指定时间xtim的回溯表现数据
    会调用qx.staFun指定的策略分析函数,获取当前的股票交易数目 qx.stkNum
    并且根据股票交易数目 qx.stkNum,判定是不是有效的交易策略
    【输入】
        qx (zwQuantx): zwQuantx数据包
        #qx.stkCode,当前交易的股票代码
        #qx.xtim,当前交易的时间
    【输出】
         无
         '''

    # ----运行策略函数,进行策略分析
    qx.stkNum = qx.staFun(qx)
    # ----
    if qx.stkNum != 0:
        # ----检查,是不是有效交易
        xfg, qx.xtrdChk = zwx.xtrdChkFlag(qx)
        if xfg:
            # ----如果是有效交易,加入交易列表
            zwx.xtrdLibAdd(qx)
            # qx.prQCap()
        elif qx.trdNilFlag:
            zwx.xtrdLibNilAdd(qx)
Пример #3
0
def zwBackTest100(qx):
    '''
    zwBackTest100(qx):
    zwQT回溯測試子函數,測試一檔股票xcod,在指定時間xtim的回溯表現資料
    會調用qx.staFun指定的策略分析函數,獲取當前的股票交易數目 qx.stkNum
    並且根據股票交易數目 qx.stkNum,判定是不是有效的交易策略
    【輸入】
        qx (zwQuantx): zwQuantx數據包
        #qx.stkCode,當前交易的股票代碼
        #qx.xtim,當前交易的時間
    【輸出】
         無
         '''

    # ----運行策略函數,進行策略分析
    qx.stkNum = qx.staFun(qx)
    # ----
    if qx.stkNum != 0:
        # ----檢查,是不是有效交易
        xfg, qx.xtrdChk = zwx.xtrdChkFlag(qx)
        if xfg:
            # ----如果是有效交易,加入交易清單
            zwx.xtrdLibAdd(qx)
            # qx.prQCap()
        elif qx.trdNilFlag:
            zwx.xtrdLibNilAdd(qx)
Пример #4
0
# -*- coding: utf-8 -*-
import numpy as np
import pandas as pd

import zwSys as zw  #zw.zwQuant
import zwQTBox as zwx

#======================
pd.set_option('display.width', 450)

qx = zw.zwQuantX('xbar', 1000000)
#100w
qx.priceCalc, qx.priceWrk, qx.priceBuy = 'close', 'close', 'close'
xlst = ['aeti', 'egan', 'glng', 'simo']
zwx.stkLibRd(xlst, 'dat\\')
#print(zw.stkCode)
#
xtim = '2011-01-03'
qx.qxTim0SetVar(xtim)
qx.qxUsr = zwx.qxObjSet(qx.xtim0, 0, qx.money, 0)
#
qx.stkCode = 'simo'
qx.stkNum = 100
xfg, qx.xtrdChk = zwx.xtrdChkFlag(qx)
zwx.xtrdLibAdd(qx)
qx.qxTim9SetVar(xtim)

qx.prQLib()
Пример #5
0
	'设置绘图 和 数据输出格式'
	'设置数据源目录等场所,读取股票数据'
		qx.rdat=rdat
		zwx.stkLibRd(xlst,rdat)
	'设置大盘指数'
	'读取股票数据 qx.qxTimSet(xtim0,xtim9)'
	
def zwBackTest100(qx):回溯测试只函数,单一股票,单一时间点的测试
	#----运行策略函数,进行策略分析
    qx.stkNum=qx.staFun(qx);
    if qx.stkNum!=0:
        #----检查,是不是有效交易
        xfg,qx.xtrdChk=zwx.xtrdChkFlag(qx)
        if xfg:
            #----如果是有效交易,加入交易列表
            zwx.xtrdLibAdd(qx)
        elif qx.trdNilFlag:
            zwx.xtrdLibNilAdd(qx)
def zwBackTest(qx):回溯测试主程序
	'增加数据源波动率参数:dvix '	'计算回溯时间周期,也可以在此,根据nday调整回溯周期长度。或者在qt_init数据初始化时,通过qx.qxTimSet(xtim0,xtim9),设置回溯周期长度'
	'按时间循环,进行回溯测试'
	for tc in range(nday)
		'每个测试时间点,开始时,清除qx相关参数'
		'按设定的股票代码列表,循环进行回溯测试'
		for xcod in zw.stkLibCode:
			qx.stkCode=xcod
			qx.xbarWrk = qx.stkLib[xcod][xtim]
			qx.xdatWrk = qx.stkLib[xcod]
			if not qx.xbarWrk[qx.priceWrk].empty:
				dvixFlag=zwt.xinEQ(dvix,qx.dvix_k0,qx.dvix_k9)or(dvix==0)or(np.isnan(dvix)) 
					# np.isnan(dvix)是在考虑缺失值的情况,dvix==0 这个老大估计是搞错了。