量化交易开发之循环、多股策略语法(六)

量化交易开发之循环、多股策略语法(六)

一、用list数据类型存储多个股票

以如下这个简单的策略为例,学习在策略中操作多个股票:

    def initialize(context):
        run_daily(period, time='every_bar')
        g.security = '000001.XSHE'
    
    def period(context):
        order(g.security, 100)

事实上,根据前面所学,我们是可以写多个股票的策略的,无非是把原来单个股票的操作类似的再写几遍:

    def initialize(context):
        run_daily(period, time='every_bar')
        g.security1 = '000001.XSHE'
        g.security2 = '000001.XSHE'
    
    def period(context):
        order(g.security1, 100)
        order(g.security2, 100)

显然的问题是,当股票比较多的时候,就要写很多遍。因此我们要学习其他的写法,使用list数据类型存储多个股票,如下:


def initialize(context):
    run_daily(period, time='every_bar')
    # 把两个股票代码作为list存入g.security中
    g.security = ['000001.XSHE', '000002.XSHE']

二、循环语句

循环语句for可以遍历任何序列的项目,比如一个list,一般用法如下:


    # 含义是依次把序列中的元素赋给for后的变量,并执行循环语句
    for 变量 in 一个序列:
        要循环的语句,也叫循环体

下面我们来看个for的例子:

for k in ['David''richard', 'kars', 'yarid']:
    print(k)

执行后,结果如下:

在这里插入图片描述

分析过程,for语句运行过程是,取出list中第一个元素’David’,并将其赋值给k,然后执行print()打印k。依次类推,直到最后一个元素打印完毕。

三、range()语句

使用for语句时有一个常见一起使用的语句range(),它的功能是生成等差数列的,用法如下:

    range(首项,上限,步长)
    # 首项 就是这个数列的第一项,可省略,省略后默认为0
    # 步长 就是数列的公差、间隔,可省略,省略后默认为1
    # 上限 是用来限制数列长度的,即数列不得大于或等于上限。不可省略。
    # 另外,python2中range产生的是list,但python3中产生的不是list,但可以用list()这个语句把结果转成list类型,比如list(range(1,7,2))。我们策略编辑环境是python2。

    # 一个例子
    for j in range(1,7,2):
        print(j)
    print(range(1,7,2))

在这里插入图片描述

四、continue和break

continue与break是重要的修饰循环执行流程的语句,用法如下:

    # break的作用是写在循环体中用来跳出当前的整个循环过程
    # continue的作用是写在循环体中用来跳出当前的这一次的循环过程
    # 通过一个例子应该就能明白两者的作用与区别

    # 一个简单的循环例子
    for t in range(4):
        print(t)    
    # 执行的结果是
    # 0
    # 1
    # 2
    # 3

    # 在例子中使用break。可以看到当循环到2的时候,打印omg后,执行break,终  了整个循环过程,不再继续循环3了,所以omg后就什么都没了。
    for t in range(4):
        if t == 2:
            print('omg')
            break
        print(t)


  # 在例子中使用continue。可以看到当循环到2的时候,打印omg后,执行continue,跳过了当前正循环的t为2这个循环过程的余下部分,不在继续执行之后的语句(即print(t),此时t等于2),而继续循环3了,所以omg后有打印3。
  for t in range(4):
      if t == 2:
          print('omg')
          continue
      print(t)

continue:
在这里插入图片描述
break:
在这里插入图片描述

五、学以致用,写一个多股票策略

用刚学的知识把之前简单的策略例子改写成多股票版本,如下:

    def initialize(context):
        run_daily(period,time='every_bar')
        # 把两个股票代码作为list存入g.security中
        g.security = ['000001.XSHE','000002.XSHE']

    def period(context):
        for stk in g.security:
        order(stk,100)
        # 获得股票持仓成本
        cost=context.portfolio.positions[stk].avg_cost
        # 获得股票现价
        price=context.portfolio.positions[stk].price
        # 计算收益率
        ret=price/cost-1
        # 如果收益率小于-0.01,即亏损达到1%则卖出股票,幅度可以自己调一般10%
        if ret<-0.01:
            order_target(stk,0)
            print('触发止损')

六、未完待续

下章将继续介绍综合我们所学写的自己写一个真实且完整的策略。

欢迎关注知乎:北京不北

欢迎+V:beijing_bubei

欢迎关注douyin:near.X (北京不北)

获得免费答疑,长期技术交流。

``

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/393149.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

java 课程签到管理系统Myeclipse开发mysql数据库web结构jsp编程servlet计算机网页项目

一、源码特点 java 课程签到管理系统是一套完善的java web信息管理系统 采用serlvetdaobean&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#xff0…

聚道云软件连接器助力生产制作行业实现数字化升级

在数字经济时代&#xff0c;生产制造行业迫切需要进行数字化转型&#xff0c;通过数字化技术手段打通各系统之间的数据壁垒&#xff0c;实现生产全流程数字化管理&#xff0c;提高企业的整体运营效率&#xff0c;进一步增强企业竞争力。聚道云为此推出了生产制造行业的集成管理…

哎呀,当时怎么没有想到 | 京东云技术团队

在我们的测试工作中&#xff0c;是不是经常遇到这样的情形&#xff0c;发生了线上问题&#xff0c;产品、研发或者测试同学一拍脑袋&#xff1a;当时怎么没有想到&#xff0c;怎么给漏掉了呢&#xff1f;明明是一个非常简单的事情&#xff0c;用大拇指都能想到的验证场景&#…

Linux-ls命令

目录 ls&#xff1a;查看目录下文件/文件夹 ls -l&#xff1a;列表显示文件 ls -a&#xff1a;显示所有文件正常情况下‘ . ’开头的文件是隐藏的 ls -la&#xff1a;以列表形式显示所有文件包括隐藏文件 ls -lt&#xff1a;按时间倒序查看文件 ls -R&#xff1a;递归方式…

c++中浮点类型比较的理解

为什么浮点类型存在误差 带有小数的表示&#xff1a; 25.3 整数通过除2取余法表示&#xff1a; 25/2…1 12/2…0 6/2…0 3/2…1 1/2…1 倒过来&#xff1a;25&#xff08;十进制&#xff09; 11001&#xff08;二进制&#xff09; 小数部分通过乘2取整法&#xff1a; 0.3 * 2 …

OpenCV DNN 活体检测项目环境配置等各阶段tips

date: 2020-09-22 14:53 资料来源《OpenCV深度学习应用与性能优化实践》第八章。 在复现这个项目的时候发现一些可以调整的小tips。 环境配置阶段 使用conda 创建python 工作环境时&#xff0c;注释掉requirems.txt 里的opencv-python-inference-engine4.1.2.1&#xff0c;安…

【JavaEE】_线程与多线程的创建

目录 1. 线程的概念 2. 创建与使用多线程 2.1 方式1&#xff1a;继承Thread类 2.2 方式2&#xff1a; 实现Runnable接口 2.3 以上两种创建线程方式的对比 3. 多线程的优势-增加运行速度 1. 线程的概念 进程的存在是由于系统的多任务执行需求&#xff0c;这也要求程序员进…

NLP深入学习:《A Survey of Large Language Models》详细学习(七)

文章目录 1. 前言2. 应用场景2.1 LLMs 对研究界的应用2.1.1 经典 NLP 任务2.1.2 信息检索2.1.3 推荐系统2.1.4 多模态大语言模型2.1.5 知识图谱增强型 LLM2.1.6 基于 LLM 的智能体2.1.7 用于评估 2.2 特定领域的应用 3. 参考 1. 前言 这是《A Survey of Large Language Models…

人力资源智能化管理项目(day10:首页开发以及上线部署)

学习源码可以看我的个人前端学习笔记 (github.com):qdxzw/humanResourceIntelligentManagementProject 首页-基本结构和数字滚动 安装插件 npm i vue-count-to <template><div class"dashboard"><div class"container"><!-- 左侧内…

二.重新回炉Spring Framework:Spring Framework主要组件概览

1.写在前面的话 这里主要简单说一下Spring Framework的几个核心组件的总体情况。为了比较直观&#xff0c;这里使用了ClassPathXmlApplicationContext的类图来进行说明。它基本上包含了 IoC 体系中大部分的核心类和接口。类图如下图所示&#xff1a; 2.Resource 组件体系 R…

⭐北邮复试刷题429. N 叉树的层序遍历(按层入队出队BFS)(力扣每日一题)

429. N 叉树的层序遍历 给定一个 N 叉树&#xff0c;返回其节点值的层序遍历。&#xff08;即从左到右&#xff0c;逐层遍历&#xff09;。 树的序列化输入是用层序遍历&#xff0c;每组子节点都由 null 值分隔&#xff08;参见示例&#xff09;。 示例 1&#xff1a;输入&a…

SG3225EEN晶体振荡器规格书

SG3225EEN 晶振是EPSON/爱普生的一款额定频率25 MHz至500 MHz的石英晶体振荡器&#xff0c;6脚贴片&#xff0c;LV-PECL输出&#xff0c;3225封装常规有源晶振&#xff0c;具有小尺寸&#xff0c;轻薄型&#xff0c;高稳定性&#xff0c;低相位抖动&#xff0c;低电源电压&…

【算法】基础算法002之滑动窗口(一)

&#x1f440;樊梓慕&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》《算法》 &#x1f31d;每一个不曾起舞的日子&#xff0c;都是对生命的辜负 目录 前言 1.长度最小的子数组…

找图片、壁纸就上这6个网站,高清无水印,免费下载~

推荐6个高清无水印图片、壁纸网站&#xff0c;质量非常高&#xff0c;还能免费下载&#xff0c;赶紧收藏一波~ 1、wallhaven https://wallhaven.cc/ 一个提供优质电脑高清壁纸搜索引擎&#xff0c;壁纸高清如画&#xff0c;使用后都会爱上彻底不能自拔。 Wallhaven 提供超过7…

labelme篇---批量修改用labelme标注的标签

labelme篇—批量修改用labelme标注的标签 labelme标注后的标签格式如下图&#xff1a; 我们要改的就是label 所以代码如下 # -*- coding: utf-8 -*- import os import jsonjson_dir # JSON文件所在文件夹的路径 old_label # 要修改的旧标签名 new_label # 修改后…

C#上位机与三菱PLC的通信06--MC协议之QnA-3E报文测试

1、A-3E报文回顾 1、存储区分类及访问规则 2、命令类型 命令由主命令子命令组成 3、报文结构 2、启动mc服务器 3、创建VS项目 这节继续使用上节的VS2022的项目&#xff0c;增加一个方法 MCTestA3E()&#xff0c;具体怎么创建项目&#xff0c;见上节的过程。C#上位机与三菱…

three.js 3D可视化地图

threejs地图 可视化地图——three.js实现 this.provinceInfo document.getElementById(provinceInfo); // 渲染器 this.renderer new THREE.WebGLRenderer({antialias: true }); this.renderer.setSize(window.innerWidth, window.innerHeight); this.container.appendChild…

GZ036 区块链技术应用赛项赛题第6套

2023年全国职业院校技能大赛 高职组 “区块链技术应用” 赛项赛卷&#xff08;6卷&#xff09; 任 务 书 参赛队编号&#xff1a; 背景描述 近年来&#xff0c;食品安全问题层出不穷&#xff0c;涉及到各种食品类别&#xff0c;如肉类、水果、蔬菜等。食品安全事…

SQL32 截取出年龄(substring_index函数的用法)

代码 select substring_index(substring_index(profile,,,3),,,-1) as age ,count(device_id) from user_submit group by age知识点 substring_index(FIELD, sep, n)可以将字段FIELD按照sep分隔&#xff1a; (1).当n大于0时取第n个分隔符(n从1开始)之前的全部内容&#xff1…

【Vision Pro 应用分享】Make It Spatial——将普通照片转化为Spatial空间照片,以在Vision Pro视界眼镜上观看3D效果

该应用目前在Mac App Store上免费提供 下载地址:‎Make It Spatial on the Mac App Store Read reviews, compare customer ratings, see screenshots, and learn more about Make It Spatial. Download Make It Spatial for macOS 14.0 or later and enjoy it on your Mac.h…