我对均线参数搜索范围是从10开始, 按10递进, 一直到80, 也就是10,20,30, .... 70,80
根据我的长期观察, 我发现应用均线策略时, 某些均线有极佳的效果, 比如ma(10,20,
40,50, 80)
可以否定的参数是30,60,70,
至于是用MA还是EMA, 这方面要注意的是: MA相对来说更加平滑, 而EMA在价格震荡时期则更加波折,
我的观察发现EMA40在1小时线上,很有作用.
应用均线的诀窍就是: 主图上每次只放一条均线, 而不要把均线全放上去, 因为绝大多数人都没有这个水平同时看多条线!!!
或者你可以把相近的均线比如ma(40,50,60)放一张图上一起看,
但是绝不要把差别大的均线ma(10,20,60)放一起.
下面的文献虽然不是很经典的那种, 不过还是对我的发现给予了佐证:
1) 移动平均线方法的最佳步长组合的确定 2000
王兆军(南开大学数学系), 曾渊沧(香港城市大学科学管理系, 这是个名人)
http://www.doc88.com/p-1468085190108.html
2
从55188.com论坛上还有网络上下载的通达信行情API:
TDXHQAPI.DLL(2016年的版本,2099年到期),看论坛网友说2017年5月的时候, getIndexBars,
GetSecurityBars 指数K线, 个股K线这两个函数已经没法用了,估计是服务器那边更新了.
但是历史分时行情函数(每天240分钟) GetHistoryMinuteTimeData()还是可以用的,
2018-11-9日用C++,兴业证券通达信的接口测试成功.
所以曲线救国的方案就是用历史上每一天的分时行情函数,
来生成小时线,30分钟线等等这样的,大不了写几个C++的split函数来处理返回的字符串就可以了. 用python的话,
可以用pandas.resample()函数来读取C++提取出来的数据(保存在txt里).
通达信这个软件确实比网络上其他的网页版或者SDK版的行情好用, (网上很多SDK,
比如github上很多Quantxxx的SDK, 都是用的TCP期货接口), 首先是不需要登录,不需要token!!!,
其次这么多年过去了 很多软件都倒闭了, 通达信这种大公司还在, 通讯接口非常多, 还有就是体积小(一个小DLL文件就可以获取数据了).
我们可以实时获取数据, 比如开着
有时候我们打开带vba代码的xlsm文件时候,会提示文件中发现不可读取的内容,要不要恢复后再打开。你点击'是-修复',excel就会尝试把vba代码删除了(提示:已删除的部件:/xl/vbaProject.bin),就能打开了。这时候如果你没有备份vba代码,
你是不是想死的心都有了,辛辛苦苦写的代码,打开excel后什么都没有了。
我今天遇到一个文件坏了,情急之下摸索出一个方法,恢复了其中的代码(不知道以后是不是一直有效!)。原理就是excel的xlsm文件其实是个xml文件的压缩包。步骤如下:
1。
把坏的xlsm文件copy出来,后缀改成zip,然后打开这个压缩包,把里面的vbaProject.bin解压出来
2。随便找一个可以打开的xlsm文件,后缀改成zip,然后打开这个压缩包,把里面的vbaProject.bin删除
3。把坏xlsm文件中解压出来的vbaProject.bin拉进好文件的zip的压缩包里
4。把好文件的后缀zip改成xlsm,就能打开这个好文件了,其中的vba代码就是坏文件的vba代码。
所以,以后最好把该xlsm文件设置成只读属性,免得xlsm文件再次奇怪的报错。
这是个很实用的技巧,免得你先用=sum()算出来再拷贝粘
贴了.
方法:
1.在vbe里面调用c:\windows\system32\FM20.dll, 然后引用MS Forms 2.0
Object Lib
2.写好如下的代码,然后按alt+F8 调出宏的选项窗口,赋予它快捷键,比如ctrl+B
这样就可以了.
这玩意的强大之处在于你可以打开带有这段的代码的xlsm文件,然后在其它不含有这段代码的xlsx文件中使用该快捷键.
Sub CopySum()
'http://excel-macro.tutorialhorizon.com/vba-excel-storing-multiple-data-in-the-windows-clipboard/
'http://dailydoseofexcel.com/archives/2014/04/30/copy-selection-sum-to-clipboard/
'gclsAppEvents.AddLog '^+c', 'CopySum'
'Application.OnKey '^{q}', 'CopySum'
If TypeName(Selection) = 'Range' Then
With New MSForms.DataObject
'.SetText
Application.Sum(Selection)
'.SetText
MS Access的SQL语言是Jet-sql(https://baike.baidu.com/item/Microsoft Jet
Database Engine),比SQL
server的T-sql语言差多了,比如不支持很多函数,没有存储过程,没有触发器。但是我们可以通过建立.adp(access data
project),而不是.accdb文件,
在前端access窗口调用背后强大的sql-server,从而使用全套T-sql语句。不过微软在2010之后好像就不再大力支持ADO这类技术了,而转向.net
技术了。但是ADO技术还是相当有用的,比如通过excel vba调用,C#,vb里面的调用语法也是通过ADO.
参考文章:
http://www.doc88.com/p-7498999379674.html (2012年出版)
最近画了2天时间从网上搜罗excel vba代码,组装了一个自动屏幕截图后保存,
再用OCR把该图转成文字的原生vba项目。可以每隔15分钟自动屏幕截图,比如大智慧,万得wind的股票新闻窗口截图,再转成文字。做到了所见即所得,不用python爬虫技术的。因为有的软件比如万得wind的新闻窗口是J
ava写的只能肉眼看,没法导出。除非你买他的数据库,用客户端推送数据给你,或者破解dll文件,从中提取数据(这个相当难)。
(吐槽一下,尼玛新浪博客是烂, 如果句子中有'j ava',那么该段后面的文字全没有了,所以你看到我前面j
ava中有空格)
我用的OCR引擎是MS office 2007自带的微软office document imaging
v12.0库MODI(不过v12.0后就没有再更新了,office
2010里面甚至不附带MODI了,而是推出了oneNote的OCR引擎,用的xml模式,我还不会调用)识别英文很好,
中文差一点。而且关键从程序调用该OCR来识别多行文字,出来的结果变成一行,换行全没有,眉毛胡子连在一起(但是用MODI软件GUI客户端提取到html则可以保留换行,不知道怎么做到的)。所以我目前采用的是一行一行的截图,或者整体截图后放进excel,再用cro
(2017-01-26 23:56)
excel vba的自定义函数里调用自定义过程的方法
一般来说,excel
vba的自定义函数function()有局限性,只能返回值,不能修改单元格。转而调用过程sub()的话,又要传入参数,又要创建按钮,比较麻烦,
对于输入参数经常要变动的,比如ADO+sql语句,更是麻烦。但是也有例外,比如wind万得的返回历史价格序列函数histquote()可以在输入函数的单元格的下面返回一系列价格,这好像是通过调用c++语言编译的COM组件实现的。
在网上我有找到一个简单点的办法,通过添加类模块(用来制作高级对象的类class,也就是对象的母体)实现。(见Appendix)原理就是定义一些公共变量,在模块里定义函数的部分给它们赋值,并且封装进一些固定数据,然后在类模块里编写过程,调用这些公共变量的数值,并且结合那些固定数据,生成最终结果数据。
最近我在想,给定一组股票,怎么构建一个组合,使得收益率的方差最小minimum variance
portfolio(MVP),这样不会被洗盘洗出去。我谷歌查了一下,经典的markowitz组合理论已经给出了答案。具体可见这个课件http://www.math.ust.hk/~maykwok/courses/ma362/Topic2.pdf,
代码可参见https://www.fpcomplete.com/blog/2014/04/mvp。
中心思想是构建efficient
frontier有效边界。而这个边界可以表达成两个典型的组合的任意线性叠加。这个两个典型组合的权重系数w1,
w2在那个课件的第15页给出:也就是最小方差组合w1=inverse(V)*e,
以及一个所谓的envelope信封组合w2=inverse(V)*R, V是股票收益率(注意不是log(股价)的协方差矩阵,
e是全是1构成的单位向量,R是股票期望日收益率构成的向量。inverse函数对矩阵求逆。这个最小方差组合的缺点是权重都集中在波动小的股票上,有的权重接近0。更重要的是按w1做出来的组合走势,看起来也不是方差最小,这可能要归结为cov矩阵丢失了时间序列很多信息,就像麦当劳的牛肉汉堡,不是牛肉,而是是牛肉渣做的一样。协方差cov(x,y)=E(x*y)-E(x)*E(y)
类似的商业开发,有标普的低波动率指数etf:SPLV,最小方差e
(2016-06-02 23:33)
通过excel的对象容器 CreateObject('MSXML2.XMLHTTP') 我们可以提取yahoo
finance下载的csv文件(csv API)中的股价信息(15分钟延迟),这样我们就可以在excel中列出股价live
quote,来做出一个stock alert
股价提醒列表。再通过快捷键来手动更新。这种技术比先下载web数据到excel表再做处理,要快的多。
这样可以利用excel强大的计算功能,对实时股价做出反应,对多只个股发出提醒,比如股价突破某个价位区间,股价从最高价回落多少,或者更复杂的组合的涨跌。图1是网上下载的excel模板,图2是用其中函数提取我们需要的数据,并且列出股价对应的时间,和当前时间作比较。
另外,yahoo webservice API 接口也提供文本格式(JSON格式,适合python等语言处理)的股价信息,
以及更全面的yahoo YQL API 接口的查询(无延迟,逗号分隔的文本格式,不过可靠性很差,比如excel每次提取的day's
high都不一样,而用浏览器直接打开则比较可靠)。
google
finance的API现在官方说终止了,不过国外网友发现还可以继续使用提供JSON文件的API地址(没有延时,股价信息要比yahoo的少很多,所以速度更快,不过基本够用了,图3)。另外,用chrome
利用
期权组合 盈亏的网格估算法
里面的excel,根据未来不同的股价和iv,计算期权组合的市值,我们有以下的重要发现:
1 vertical spread,
1.1 strikes选取OTM的还是ITM的,取决于你对价格走势的信心。比如一个bull spread
(用call和put是等价的,因为有put call parity), +(long) 94 call
- (short)
98 call, 和 +100 call - 104 call , 前一个spread是ITM的,
后者是OTM的。如果股价呼啦呼啦涨上去了,那么后者赚的多,如果股价停留在中间,也就是98-100附近,那么前者赚的多,因为后者还没开始赚钱,如果股价跌下去,那么前者亏的多,因为后者deep
OTM,亏损的已经差不多了,delta=0。
1.2 所有vertical spread,当股价在预期的盈利区间时,
vega都是负的,iv越小越好(因为盈利曲线越贴近到期日的曲线),否则,如果股价走到亏损区间,vega就都是正的,iv越大越好(亏损的少),可以算是垂死挣扎,因为vega
(price, time) 是随这两个因素变动的,不能直接用entry时候的vega。
2 作为经典的m