Springboot:项目配置

1、配置Maven 安装Maven 因为IDE自带的不太好用,加载比较慢,需要先将maven安装到本地,然后配置到IDE中。 下载地址: https://maven.apache.org/download.cgi 下载Binary zip archive到本地,解压到本地就可以用了 本地目录比如:D:\Development\Java\apache-maven-3.9.8 修改Maven仓库国内镜像 打开 maven 的配置文件( windows 机器一般在 maven 安装目录的 conf/settings.xml ) https://developer.aliyun.com/mvn/guide 在conf/settings.xml的标签中添加 mirror 子节点: 1 2 3 4 5 6 <mirror> <id>aliyunmaven</id> <mirrorOf>*</mirrorOf> <name>阿里云公共仓库</name> <url>https://maven.aliyun.com/repository/public</url> </mirror> 找到localRepository说明内容,下边增加一行 1 <localRepository>D:\Development\Java\maven-repository</localRepository> 修改系统环境变量 PATH中添加maven的bin目录 例如:D:\Development\Java\apache-maven-3.9.8\bin 可以在命令中查看版本:mvn -v 修改IDEA配置 打开IDEA,文件→设置→构建执行部署→构建工具→Maven Maven主路径:修改为Maven的安装路径,比如:D:\Development\Java\apache-maven-3.9.8 用户设置文件:修改为主路径下的setting文件,比如:D:\Development\Java\apache-maven-3.9.8\conf\settings.xml 本地仓库:系统默认会根据setting读取对应的localRepository地址,如果没有读取则需要手动修改 2、配置热部署 安装spring-boot-devtools依赖工具 1 2 3 4 5 6 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> 打开IDEA: ...

2025-03-05 · 1 min · 69 words

Springboot:HelloWorld

1、创建Springboot项目 使用IDEA创建Springboot项目: 生成器:选择Spring Initializr 名称自定义,位置选择合适的位置,语言选择Java,类型选择Maven,组、工作、包按需填写 JDK选择17以上,建议21(需要先安装),Java选择JDK对应的版本,打包选择Jar 点击下一步 选择Spring Web,点击Next,填写项目名称和路径,点击Next,选择Java版本,点击Next,选择依赖,点击Next,选择项目结构,点击Next,点击Finish。 选择依赖: Spring Web:用于构建Web应用程序(必选) Spring Boot DevTools:用于开发时的自动重启(可选) Lombok:用于简化Java代码(可选) Spring Boot Starter Test:用于测试Spring Boot应用程序(可选) 点击创建 2、启动项目 等Maven安装完全部依赖后,就可以启动项目了(建议先查看项目配置方法,将Maven仓库切换到阿里云镜像) 打开项目中src/main/java/com/example/demo目录下的DemoApplication.java文件,点击class左侧的绿色箭头,就可以启动项目了,也可以使用快捷键Shift+F10启动项目,或者点击IDEA上方的绿色箭头启动项目。 打开浏览器:http://localhost:8080/ 看到如下结果,说明项目创建成功。 1 2 3 4 5 Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing this as a fallback. Thu Aug 08 12:08:16 CST 2024 There was an unexpected error (type=Not Found, status=404). 3、创建Controller 在项目目录下,创建controller目录,创建HelloController.java文件,代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 package com.example.demo.controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloWorldController { @GetMapping("/hello") public String hello() { return "Hello World!"; } } 打开浏览器:http://localhost:8080/hello 就可以看到:Hello World! ...

2025-03-05 · 1 min · 103 words

正则表达式教程

匹配符 符号 意思 ? 0个或1个 + 1个或多个 * 0个或多个 . 除换行符\n之外的任何单字符 ^ 开始符,在方括号内容使用是取反的意思 $ 结束符 () 子表达式,匹配整体:123 [] 子表达式,逐个匹配:1、2、3 \ 转义字符 {} 限定表达式 {n,m} 满足条件且长度为n~m的字符串,{n}匹配n次,{n,}匹配至少n次 [^abc] 取反,匹配除了a、b、c之外的其它内容 [a-z] 区间,匹配a~z的所有字母,还有[0-9]、[A-Z]等 . 匹配除了换行之外的所有字符,等同于[^\n\r] | 多个选择一个 [\s\S] 匹配所有但不包括换行,\s所有空白符,等价于[\f\n\r\t\v]。\S所有非空白符,等价于[^\f\n\r\t\v]。 \w 匹配字母、数字、下划线。等价于 [A-Za-z0-9_] \f 换页符,等价于\x0c和\cL \n 换行符,等价于\x0a和\cJ \r 回车符,等价于\x0d和\cM \t 制表符,等价于\x09和\cI \v 垂直制表符,等价于\x0b和\cK 修饰符 修饰符 含义 g global - 全局匹配 i ignore - 不区分大小写 m multi line - 多行匹配,尤其是有^和$边界符时 s 特殊字符圆点 . 中包含换行符 \n u Unicode,匹配Unicode字符 不同语言 语言 . [] ^ $ () {} ? + | () javascript √ √ √ √ √ √ √ √ √ php √ √ √ √ √ python √ √ √ √ √ √ √ √ √ √ java √ √ √ √ √ √ √ √ √ √ PHP处理emoji 1、emoji保存到数据库中:将emoji的Unicode以json格式存在数据库中 ...

2022-12-19 · 1 min · 212 words

项目管理三要素

项目管理的三要素分别是: 时间 成本 质量 项目启动时三要素维持的是一个等边三角形,随着项目的推进这个三角形的夹角肯定会变形,因为每一个要素的变化都会影响其他两个元素,导致夹角的变化。 做为项目经理的职责就是掌控这个三角形维持着一个合理的角度。在一个项目中,客户往往关心的是质量;而老板掌控着资源,也就是决定着成本;只有时间才是项目经理唯一可以完全掌控的要素。 三个要素互相制约,找准一个平衡点,才能让三者平衡。很多时候,由于外在和内在的压力,取舍是免不了的。要做好取舍分析,项目经理要懂得六件事: 要很清楚地了解项目冲突的基本原因; 重新确认项目的目的; 了解项目现处的环境及目前状况; 寻求可行的其它方法; 选择最佳的其他方法; 重新策划项目计划。

2022-10-28 · 1 min · 13 words

胜任力模型

职场优秀素质: Ownership(主人翁精神) Proactive(主动积极) Passion(工作热情) Optimism(乐观自信) Result-Driven(结果导向) Thoughtful(思维缜密) Sense of Urgency(紧迫感) Negotiator(谈判专家) Inspiring(煽动力) Taste(个人品位) Yes, I Can(我能) 顶级素质 Negotiator(谈判专家) Inspiring(煽动力) Taste(个人品位) 领先素质 Result-Driven(结果导向) Thoughtful(思维缜密) Sense of Urgency(紧迫感) Yes, I Can(我能) 底层素质 Ownership(主人翁精神) Proactive(主动积极) Passion(工作热情)

2022-07-13 · 1 min · 33 words

JavaScript常用校验方法

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 // 是否为空 vernull = function(value){ if(value.trim(value).length == 0){ return false; }else{ return true; } } // 身份证校验 veridc = function(value){ var ext = /(^\d{15}&)|(^\d{18})|(^\d{17}(\d|X|x)$)/; return ext.test(value); } // 英文校验 veren = function(value){ var ext = /(^[a-zA-Z]+$)/; return ext.test(value); } // 数字校验 vernum = function(value){ var ext = /^[0-9]*$/; return ext.test(value); } // 小数校验 verdou = function(value){ var ext = /^[0-9]+(.[0-9]{1,3})?$/; return ext.test(value); } // 邮箱校验 vermail = function(value){ var ext = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/; return ext.test(value); } // 手机号校验 vermob =function(value){ var ext = /^1[3456789][0-9]{9}$/; return ext.test(value); }

2021-11-15 · 1 min · 133 words

Axure高级教程

在axure交互设计时,函数可以用在条件公式和需要赋值的地方,其基本语法是用双方括号包含,变量值和函数用英文句号连接。 例如:[[LVAR. Width]] 表示变量LVAR的宽度,[[This. Width]] 当前元件的宽度 一、元件函数 名称 用途 This 获取当前元件对象。当前元件是指当前添加交互动作的元件 Target 获取目标元件对象。目标元件是指当前交互动作控制的元件。 x 获取元件对象的X轴坐标值。 y 获取元件对象的Y轴坐标值。 width 获取元件对象的宽度值 scrollX 获取元件对象的水平滚动距离(当前仅限动态面板) scrollY 获取元件对象的垂直滚动距离(当前仅限动态面板) text 获取元件对象的文本文字 name 获取元件对象的自定义名称。 top 获取元件对象的上边界坐标值。 left 获取元件对象的左边界坐标值。 right 获取元件对象的右边界坐标值。 bottom 获取元件对象的下边界坐标值。 opacity 获取元件对象的不透明比例。 rotation 获取元件对象的旋转角度。 二、鼠标指针函数 名称 用途 Cursor.x 鼠标指针在页面中位置的X轴坐标。 Cursor.y 鼠标指针在页面中位置的Y轴坐标。 DragX 鼠标指针沿X轴拖动元件时的瞬间(0.01秒)拖动距离。 DragY 鼠标指针沿Y轴拖动元件时的瞬间(0.01秒)拖动距离。 TotalDragX 鼠标指针拖动元件从开始到结束的X轴移动距离。 TotalDragY 鼠标指针拖动元件从开始到结束的Y轴移动距离。 DragTime 鼠标指针拖动元件从开始到结束的总时长。 三、窗口函数 名称 用途 Window.width 打开原型页面的浏览器当前宽度。 Window.height 打开原型页面的浏览器当前高度。 Window.scrollX 浏览器中页面水平滚动的距离。 Window.scrollY 浏览器中页面垂直滚动的距离。 四、页面函数 名称 用途 PageName 获取当前页面的名称。 五、数字函数 名称 用途 toExponential(decimalPoints) 用途:值转换为指数计数法。参数:decimalPoints为保留小数的位数。 toFixed(decimalPoints) 用途:将一个数字转为保留指定位数的小数,小数位数超出指定位数时进行四舍五入。参数:decimalPoints为保留小数的位数。 toPrecision(length) 用途:把数字格式化为指定的长度。参数:length为格式化后的数字长度,小数点不计入长度。 六、数学函数 名称 用途 Math.abs(x) 计算参数数值的绝对值。 参数:x为数值。 Math.acos(x) 获取一个数值的反余弦弧度值,其范围是 0~ pi 。 参数:x为数值,范围在 -1~1 之间。 Math.asin(x) 获取一个数值的反正弦值。 参数:x为数值,范围在 -1~1 之间。 Math.atan(x) 获取一个数值的反正切值。 参数:x为数值。 Math.atan2(y,x) 获取某一点(x,y)的角度值。 参数:“x,y”为点的坐标数值。 Math.ceil(x) 向上取整函数,获取大于或者等于指定数值的最小整数。 参数:x为数值 Math.cos(x) 余弦函数。 参数:x为弧度数值。 Math.exp(x) 指数函数,计算以e为底的指数。 参数:x为数值。 Math.floor(x) 向下取整函数,获取小于或者等于指定数值的最大整数。 参数:x为数值。 Math.log(x) 对数函数,计算以e为底的对数值。 参数:x为数值。 Math.max(x,y) 获取参数中的最大值。 参数:“x,y”表示多个数值,而非2个数值。 Math.min(x,y) 获取参数中的最小值。 参数:“x,y”表示多个数值,而非2个数值。 Math.pow(x,y) 幂函数,计算x的y次幂。 参数:x不能为负数且y为小数,或者x为0且y小于等于0。 Math.random() 随机数函数,返回一个0~1之间的随机数。 示例:获取10-15之间的随机小数,计算公式为Math.random()*5+10。 Math.sin(x) 正弦函数。 参数:x为弧度数值。 Math.sqrt(x) 平方根函数。 参数:x为数值。 Math.tan(x) 正切函数。 参数:x为弧度数值。 七、时间函数 名称 用途 Now 获取当前计算机系统日期对象。 GenDate 获取原型生成日期对象。 getDate() 获取日期对象“日期”部分数值(1 ~ 31)。 getDay() 获取日期对象“星期”部分的数值(0 ~ 6)。 getDayOfWeek() 获取日期对象“星期”部分的英文名称。 getFullYear() 获取日期对象“年份”部分四位数值。 getHours() 获取日期对象“小时”部分数值(0 ~ 23)。 getMilliseconds() 获取日期对象的毫秒数(0 ~ 999)。 getMinutes() 获取日期对象“分钟”部分数值(0 ~59)。 getMonth() 获取日期对象“月份”部分的数值(1 ~ 12)。 getMonthName() 获取日期对象“月份”部分的英文名称。 getSeconds() 获取日期对象“秒数”部分数值(0 ~59)。 getTime() 获取当前日期对象中的时间值。该时间值表示从1970年1月1日00:00:00开始,到当前日期对象时,所经过的毫秒数,以格林威治时间为准。 getTimezoneOffset() 获取世界标准时间(UTC)与当前主机时间之间的分钟差值。 getUTCDate() 使用世界标准时间获取当前日期对象“日期”部分数值(1 ~ 31)。 getUTCDay() 使用世界标准时间获取当前日期对象“星期”部分的数值(0 ~ 6)。 getUTCFullYear() 使用世界标准时间获取当前日期对象“年份”部分四位数值。 getUTCHours() 使用世界标准时间获取当前日期对象“小时”部分数值(0 ~ 23) getUTCMilliseconds() 使用世界标准时间获取当前日期对象的毫秒数(0 ~ 999)。 getUTCMinutes() 使用世界标准时间获取当前日期对象“分钟”部分数值(0 ~59)。 getUTCMonth() 使用世界标准时间获取当前日期对象“月份”部分的数值(1 ~ 12)。 getUTCSeconds() 使用世界标准时间获取当前日期对象“秒数”部分数值(0 ~59)。 Date.parse(datestring) 用于分析一个包含日期的字符串,并返回该日期与1970年1月1日00:00:00之间相差的毫秒数 参数:datestring为日期格式的字符串,格式为:yyyy/mm/dd hh:mm:ss。 toDateString() 以字符串的形式获取一个日期。 toISOString() 获取当前日期对象的IOS格式的日期字串,格式:YYYY-MM-DDTHH:mm:ss.sssZ。 toJSON() 获取当前日期对象的JSON格式的日期字串,格式: YYYY-MM-DDTHH:mm:ss.sssZ。 toLocaleDateString() 以字符串的形式获取本地化当前日期对象。并且只包含“年月日”部分的短日期信息。 toLocaleTimeString() 以字符串的形式获取本地化当前日期对象。并且只包含“时分秒”部分的短日期信息。 toUTCString() 以字符串的形式获取相对于当前日期对象的世界标准时间。 Date.UTC(year,month,day,hour,min,sec,millisec) 获取相对于1970 年 1 月 1 日 00:00:00的世界标准时间,与指定日期对象之间相差的毫秒数。 参数:组成指定日期对象的年、月、日、时、分、秒以及毫秒的数值。 valueOf() 获取当前日期对象的原始值。 addYears(years) 将指定的年份数加到当前日期对象上,获取一个新的日期对象。 参数:years为整数数值,正负均可。 addMonths(months) 将指定的月份数加到当前日期对象上,获取一个新的日期对象。 参数:months为整数数值,正负均可。 addDays(days) 将指定的天数加到当前日期对象上,获取一个新的日期对象。 参数:days为整数数值,正负均可。 addHours(hours) 将指定的小时数加到当前日期对象上,获取一个新的日期对象。 参数:hours为整数数值,正负均可。 addMinutes(minutes) 将指定的分钟数加到当前日期对象上,获取一个新的日期对象。 参数:minutes为整数数值,正负均可。 addSeconds(seconds) 将指定的秒数加到当前日期对象上,获取一个新的日期对象。 参数:seconds为整数数值,正负均可。 addMilliseconds(ms) 将指定的毫秒数加到当前日期对象上,获取一个新的日期对象。 参数:ms为整数数值,正负均可。 Year 获取系统日期对象“年份”部分的四位数值。 Month 获取系统日期对象“月份”部分数值(1 ~ 12)。 Day 获取系统日期对象“日期”部分数值(1 ~ 31)。 Hours 获取系统日期对象“小时”部分数值(0 ~ 23)。 Minutes 获取系统日期对象“分钟”部分数值(0 ~ 59)。 Seconds 获取系统日期对象“秒数”部分数值(0 ~ 59)。 八、字符串函数 名称 用途 length 获取当前文本对象的长度,即字符个数;1个汉字的长度按1计算。 charAt(index) 获取当前文本对象中指定位置的字符; 参数:index为大于等于0的整数。 charCodeAt(index) 获取当前文本对象中指定位置字符的Unicode编码(中文编码段19968 ~ 40622);字符起始位置从0开始。 参数:index为大于等于0的整数。 concat(‘string’) 将当前文本对象与另一个字符串组合。 参数:string为组合在后方的字符串。 indexOf(‘searchValue’,start) 从左至右获取查询字符串在当前文本对象中首次出现的位置。未查询到时返回值为-1。 参数:searchValue为查询的字符串;start为查询的起始位置。该参数可省略,官方未给出此参数,经测试可用。 lastIndexOf(‘searchvalue’,start) 从右至左获取查询字符串在当前文本对象中首次出现的位置。未查询到时返回值为-1。 参数:searchValue为查询的字符串;start为查询的起始位置。该参数可省略,官方未给出此参数,经测试可用。 replace(‘searchvalue’,’newvalue’) 用新的字符串替换当前文本对象中指定的字符串。 参数:searchvalue为被替换的字符串;newvalue为新文本对象或字符串。 slice(start,end) 从当前文本对象中截取从指定起始位置开始到终止位置之前的字符串。 参数:start为被截取部分的起始位置,该数值可为负数;end为被截取部分的终止位置,该数值可为负数。该参数可省略,省略该参数则由起始位置截取至文本对象结尾。 split(‘separator’,limit) 将当前文本对象中与分隔字符相同的字符转为“,”,形成多组字符串,并返回从左开始的指定组数。 参数:separator为分隔字符,分隔字符可以为空,为空时将分隔每个字符为一组;limit为返回组数的数值,该参数可以省略,省略该参数则返回所有字符串组。 substr(start,length) 从当前文本对象中指定起始位置开始截取一定长度的字符串。 参数:start为被截取部分的起始位置;length为被截取部分的长度,该参数可省略,省略该参数则由起始位置截取至文本对象结尾。 substring(from,to) 从当前文本对象中截取从指定位置到另一指定位置区间的字符串。右侧位置不截取。 参数:from为指定区间的起始位置;to为指定区间的终止位置,该参数可省略,省略该参数则由起始位置截取至文本对象结尾。 toLowerCase() 将文本对象中所有的大写字母转换为小写字母。 toUpperCase() 将当前文本对象中所有的小写字母转换为大写字母。 trim() 去除当前文本对象两端的空格。 toString() 将一个逻辑值转换为字符串。 九、中继器函数 名称 用途 Repeater 中继器的对象。Item.Repeater即为Item所在的中继器对象。 visibleItemCount 中继器项目列表中可见项的数量。比如:项目列表共有15项,分页显示为每页6项。当项目列表在第1、2页时,可见项数量为6;当项目列表在第3页时,可见项数量为3。 itemCount 获取中继器项目列表的总数量,或者叫加载项数量。默认情况下项目列表的总数量会与中继器数据集中的数据行数量一致,但是,如果进行了筛选,项目列表的总数量则是筛选后的数量,这个数量不受分页影响。 dataCount 获取中继器数据集中数据行的总数量。 pageCount 获取中继器分页的总数量,即能够获取分页后共有多少页。 pageIndex 获取中继器项目列表当前显示内容的页码。 Item 获取数据集一行数据的集合,即数据行的对象。 TargetItem 目标数据行的对象。 Item.列名 获取数据行中指定列的值。 index 获取数据行的索引编号,编号起始为1,由上至下每行递增1。 isFirst 判断数据行是否为第1行;如果是第1行,返回值为“True”,否则为“False”。 isLast 判断数据行是否为最末行;如果是最末行,返回值为“True”,否则为“False”。 isEven 判断数据行是否为偶数行;如果是偶数行,返回值为“True”,否则为“False”。 isOdd 判断数据行是否为奇数行;如果是奇数行,返回值为“True”,否则为“False”。 isMarked 判断数据行是否为被标记;如果被标记,返回值为“True”,否则为“False”。 isVisible 判断数据行是否为可见行;如果是可见行,返回值为“True”,否则为“False”。

2021-08-06 · 2 min · 364 words

财会常用知识点

借贷记账法 借贷记账法下,所有账户的结构都是左方为借方,右方为贷方,但借方、贷方反映会计要素数量变化的增减性质则是不固定的。不同性质的账户,借贷方所登记的内容不同,下面分别说明各类账户的结构。 有借必有贷,借贷必相等 资产类账户的结构 在资产类账户中,它的借方记录资产的增加额,贷方记录资产的减少额。在同一会计期间(年、月),借方记录的合计数额称作本期借方发生额,贷方记录的合计数称作本期贷方发生额,在每一会计期间的期末将借贷方发生额相比较,其差额称作期末余额。资产类账户的期末余额一般在借方。 资产类账户的期末余额可根据下列公式计算: 期末余额(借方)= 期初余额 + 本期借方发生额 - 本期贷方发生额 负债类账户和所有者权益类账户的结构 负债及所有者权益类账户的结构与资产类账户正好相反,其贷方记录负债及所有者权益的增加额;借方记录负债及所有者权益的减少额,期末余额一般应在贷方。 负债类账户和所有者权益类账户的期末余额可根据下列公式计算: 期末余额(贷方)= 期初余额 + 本期贷方发生额 - 本期借方发生额 成本费用类账户的结构 成本类账户的结构与资产类账户的结构基本相同,账户的借方记录费用成本的增加额,账户的贷方记录费用成本转入抵销收益类账户(减少)的数额,由于借方记录的费用成本的增加额一般都要通过贷方转出,所以账户通常没有余额。如果有余额,也表现为借方余额。 收益类账户的结构 收益类账户的结构则与负债类账户和所有者权益类账户的结构基本相同,收入的增加额记入账户的贷方,收入转出(减少额)则应记入账户的借方,由于贷方记录的收入增加额一般要通过借方转出,所以账户通常也没有期末余额。如果有余额,同样也表现为贷方余额。

2020-01-17 · 1 min · 25 words

ATR:均幅指标

Average True Range 取一定时间周期内的股价波动幅度的移动平均值,通常使用14天。 由于惊恐抛售所驱使的价格的剧烈下跌,这一指标在市场底部通常可以达到一个较高的价值。这一指标对于长期持续边幅移动的时段是非常典型的,这一情况通常发生在市场的顶部,或者是在价格巩固期间。平均波幅通道技术指标依据同样的原则,可以被解释成为其他一些易变指数。根据这个指标来进行预测的原则可以表达为:该指标价值越高,趋势改变的可能性就越高;该指标的价值越低,趋势的移动性就越弱。 t:当日tody; p:上一个节点previous n:时间单元unit; Ci:第i日的收盘价close; Hi:第i日的最高价height; Li:第i日的最低价low。 $$ TR = Max[(H-L),Abs(H-C_p),Abs(L-C_p)] $$ Max 取最大值 Abs 取绝对值absolute $$ ATR = \Big( \frac{1}{n}\Big) \sum^{(n)}_{(i=1)} TR_i $$ 波动性较高的股票具有较高的ATR,而波动性较低的股票具有较低的ATR。 它的创建是为了使交易者可以通过简单的计算来更准确地衡量资产的每日波动性。该指标未指示价格方向;相反,它主要用于衡量由缺口引起的波动并限制上下波动 ATR的使用通常用作退出方法,无论如何做出进入决定 可以使用ATR方法来确定头寸规模,从而说明单个交易者自己接受风险的意愿以及基础市场的波动性 ATR使用范围 1、利用ATR资金配比 通过ATR指标的具体数值我们可以看到一些基本的信息,从中分别具体货币的波动情况,这样就可以调整资金的配比.并且每种产品的价格都在不断的波动中,所以可以根据具体的ATR指标的参数来调整交易的计划 2、利用ATR选择入场点位 短期ATR一般大于长期的ATR,我们可以通过短期和长期的波动性的差值,并根据相应的价格方向入场,同时在趋势比较稳定的时候平仓出局. 3、利用ATR止损 著名的海龟法则中,海龟交易法则按照价格高于初始价格0.5ATR进行加仓操作,按照价格低于建仓价2ATR进行止损操作.

2019-12-27 · 1 min · 39 words

BackTrader学习笔记

一、BackTrader介绍 BackTrader是开源免费的量化交易策略回测系统, 运行流程: 引入backtrader 加载和注入数据Feed(cerebro.adddata) 执行:cerebro.run() 可视化结果:cerebro.plot() 二、安装BackTrader 1、安装环境要求: Python 2.7 Python 3.2 / 3.3/ 3.4 / 3.5 pypy/pypy3 Matplotlib> = 1.4.1(如果需要绘图的话需要配置) 2、兼容Python2.x/3.x 1 from __future__ import (absolute_import, division, print_function,unicode_literals) 3.1、通过pip安装: pip install backtrader 如果想同时安装matplotlib: pip install backtrader[plotting] 3.2、通过源安装 https://github.com/mementum/backtrader python安装源文件,自己搜索 3.3、通过pycharm安装 新建项目 -> Files -> Settings -> Project 项目名称 -> Project Interpreter -> 右侧加号,搜索backtrader Install Package即可 三、backtrader用法 1、使用前说明 常用数据名称: 开盘价,最高价,最低价,收盘价,成交量,持仓量 数据索引方式: 当前值:[0] 前一个值:[-1] 前2个值:[-2] …… 说明:所有的数字都是历史值,所以只能往后推 1、基本功能 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 from __future__ import (absolute_import, division, print_function,unicode_literals) #让python2兼容python3,python3环境下可以不用写 #引入backtrader import backtrader as bt if __name__ == '__main__': cerebro = bt.Cerebro() cerebro.broker.setcash(100.0) #可以自定义金额 print('Starting Portfolio Value: %.2f' % cerebro.broker.getvalue()) cerebro.run() print('Final Portfolio Value: %.2f' % cerebro.broker.getvalue()) 执行结果: ...

2019-12-23 · 2 min · 346 words