• 8.第一个金融策略


    #策略:当沪深300中的股票如果开盘价低于10块则买入,在适当的条件下进行止盈止损

    # 导入函数库
    from jqdata import *

    # 初始化函数,设定基准等等
    def initialize(context):
    # 设定沪深300作为基准
    set_benchmark('000300.XSHG')
    # 开启动态复权模式(真实价格)
    #set_option('use_real_price', True)

    ### 股票相关设定 ###
    #佣金是给券商的,不管买入还是卖出都需要付手续费
    #映花税:给国家交的税,只有买股票的时候需要缴纳该税
    #type=stock表示类型为股票
    # 股票类每笔交易时的手续费是:买入时佣金万分之三,卖出时佣金万分之三加千分之一印花税, 每笔交易佣金最低扣5块钱
    set_order_cost(OrderCost(close_tax=0.001, open_commission=0.0003, close_commission=0.0003, min_commission=5), type='stock')

    #g.xxx 表示的是一个全局变量。该变量在当前文件中任何位置都可以被使用。
    #get_index_stocks函数是获取该沪深300所有的股票,返回的是一个列表
    g.security = get_index_stocks('000300.XSHG')
    print(g.security)
    #根据回测频率进行自动调用。回测频率为每天或者每分钟。
    def handle_data(context, data):
    #卖出股票的逻辑
    for stock in g.security:
    #获取stock该股票的开盘价
    p = get_current_data()[stock].day_open
    #context是上下文对象
    #portfolio为账户信息对象
    #positions:当前账户中持仓的所有股票。返回的是一个Position对象
    #Position对象:某只股票的信息。
    #total_amount持股数量
    amount = context.portfolio.positions[stock].total_amount
    #avg_cost:开仓均价,就是该只股票的平均价格(3天连续买入,每天价格不一样,就算求出均价)
    cost = context.portfolio.positions[stock].avg_cost
    #如果持有该股票且开盘价大于均价则买出
    if amount > 0 and p >= cost * 1.25:
    #order_target是下单函数中的一种,下单函数一共有四种
    #将参数1表示的股票买卖到参数2的股数
    order_target(stock,0) #止盈,买到0,就是全部卖出
    elif amount > 0 and p <= cost * 0.9:
    order_target(stock,0) #止损,买到0,就是全部卖出
    #买入股票的逻辑:一般逻辑都是先卖后买,这样可以有更多的钱
    stock_list = []
    for stock in g.security:
    #获取stock该股票的开盘价
    p = get_current_data()[stock].day_open
    amount = context.portfolio.positions[stock].total_amount
    if p < 10 and amount == 0: #如果开盘价低于10块钱,并且没有持有该股票
    #将股票加入到列表中,该列表里存储的是要买入的股票是哪些股
    stock_list.append(stock)
    #将可用资金分配来买列表中存储的股票
    #获取现在账户的可用资金
    cash = context.portfolio.available_cash

    #使用可用资金平均购买列表中的每只股票
    if len(stock_list) > 0:
    for stock in stock_list:
    order_value(stock,cash/len(stock_list))












  • 相关阅读:
    初识python: 斐波拉契数(生成器获取)
    初识python:斐波拉契数(列表获取)
    初识python: 递归函数
    初识python:多线程
    初识python 之 取101到200之前的所有素数
    初识python 之 兔子生崽(小练习)
    初识python 之 MongoDB 基本操作
    初识python 之 mysql数据库基本操作
    MongoDB 安装及制作成windows服务
    初识python: 回调函数
  • 原文地址:https://www.cnblogs.com/bobo-zhang/p/10308404.html
Copyright © 2020-2023  润新知