返回介绍

第一部分 新手入门

第二部分 股票量化相关

第三部分 基金、利率互换、固定收益类

第四部分 衍生品相关

重写 rsi

发布于 2022-02-20 22:26:15 字数 3491 浏览 952 评论 0 收藏 0

import talib as ta
import numpy as np
import pandas as pd
from pandas import DataFrame,Series

start = '2014-01-01'                        # 回测起始时间
end = '2015-01-01'                         # 回测结束时间
benchmark = 'HS300'                        # 策略参考标准
universe = set_universe('HS300')                # 证券池,支持股票和基金
capital_base = 10000000                      # 起始资金
freq = 'd'                                # 策略类型,'d'表示日间策略使用日线回测
refresh_rate = 1                           # 调仓频率,表示执行handle_data的时间间隔,由于freq = 'd',时间间隔的单位为交易日
pieces=10                                #每个标的最多买1/10

def initaialize(account):
    pass


def handle_data(account):
    prices=account.get_attribute_history('closePrice',100)
    for s in universe:
        cun_price=price[s][-1]
        cun_amount[s]=account.secpos.get(s,0)
        RSI=ta.RSI(prices[s],9)
        buy_flag=RSI[-1]>RSI[-2] and RSI[-1]>30     #计算买入条件
        sell_flag = RSI[-1]<RSI[-2] and RSI[-1]<70   #计算卖出条件
        amount_max=int((0.1*capital_base)/cun_price)  #计算单支仓位上限
        amount = min(int(2500000/cun_price),amount_max-cun-amount[s]) #计算下单量
        if buy_flag and (cun_amount[s]<amount_max):
            order(s,amount)
        elif sell_flag and (cun_amount[s]>0):
            order_to(s,0)

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<mercury-input-6-72d5ab71705d> in <module>()
     61         perf = quartz.perf_parse(bt, quartz_acct)
     62     elif QUARTZ_CACHE.get('start', 0) == sim_params.first_trading_day and          QUARTZ_CACHE.get('end', 0) == sim_params.last_trading_day and          QUARTZ_CACHE.get('benchmark', 0) == benchmark and          QUARTZ_CACHE.get('universe', 0) == sim_params.universe:
---> 63         strategy = quartz.sim_condition.strategy.TradingStrategy(initialize, handle_data)
     64         bt, quartz_acct = quartz.quick_backtest_generator(sim_params = QUARTZ_CACHE['sim_params'], 
     65                                                           strategy = strategy,

python2.7/site-packages/quartz/sim_condition/strategy.pyc in __init__(self, initialize, handle_data)
     19     def __init__(self, initialize=None, handle_data=None):
     20         if not hasattr(initialize, '__call__'):
---> 21             raise ValueError('initialize must be a function!')
     22         else:
     23             self._initialize = initialize

ValueError: initialize must be a function!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文