以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 高级功能研发区 (http://weistock.com/bbs/list.asp?boardid=5) ---- python回测数据都是0 (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=169282) |
-- 作者:qq代人发帖 -- 发布时间:2019/4/10 16:56:44 -- python回测数据都是0 请教:
python回测数据都是0
有遇到这种情况,怎么处理 用的是金字塔默认的模型 |
-- 作者:yukizzc -- 发布时间:2019/4/11 9:13:02 -- 历史数据是否补充了,了解下代码需要哪些数据参与 从ma均线那个策略去看
|
-- 作者:wzywzy292 -- 发布时间:2019/4/26 19:57:22 -- 用系统自带的均线交易系统 future_ma5_buy python回测也都是0,(已补历史数据),请教如何解决,谢谢 [此贴子已经被作者于2019/4/26 19:59:14编辑过]
|
-- 作者:yukizzc -- 发布时间:2019/4/28 9:11:52 -- if ma5[-1]>ma20[-1] and ma5[-2]<ma20[-2] print输出下数值,看下是否取到均线的值了
|
-- 作者:wzywzy292 -- 发布时间:2019/4/29 9:30:48 -- # 在这个方法中编写任何的初始化逻辑。context对象将会在你的算法策略的任何方法之间做传递。
#简单的期货趋势策略,选用简单的均线金叉死叉进行买卖 import time import os import csv import numpy import talib as ta def init(context): # 在context中设置一些参数 context.s1 = \'SQRB00\' #两条均线的周期长度 #context.long_period = 20 #context.short_period = 5 # before_trading此函数会在每天策略交易开始前被调用,当天只会被调用一次 def before_trading(context): pass # 你选择的证券的数据更新将会触发此段逻辑,例如日或分钟历史数据切片或者是实时数据切片更新 def handle_bar(context): # 开始编写你的主要的算法逻辑 ma5 = get_indicator(\'SQRB00\',\'MA\',\'ma1\', \'5\',\'self\',1) ma10 =get_indicator(\'SQRB00\',\'MA\',\'ma2\',\'10\',\'self\',1) print(ma5[-1]) if ma5>ma10 and ma5[-1]<ma10[-1]: buy_open(\'SQRB00\', "ThisClose",0,100) if ma5<ma10 and ma5[-1]>ma10[-1]: sell_close(\'SQRB00\',"ThisClose",0,100) # after_trading函数会在每天交易结束后被调用,当天只会被调用一次 def after_trading(context): pass ========== 版主早上好: 这个模型调用了PEL的ma指标,也能够取到均线的值,但测试也全为零。能帮个忙吗?谢谢!!! |
-- 作者:yukizzc -- 发布时间:2019/4/29 9:43:15 -- # 本Python代码主要用于策略交易 # 可以自己import我们平台支持的第三方python模块,比如pandas、numpy等。 from PythonApi import * # 参数定义区,这里定义的参数可以直接在context对象中获取。--(选择实现) #def parameter(): # input_par("myvalues1",5,1,20,1) # input_par("myvalues2",10,1,20,1) # 在这个方法中编写任何的初始化逻辑。context对象将会在你的算法策略的任何方法之间做传递。 #简单的期货趋势策略,选用简单的均线金叉死叉进行买卖 import time import os import csv import numpy import talib as ta def init(context): # 在context中设置一些参数 context.s1 = \'SQRB00\' #两条均线的周期长度 #context.long_period = 20 #context.short_period = 5 # before_trading此函数会在每天策略交易开始前被调用,当天只会被调用一次 def before_trading(context): pass # 你选择的证券的数据更新将会触发此段逻辑,例如日或分钟历史数据切片或者是实时数据切片更新 def handle_bar(context): # 开始编写你的主要的算法逻辑 ma5 = get_indicator(\'SQRB00\',\'MA\',\'ma1\', \'5\',\'self\',2) ma10 =get_indicator(\'SQRB00\',\'MA\',\'ma2\',\'10\',\'self\',2) print(ma5[-1]) if ma5[-2]>ma10[-2] and ma5[-1]<ma10[-1]: buy_open(\'SQRB00\', "ThisClose",0,100) if ma5[-2]<ma10[-2] and ma5[-1]>ma10[-1]: sell_close(\'SQRB00\',"ThisClose",0,100) # after_trading函数会在每天交易结束后被调用,当天只会被调用一次 def after_trading(context): pass |
-- 作者:yukizzc -- 发布时间:2019/4/29 9:44:47 -- 返回值是array的格式,我记得另一个帖子回复过你了。 不能直接ma这么比较的,你一定要去学习下python中列表的相关知识。列表中元素的取值比较,不是直接一个列表对象的比较
|
-- 作者:wzywzy292 -- 发布时间:2019/4/29 11:11:28 -- 请教:列表中元素的取值比较,是用哪个函数,谢谢。 |
-- 作者:yukizzc -- 发布时间:2019/4/29 11:18:39 -- ma5[-2]就是这样 廖雪峰python,你可以百度学习里面有介绍列表的
|
-- 作者:wzywzy292 -- 发布时间:2019/4/29 12:45:40 -- 有了,谢谢!谢谢!!! |