在写Python 策略时候回测结果没有出来,可能是什么情况
FireScript你好,可以给下联系方式吗,问题比较多
就在这边咨询就可以了,如果是python的基础问题这个需要您自己学习了
首先我代码是这样的:
# 可以自己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
品种:白银连续
补充过数据
有调试结果,没有回测数据
自己输出下你的条件,最高价等都是多少
python的策略需要客户有一定的调试能力,恕这边没绑法帮您一一输出调试
[此贴子已经被作者于2019/4/1 9:28:06编辑过]