以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (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
--  
有了,谢谢!谢谢!!!