github pages是可以被百度检索到的,网上的文章都是瞎扯

有图有证。
看来还是继续用回github pages吧。
优矿回测可转债 代码 教程
可是碍于非科班出生, 对于编程的一窍不通, 所以大部分止步于简单的数据统计.
比如采用excel对采集来的数据,手工测试与验证, 高级点的可以应用一些excel函数进行简单回测.
这里会有一个烦人且第一大障碍, 就是需要有采集来的数据. 首先保证这个数据的完整性与准确性. 这一步其实已经过滤掉想要回测的80%的人了. 具体优矿支持的数据。

优矿支持的数据
- 股票:沪深交易所股票的基本信息以及日/分钟级别的股票行情。
- 财务报表:沪深港上市公司披露的2007年会计准则变更以来的所有财务报表数据,包含三大报表和财报附注等细节。
- 公司行为:沪深上市公司业绩预告,业绩快报,IPO,配股,分红,拆股,股改等信息。
- 基金:场内外各类基金的基本信息,日/分钟级别的场内基金行情,日级别的场外基金净值,以及基金资产配置,收益情况,净值调整等信息。
- 期货:国内四大期货交易所期货合约的基本信息,日/分钟的期货行情,以及国债期货的转换因子等信息。
- 指数:国内外指数基本信息,日/分钟级别的指数行情,以及指数成分构成情况,指数成分股权重情况等信息。
- 港股:香港交易所股票基本信息以及日级别的股票行情。
- 大宗商品:国内各个品种(包括期货合约可交割品种)的大宗商品现货价格行情,以及产销量,库存等信息。
- 债券:债券/回购基本信息,日级别的债券/回购行情,以及发行上市,付息,利率,评级和评级变动,债券发行人评级及变动,担保人评级及变动等信息。
- 期权:上交所期权合约的基本信息,日/分钟级别的期权行情,以及每日盘前静态数据等信息。
- 宏观产业:中国及全球各国宏观指标,行业经济指标等数据。
特色数据
- 股票/指数等品种的量化因子库
- 雪球、股吧等社交媒体数据
- 主流媒体新闻文本和结构化数据
- 主流渠道公告文本和结构化数据
- 淘宝、天猫等电商数据
其实其他的聚框,米宽,箩筐等等,都是大同小异的,本文只是挑选笔者使用比较多的优矿来介绍. 不过现在优矿并不支持实盘.
本文只是做一个量化平台框架的基本介绍, 后续的文章会有进阶, 加入买卖操作, 计算最大回撤, 以及更为复杂的多因子回测. 只要有的数据,基本都可以拿来加入到你的模型之中.
##################################################################

因为优矿本身并不支持可转债的交易,所以系统内置的order,buy,sell函数是无法应用到可转债上面。
不过只要能够获取到每日的行情数据,那么我们就可以自己构造一个交易系统。
核心就就是每次保存你的持仓信息,等到下一次调仓时,对持仓进行比较,对于调出的转债进行移除,新加的转债进行加入。 然后统计一下当前市值,记录下来,就可以得到收益率曲线。
部分代码如下:
import datetime
start = '2018-01-01' # 回测起始时间
end = '2021-05-28' # 回测结束时间
benchmark = 'HS300' # 策略参考标准
freq = 'd' # 策略类型,'d'表示日间策略使用日线回测,'m'表示日内策略使用分钟线回测
refresh_rate = 5 # 调仓频率,表示执行handle_data的时间间隔,若freq = 'd' 时间间隔的单位为交易日,
hold_num = 10 # 持有转债的个数
def initialize(context):
global MyPosition, HighValue, MyCash, Withdraw, HoldRank, HoldNum,Start_Cash
MyPosition = {} #持仓
MyCash = 1000000 #现金
Start_Cash= 1000000
HighValue = MyCash #最高市值
Withdraw = 0 #最大回撤
HoldRank = hold_num #排名多少之后卖出
HoldNum = hold_num #持债支数
def bonds(beginDate=u"20170101",endDate=u"20201215",EB_ENABLE=False):
code_set = set()
df = DataAPI.MktConsBondPremiumGet(SecID=u"",
tickerBond=u"",
beginDate=beginDate,
endDate=endDate,
field=u"",
pandas="1")
cb_df = df.tickerBond.str.startswith(('12', '11'))
df = df[cb_df]
cb_df = df.tickerBond.str.startswith('117')
df = df[~cb_df]
if not EB_ENABLE:
eb = df.secShortNameBond.str.match('\d\d.*?E[123B]') # TODO 判断EB是否过滤
df = df[~eb]
ticker_list =
for _, row in df[['tickerBond', 'secShortNameBond', 'tickerEqu']].iterrows():
if row['tickerBond'] not in code_set:
ticker_list.append((row['tickerBond'], row['secShortNameBond'], row['tickerEqu']))
code_set.add(row['tickerBond'])
return list(code_set)
def handle_data(context):
global MyPosition, HighValue, MyCash, Withdraw, HoldRank, HoldNum,Start_Cash
today_date = context.now.strftime('%Y%m%d')
#每天重新计算双低排名
ticker_list=bonds(today_date,today_date)
data = DataAPI.MktConsBondPerfGet(beginDate=today_date,endDate=today_date,secID='',tickerBond=ticker_list,
tickerEqu=u"",field=u"",pandas="1")
data['secID']=data['tickerBond']
data.set_index('secID',inplace=True)
data['DoubleLow'] = data['closePriceBond'] + data['bondPremRatio']
data = data.sort_values(by="DoubleLow" , ascending=True)
PosValue = MyCash
#抛出不在持有排名HoldRank的
for stock in MyPosition.keys():
try:
CurPrice = data.loc[stock]['closePriceBond']
except:
last_date = (context.now + datetime.timedelta(days=-7)).strftime('%Y%m%d')
CurPrice=get_last_price(stock,last_date,today_date)
PosValue += MyPosition[stock] * CurPrice * 10 #计算当前市值
if stock not in data.index[:HoldRank]:
# 省略若干
log.info('{} 卖出{},{},价格:{}'.format(today_date,stock,name,CurPrice))
if PosValue > HighValue:HighValue = PosValue
if (HighValue - PosValue) / HighValue > Withdraw:Withdraw = (HighValue - PosValue) / HighValue
#买入排在HoldRank内的,总持有数量HoldNum
min_hold = min(HoldRank,len(data.index))
for i in range(min_hold):
if len(MyPosition) >= HoldNum:break
if data.index[i] not in MyPosition.keys():
# 省略若干
log.info('{} 买入{}, {}, 价格{}, 溢价率{}'.format(today_date,data.index[i],name,price,cb_ration))
ratio = (PosValue-Start_Cash)/Start_Cash*100
log.info(today_date + ': 最高市值 ' + str(HighValue) + ' , 当前市值 ' + str(PosValue) + '收益率 : '
+str(ratio)+'% , 最大回撤 ' + str(round(Withdraw*100,2))+'%') [/i][/i]
[i]欢迎讨论探索,星球里面有更多的完整策略与代码,回测数据,结论资源。

30天学会Golang
附github目录图以及github地址
https://github.com/Rockyzsu/GolangLearning

同时欢迎关注公众号: 30天尝试新事情

收起阅读 »
Goland 配置vim vimrc文件 附配置文件
只好自己写一个简单的教程来纠正下。
在Goland编辑器下,使用vim插件,可以在Goland 这个IDE上运行vim编辑器操作。

很多的vim操作用的是k-vim大神的配置文件,所以这里需要修改Goland的默认vim配置文件。
Goland的vimrc文件为 .ideavimrc ,位于C:\Users\你的用户名下面。
如果没有就新建一个,需要在gitbash下新建,不然windows系统是不能建一个 . 开头的文件的。
或者把k-vim的配置文件拷贝过滤,修改下名字,改为 .ideavimrc 就可以了。
当然,这个k-vim的一些配置需要做一些修改。因为这个是Linux下运行的shell的,有一些插件或者主题是不使用与Goland的,把不适用的注释掉即可。

这里我也提供一个修改后的k-vim版本的.ideavimrc,下载后拷贝到C:\Users\用户名 下就可以了。
记得重启下Goland。
关注公众号后,后台回复: vim 即可

收起阅读 »
【手把手教程】空投币怎么领取,以ShiBZilla为例
记住,不要花钱,要的是白嫖,只要要你花一分钱,果断把网页关闭,然后打开手机,打几盘王者荣耀。
既然是送钱,那么会有什么风险吗? 有,就是最后没有送钱成功,空投的币种发行失败,也就你没有撸到羊毛,你损失的时间成本,当然如果你时间不值钱,就没有什么损失的啦。
好。准备的东西。
1. 钱包地址:
就是一串数字。
钱包地址类似于你的家的地址:

别人给你送钱了,你得有个钱包来接呀。
钱包获取也很简单,找个冷钱包,自动生成。冷钱包只是个皮包,即使冷钱包丢了也没关系的。
关键不要丢的是助记词。
助记词就是私钥,你有助记词,管它倒闭不倒闭,跟你没有任何关系。
钱包公司只是给你提供服务,私钥在,财产永远是你的。
助记词就是给你十来二十个单词,你记住每个单词的顺序。你用这些单词的顺序就可以完整的恢复你的钱包,在其他钱包也可以。
所以一定要保存好你的助记词。 最好用纸抄下来。
冷钱包随意找一个能用的即可。比如我用的是比特派,或者 IMtoken。到应用市场下载后,在手机里面打开,找到对应的币种。
这里我需要拿出 BSC钱包的地址就可以。 一个钱包里面可以自动生成N个币种的钱包地址。

这里点进去BSC钱包。
里面的收款地址就是你要提供给SHIBZILLA币官方的。

点进去后就是见到你的地址

第一步拿到自己的钱包地址了。
第二部。
找到有空投币的官网地址:
http://shibzillacoin.net/?ShiBZilla=B09D2
比如我上面这个,后面带了一个推广码,很明显,这是我的一个推广链接。 我推广一个人领取空投币,我自己也可以得到一部分的空投币奖励。
复制并分享你的链接,你和被邀请人同时奖励 10亿枚 ShiBZilla,每人最多可邀请 40人,奖励最高可获得 400亿枚 ShiBZilla。
所以为了感谢我写的这篇科普文章,你可以用的链接去领取空投币ShiBZilla。
虽然我也不知道这个币市干嘛用的,只是长得很像shibi。
哦,对了,当时shibi也是这样子空投的,如果当时没有看上的人,后面就得几万块几万块的用真金白银买回来了。
本来白送的呢。
ShiBZilla币发空投,留一个BSC地址发10亿币,最后一天时间:
http://shibzillacoin.net/?ShiBZilla=B09D2
白赚的币大家可以去领一领,说不定上市值几百块钱。
收起阅读 »
imgtu为什么上传二维码的图片会被删除 甚至账户被封?
为何二维码会被删除?
因为二维码很容易被用于黑产项目,而且无法直接识别,所以禁止上传含有二维码的相关图片.
截图软件sharex 上传到七牛图床 设置上传文件名与本地名一样
不过网上的文章使用的上传文件名是按照当时的日期设定的。
什么意思呢?
比如我用sharex截图后,截图的文件叫 hello.png ,如果用sharex上传到七牛后,它的文件名就变成了 202111282121.png,
全路径就是 http://xxx.example.com/202111282121.png.
这里假设你使用的上传的配置key如下:%y%mo%d%h%mi%s.png这样会造成一个麻烦。
比如的截图文件名是20211128210910.png, 21点09分10秒,然后我过了1秒钟后才开始上传,我一般手动上传,因为不希望每一个截图都上传,这样会导致部分个人隐私数据不自觉传出去,可能泄露敏感信息。
所以过了1秒钟后的上传到服务器的文件名为20211128210911.png , 21点09分11秒。
这个造成本地文件名与远程文件名不一样。如果后续你想在本地找回原来文件的副本,你根据服务器的URL地址,在本地是找不到的,只能先把文件名的日期时间精确到分钟,然后秒位使用* 星号匹配符来查找。 这样多了一重手续。
或者我有本地的截图的文件名,我想直接构造成服务器上的文件名,这是我就不能直接 http://xxxx.example/本地文件名.png 这样来构造了。 因为远程服务器的文件名和本地不一样。
网上找一一圈都没找到对应的办法,然后到官网找了一番,终于找到解决办法,很简单。
把key的值设置为 $filename$
即可。
markdown 收起阅读 »
hexo使用七牛图床 放到github pages上无法显示
问题的根源在于 谷歌浏览器 , 在https的网站里面放http格式的图片,那么http的链接会被自动转为https,从而导致找不到链接,会显示叉叉
效果如下图显示:

在本地运行服务器:
hexo s
启动本地的:http://localhost:4000
得到的网页是正常的:

目前调试中,后续把结果更新下。
###更新#####
晕死,刚写完文章就找到原因。
hexo 网站图床图片不显示
最近搭建了一个七牛云图床,外链不用 HTTPS 的话是免费的,搭配 PicGo 和 Typora 使用,在 Markdown 中插入图片非常方便,只需要复制图片,粘贴到 Typora 中,就可以自动调用 PicGo 上传并且获取链接了,但是在使用中遇到一个问题,本站在本地运行 hexo server 的情况下访问,所有图片显示正常,但是上传到服务器之后再访问,就会出现图片不显示的情况,复制图片 URL 访问也可以访问到。最终在 hexo 的 github 页面问到了可能是 Mixed Content 的问题。
具体来说,在调试工具中发现,显示存在 HTTP 和 HTTPS 资源混用的情况,导致不会读取资源。先后尝试了在 hexo\themes\...\layout\_partial\head.ejs 中添加
1 2
<meta name="referrer" content="no-referrer" /> <meta http-equiv="Content-Security-Policy" ontent="upgrade-insecure-requests">
都不起作用,而升级七牛云为 HTTPS 流量又要收费,遂干脆把网站改回到了 HTTP,因为是静态页面其实也没什么关系,而且每 3 个月重新注册一个证书有时候懒的搞,反而导致页面不能正常访问。
收起阅读 »
猫池c3pool无法访问,只能用梯子
如果现在停掉,然后重新运行挖矿程序的话,就无法连上猫池了。
* CPU AMD EPYC 7K62 48-Core Processor (1) 64-bit AES VM
L2:8.0 MB L3:16.0 MB 2C/2T NUMA:1
* MEMORY 3.6/3.7 GB (96%)
DIMM 0: 4 GB RAM @ 0 MHz DIMM 0
* MOTHERBOARD Tencent Cloud - CVM
* DONATE 0%
* ASSEMBLY auto:ryzen
* POOL #1 mine.c3pool.com:17777 algo auto
* COMMANDS 'h' hashrate, 'p' pause, 'r' resume, 's' results, 'c' connection
[2021-11-28 00:08:00.267] net mine.c3pool.com:17777 connect error: "operation canceled"
[2021-11-28 00:08:25.292] net mine.c3pool.com:17777 connect error: "operation canceled"
[2021-11-28 00:08:50.317] net mine.c3pool.com:17777 connect error: "operation canceled"
看了还是得用个梯子了。目前篮灯只支持在GUI模式下,在centos服务器的ssh无法启动。 哎,早知道选一台windows的服务器。
腾讯云 centos 门罗币 XMR 挖矿 教程 附代码
并且,这不是因为腾讯云屏蔽的原因,在本地自己电脑上也是无法挖,除非挂上梯子。 收起阅读 »
炒美股需要知道的3个工具
- tradingview.com K线王
- finviz.com 找股器、个股信息
- koyfin.com 免费的 Bloomberg
写作内容草稿
cannot install, GOBIN must be an absolute path
把GOPATH替换为完整的路径,比如C:\User\Admin\go\bin 即可解决问题。
原创文章,转载请注明出处:
http://30daydo.com/article/44290
收起阅读 »
gin can not run reasons: c.engine.AppEngine undefined
# github.com/gin-gonic/gin
C:\Users\xda\go\pkg\mod\github.com\gin-gonic\gin@v1.7.5\context.go:735:13: c.engine.AppEngine undefined (type *Engine ha
s no field or method AppEngine)
C:\Users\xda\go\pkg\mod\github.com\gin-gonic\gin@v1.7.5\gin.go:154:3: unknown field 'UseRawPath' in struct literal of ty
pe Engine
C:\Users\xda\go\pkg\mod\github.com\gin-gonic\gin@v1.7.5\gin.go:156:3: unknown field 'UnescapePathValues' in struct liter
al of type Engine
C:\Users\xda\go\pkg\mod\github.com\gin-gonic\gin@v1.7.5\gin.go:508:11: engine.UseRawPath undefined (type *Engine has no
field or method UseRawPath)
C:\Users\xda\go\pkg\mod\github.com\gin-gonic\gin@v1.7.5\gin.go:510:20: engine.UnescapePathValues undefined (type *Engine
has no field or method UnescapePathValues)
源码:
package main
import (
"net/http"
"github.com/gin-gonic/gin"
)
func main() {
// 1.创建路由
r := gin.Default()
// 2.绑定路由规则,执行的函数
// gin.Context,封装了request和response
r.GET("/", func(c *gin.Context) {
c.String(http.StatusOK, "hello World!")
})
// 3.监听端口,默认在8080
// Run("里面不指定端口号默认为8080")
r.Run(":8000")
}
版本兼容性问题,降级到 gin@1.7.2 即可解决问题。
当前最新的版本为1.7.5
降级方法:
go get github.com/gin-gonic/gin@v1.7.2
原创文章,转载请注明出处:
http://30daydo.com/article/44289
收起阅读 »
golang文件操作之 移动文件
package main
import (
"log"
"os"
)
func main() {
oldLocation := "/var/www/html/test.txt"
newLocation := "/var/www/html/src/test.txt"
err := os.Rename(oldLocation, newLocation)
if err != nil {
log.Fatal(err)
}
}
原创文章,转载请注明出处:
http://30daydo.com/article/44288
收起阅读 »
2021-11-20 观点
2. 今年经济不是很景气,年末可能会有上市公司出现暴雷,还不起前,首先波及的是债券。 如果不及预期,证券市场一般以跌为敬。
3。 涌入了一批新人, 不看溢价率,看到正股涨,一股脑的往转债里面冲。
golang:为什么chan关闭了也无法接受到内容呢?
package main
import "fmt"
func main() {
ch := make(chan int)
ch <- 1
close(ch)
n, ok := <-ch
if !ok {
fmt.Println("Error")
}
fmt.Println(n)
var input string
fmt.Scanln(&input)
}
实际程序死锁。
有人问,chan close后不会可以被读取到了吗?
但是实际程序运行到:
ch <- 1
这里, 已经被阻塞,导致报错,无法接下来的close操作。
加入打印信息:
package main
import "fmt"
func main() {
ch := make(chan int)
fmt.Println("start")
ch <- 1
fmt.Println("next")
close(ch)
n, ok := <-ch
if !ok {
fmt.Println("Error")
}
fmt.Println(n)
var input string
fmt.Scanln(&input)
}
实际只打印到start, next那个已经不输出了。
:!go run channel_close.go
start
fatal error: all goroutines are asleep - deadlock!
goroutine 1 [chan send]:
main.main()
/home/admin/git/GolangLearning/helloworld/channel/channel_close.go:8 +0xa8
exit status 2
shell returned 1
正确的修改:
package main
import "fmt"
func main() {
ch := make(chan int)
go func() {
fmt.Println("start")
ch <- 1
fmt.Println("next")
close(ch)
}()
n, ok := <-ch
if !ok {
fmt.Println("Error")
}
fmt.Println(n)
var input string
fmt.Scanln(&input)
}
创建了一个免费的Go知识星球社区,欢迎加入一起讨论吧

收起阅读 »
鹏华全球高收益债 与 鹏华全球中短债 同一个基金的姐妹基金暴雷
2018年末鹏华全球高收益债持有人户数为25445户,比成立时增长了10倍
购买过鹏华全球高收益债的基金账户数已超16.52万
投资者平均持仓鹏华全球高收益债302.21天
持仓鹏华全球高收益债的客户中,60岁以上的客户平均收益最高,姜还是老的辣
持有鹏华全球高收益债的客户账户平均资产为54140.93元
共有20413位客户定投过鹏华全球高收益债,平均每人定投15.72次,平均持仓554天,平均盈利3315.71元
鹏华全球高收益债的平均复购间隔时间仅为8.68天,复购率为69.43%
因“申购费率优惠”共为鹏华全球高收益债投资者节省了3318万元,最精明的个人客户共节省了118万元的申购费
持仓鹏华全球高收益债的客户中,60岁以上的客户平均收益最高,姜还是老的辣。
惨了,这些老年人的退休金就这样打水漂了哦。
买的地产债,暴雷,实属也无奈。
现在也可以抄一些低,最好分批,因为不知道后面会不会继续跌。 收起阅读 »
vim NERDTree 目录刷新 快捷键
只要按下 r 键就可以刷新文件列表