以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://www.weistock.com/bbs/index.asp)
--  高级功能研发区  (http://www.weistock.com/bbs/list.asp?boardid=5)
----  在写Python 策略时候回测结果没有出来,可能是什么情况  (http://www.weistock.com/bbs/dispbbs.asp?boardid=5&id=169062)

--  作者:qq代人发帖
--  发布时间:2019/3/29 9:51:21
--  在写Python 策略时候回测结果没有出来,可能是什么情况
在写Python 策略时候回测结果没有出来,可能是什么情况
--  作者:FireScript
--  发布时间:2019/3/29 9:58:27
--  
 测试用的品种数据有补充过吗?
--  作者:lymql
--  发布时间:2019/3/29 10:13:15
--  
FireScript你好,可以给下联系方式吗,问题比较多
--  作者:yukizzc
--  发布时间:2019/3/29 13:18:58
--  
就在这边咨询就可以了,如果是python的基础问题这个需要您自己学习了
--  作者:lymql
--  发布时间:2019/3/29 14:56:08
--  
首先我代码是这样的:
# 可以自己import我们平台支持的第三方python模块,比如pandas、numpy等。
from PythonApi import *
import talib as tb
import datetime
from dateutil.relativedelta import relativedelta

#  参数定义区,这里定义的参数可以直接在context对象中获取。--(选择实现)
#def parameter():
#    input_par("myvalues1",5,1,20,1)
#    input_par("myvalues2",10,1,20,1)


#  在这个方法中编写任何的初始化逻辑。context对象将会在你的算法策略的任何方法之间做传递。--(必须实现)
def init(context):
    # 在context中保存全局变量
    context.s1 = "SQAG00"   # 平安银行股票
    # 定义开盘时间(9:00)
    context.start_time = \'900\'
    # 定义开盘30分钟后的时间(9:30)
    context.out_time = \'930\'
    # 30条数据最高价和最低价
    context.stage_high = 0
    context.stage_low = 0
    # print("策略启动") #调试打印输出
    print(\'策略启动\')
    

# before_trading此函数会在每天基准合约的策略交易开始前被调用,当天只会被调用一次。--(选择实现)
def before_trading(context):
    # TOOD:获取30天内历史开盘数据
    # 获取前期最高价和最低价SQAG00
    bar_len = 30
    hb_high = history_bars(context.s1, bar_len, \'1d\',\'high\')
    # 获取30条数据最高价
    data_list = list(hb_high)
    context.stage_high = max(data_list)
    context.stage_low = min(data_list)
    

# 你选择的品种的数据更新将会触发此段逻辑,例如日或分钟历史数据切片或者是实时数据切片更新。--(必须实现)
def handle_bar(context):
    # 开始编写你的主要的算法逻辑。
    
    #使用buy_open、sell_close等方法下单
    #下单示例:
    #buy_open(context.s1, "Market", volume = 100)    #  市价开多
    #buy_open(context.s1, "Limit", 25.45, 100)       #  限价开多
    
    # 获取当前价格
    nowPrice = get_dynainf(context.s1,7)
    print(nowPrice)
    # 如果大于前期最高价
    if nowPrice > context.stage_high:
        # 买入
        buy_open(context.s1, "Market",0 ,1000)
    elif nowPrice < context.stage_low:
        # 卖出
        sell_close(context.s1, "Market",nowPrice ,1000)
    
    
    
# after_trading函数会在每天交易结束后被调用,当天只会被调用一次。 --(选择实现)
def after_trading(context):
    print(\'交易已经结束\')

    
    
# order_status当委托下单,成交,撤单等与下单有关的动作时,该方法就会被调用。---(选择实现)
#def order_status(context,order):
#    pass

# order_action当查询交易接口信息时返回的通知---(选择实现)
#def order_action(context,type, account, datas)
#       pass

# exit函数会在测评结束或者停止策略运行时会被调用。---(选择实现)
#def exit(context):
#    pass
运行的时候我是这样运行的:
测试时段:3-20-->3-29 1分钟
基准合约:SQG00
品种:白银连续
补充过数据
有调试结果,没有回测数据

--  作者:yukizzc
--  发布时间:2019/4/1 9:22:55
--  
自己输出下你的条件,最高价等都是多少
python的策略需要客户有一定的调试能力,恕这边没绑法帮您一一输出调试
[此贴子已经被作者于2019/4/1 9:28:06编辑过]