通知设置 新通知
golang的时间格式化 做法有点像格力手机的开机画面是董小姐
闲聊 • 李魔佛 发表了文章 • 0 个评论 • 2579 次浏览 • 2021-12-20 13:01
过去用java,python,php,等语言,将一个时间格式化成一个字符串都是用“yyy-MM-dd hh:mm:ss”之类的方法,golang 的格式化方法真令我大开眼界
先看官方文档说明:
func (Time) Format
func (t Time) Format(layout string) string
Format returns a textual representation of the time value formatted according to layout, which defines the format by showing how the reference time, defined to be
Mon Jan 2 15:04:05 -0700 MST 2006
would be displayed if it were the value; it serves as an example of the desired output. The same display rules will then be applied to the time value. Predefined layouts ANSIC, UnixDate, RFC3339 and others describe standard and convenient representations of the reference time. For more information about the formats and the definition of the reference time, see the documentation for ANSIC and the other constants defined by this package.
下面给个代码:
fmt.Println(time.Now().Format("2006-01-02 150405"))
要注意那时间,只能是2006-01-02 15:04:05分,其它的时间都不行,真是够绝。
做法有点像格力手机的开机画面是董小姐。
用个语言还得记住你golang的生日?? 查看全部
过去用java,python,php,等语言,将一个时间格式化成一个字符串都是用“yyy-MM-dd hh:mm:ss”之类的方法,golang 的格式化方法真令我大开眼界
先看官方文档说明:
func (Time) Format
func (t Time) Format(layout string) string
Format returns a textual representation of the time value formatted according to layout, which defines the format by showing how the reference time, defined to be
Mon Jan 2 15:04:05 -0700 MST 2006
would be displayed if it were the value; it serves as an example of the desired output. The same display rules will then be applied to the time value. Predefined layouts ANSIC, UnixDate, RFC3339 and others describe standard and convenient representations of the reference time. For more information about the formats and the definition of the reference time, see the documentation for ANSIC and the other constants defined by this package.
下面给个代码:
fmt.Println(time.Now().Format("2006-01-02 150405"))
要注意那时间,只能是2006-01-02 15:04:05分,其它的时间都不行,真是够绝。
做法有点像格力手机的开机画面是董小姐。
用个语言还得记住你golang的生日??
golang json Unmarshal 无法修改结构体的值。传入指针
Golang • 李魔佛 发表了文章 • 0 个评论 • 3078 次浏览 • 2021-12-20 12:59
{ "username": "root", "password": "123456", "host": "1.1.1.1.", "port": 3306, "db": "admin" }
然后我的定义的结构体:
type T struct {
username string `json:"username"`
password string `json:"password"`
host string `json:"host"`
port int `json:"port"`
db string `json:"db"`
}
然后程序里面解析json的代码:var t T
data, err := ioutil.ReadFile(filename)
fmt.Println("read from file")
//fmt.Println(string(data))
if err != nil {
fmt.Println("in error")
fmt.Println(err)
return err
}
err = json.Unmarshal(data, &t)
if err != nil {
fmt.Println("error ")
fmt.Println(err)
return err
}
fmt.Println("outpout ")
fmt.Printf("%v\n", t)
fmt.Println(t)
发现是无法把t的值修改为json文件里面的值,最后的记过输出,还是一个零值的结果体。
后面知道问题所在了,如果定义的结构体的首字母小写的时候,包外的反射是无法修改结构体的值的,也就是只能只读。
所以只需要把结构体的首字母改为大写,问题就可以解决了。type T struct {
Username string `json:"username"`
Password string `json:"password"`
Host string `json:"host"`
Port int `json:"port"`
Db string `json:"db"`
}
json文件里面不用修改,因为
Unmarshal映射的时候可以适配大小写。
查看全部
{ "username": "root", "password": "123456", "host": "1.1.1.1.", "port": 3306, "db": "admin" }
然后我的定义的结构体:
type T struct {
username string `json:"username"`
password string `json:"password"`
host string `json:"host"`
port int `json:"port"`
db string `json:"db"`
}
然后程序里面解析json的代码:
var t T
data, err := ioutil.ReadFile(filename)
fmt.Println("read from file")
//fmt.Println(string(data))
if err != nil {
fmt.Println("in error")
fmt.Println(err)
return err
}
err = json.Unmarshal(data, &t)
if err != nil {
fmt.Println("error ")
fmt.Println(err)
return err
}
fmt.Println("outpout ")
fmt.Printf("%v\n", t)
fmt.Println(t)
发现是无法把t的值修改为json文件里面的值,最后的记过输出,还是一个零值的结果体。
后面知道问题所在了,如果定义的结构体的首字母小写的时候,包外的反射是无法修改结构体的值的,也就是只能只读。
所以只需要把结构体的首字母改为大写,问题就可以解决了。
type T struct {
Username string `json:"username"`
Password string `json:"password"`
Host string `json:"host"`
Port int `json:"port"`
Db string `json:"db"`
}
json文件里面不用修改,因为
Unmarshal映射的时候可以适配大小写。
为什么现在还有那么多在线的gonlang 字符串生成json struct的网站? Goland IDE一个快捷方式帮你搞定
Golang • 李魔佛 发表了文章 • 0 个评论 • 2080 次浏览 • 2021-12-20 01:00
}
在出现的generate from json的页面,把json的字符串输入进去。
IDE即可帮你转换为对应的结构体了。 根本就没有在线IDE什么事情了。
}
在出现的generate from json的页面,把json的字符串输入进去。
IDE即可帮你转换为对应的结构体了。 根本就没有在线IDE什么事情了。
golang根据不同返回解析不同结构的json
Golang • 李魔佛 发表了文章 • 0 个评论 • 2681 次浏览 • 2021-12-20 00:35
{"type":"a_number", "data":{"somenumber":1234}}
{"type":"b_string", "data":{"somestring":"a string", "anotherstring": "a second string"}}`
如何解析上面返回的json结构体
答:json.RawMessage
type Head struct {
Type string `json:"type"`
Data json.RawMessage `json:"data"`
}
var msg Head
json.Unmarshal([]byte(jsonString), &msg)
switch msg.Type {
case "a_number":
var detail A
json.Unmarshal([]byte(msg.Data),&detail)
fmt.Println(detail.SomeNumber)
case "b_string":
var detail B
json.Unmarshal([]byte(msg.Data),&detail)
fmt.Println(detail.SomeString)
default:
fmt.Printf("I don't know about type %s!\n", msg.Type)
}
就可以解析上面的不规则的结构体了。
查看全部
// 数据源
{"type":"a_number", "data":{"somenumber":1234}}
{"type":"b_string", "data":{"somestring":"a string", "anotherstring": "a second string"}}`
如何解析上面返回的json结构体
答:json.RawMessage
type Head struct {
Type string `json:"type"`
Data json.RawMessage `json:"data"`
}
var msg Head
json.Unmarshal([]byte(jsonString), &msg)
switch msg.Type {
case "a_number":
var detail A
json.Unmarshal([]byte(msg.Data),&detail)
fmt.Println(detail.SomeNumber)
case "b_string":
var detail B
json.Unmarshal([]byte(msg.Data),&detail)
fmt.Println(detail.SomeString)
default:
fmt.Printf("I don't know about type %s!\n", msg.Type)
}
就可以解析上面的不规则的结构体了。
现在还有哪些券商可以万一免五?
股票 • 绫波丽 发表了文章 • 0 个评论 • 4210 次浏览 • 2021-12-16 12:40
不过如果要开免五还是有办法的,一些券商即使没有免五,费率也是很优惠的。
普遍转债都是是百万分之二,etf万0.5的费率,股票万1到万1.2,基本这里的券商到手的费率都是最低的。如果有更低的券商,也欢迎推荐,可以给你发个大大的红包。
需要的可以联系:
查看全部
不过如果要开免五还是有办法的,一些券商即使没有免五,费率也是很优惠的。


普遍转债都是是百万分之二,etf万0.5的费率,股票万1到万1.2,基本这里的券商到手的费率都是最低的。如果有更低的券商,也欢迎推荐,可以给你发个大大的红包。

需要的可以联系:

vs code 无法启动jupyter notebook 修复 亲测
python • 李魔佛 发表了文章 • 0 个评论 • 4512 次浏览 • 2021-12-16 12:12
之前一直运行得好好的。不知道安装了什么依赖库后就这样了。。
在国外网站找了一通后,找到了解决办法:
pip install traitlets==4.3.3
不得不感慨,国外大神多,国内csdn乱ctrl cv.
查看全部
failed to start INotebook in kernel, UI Disabled = false s [Error]: Unable to start Kernel 'base (Python 3.8.3)' due to connection timeout. View Jupyter [log](command:jupyter.viewOutput) for further detail
之前一直运行得好好的。不知道安装了什么依赖库后就这样了。。
在国外网站找了一通后,找到了解决办法:
pip install traitlets==4.3.3
不得不感慨,国外大神多,国内csdn乱ctrl cv.
QMT代码详解<一> 行业ETF轮动
量化交易-Ptrade-QMT • 李魔佛 发表了文章 • 0 个评论 • 4129 次浏览 • 2021-12-15 17:33
#coding:gbk
'''
回测模型示例(非实盘交易策略)
本策略每隔1个月定时触发计算1000能源(399381.SZ)、1000材料(399382.SZ)、1000工业(399383.SZ)、
1000可选(399384.SZ)、1000消费(399385.SZ)、1000医药(399386.SZ)这几个行业指数过去
20个交易日的收益率并选取了收益率最高的指数的成份股并获取了他们的市值数据
随后把仓位调整至市值最大的5只股票上
该策略在股票指数日线下运行
'''
import numpy as np
import math
def init(ContextInfo):
MarketPosition ={}
ContextInfo.MarketPosition = MarketPosition #初始化持仓
index_universe = ['399381.SZ','399382.SZ','399383.SZ','399384.SZ','399385.SZ','399386.SZ']
index_stocks = []
for index in index_universe:
for stock in ContextInfo.get_sector(index): # 获取指数的成分股
index_stocks.append(stock)
ContextInfo.set_universe(index_universe+index_stocks) #设定股票池,
ContextInfo.day = 20
ContextInfo.ratio = 0.8
ContextInfo.holding_amount = 5
ContextInfo.accountID='testS'
def handlebar(ContextInfo):
buy_condition = False
sell_condition = False
d = ContextInfo.barpos
print(d)
lastdate = timetag_to_datetime(ContextInfo.get_bar_timetag(d - 1), '%Y%m%d')
date = timetag_to_datetime(ContextInfo.get_bar_timetag(d), '%Y%m%d')
print(date)
index_list = ['399381.SZ','399382.SZ','399383.SZ','399384.SZ','399385.SZ','399386.SZ']
return_index = []
weight = ContextInfo.ratio/ContextInfo.holding_amount
size_dict = {}
if (float(date[-4:-2]) != float(lastdate[-4:-2])):
#print '---------------------------------------------------------------------------------'
#print '当前交易日',date,date[-4:-2] 20210101 获取到的月份不一样,这样在每个月初会执行一次这个函数
# 获取的是股票池的
his = ContextInfo.get_history_data(21,'1d','close')
#print "his",his,timetag_to_datetime(ContextInfo.get_bar_timetag(d),"%Y%m%d")
for k in list(his.keys()):
if len(his[k]) == 0:
del his[k]
for index in index_list:
ratio = 0
try:
ratio = (his[index][-2] - his[index][0])/his[index][0]
except KeyError:
print('key error:' + index)
except IndexError:
print('list index out of range:' + index)
return_index.append(ratio)
# 获取指定数内收益率表现最好的行业
best_index = index_list[np.argmax(return_index)]
#print '当前最佳行业是:', ContextInfo.get_stock_name(best_index)[3:]+'行业'
# 获取当天有交易的股票
index_stock = ContextInfo.get_sector(best_index)
stock_available = []
for stock in index_stock:
if ContextInfo.is_suspended_stock(stock) == False: # 是否停牌
stock_available.append(stock)
for stock in stock_available:
if stock in list(his.keys()):
#目前历史流通股本取不到,暂用总股本
if len(his[stock]) >= 2:
stocksize =his[stock][-2] * float(ContextInfo.get_financial_data(['CAPITALSTRUCTURE.total_capital'],[stock],lastdate,date).iloc[0,-1])
size_dict[stock] = stocksize
elif len(his[stock]) == 1:
stocksize =his[stock][-1] * float(ContextInfo.get_financial_data(['CAPITALSTRUCTURE.total_capital'],[stock],lastdate,date).iloc[0,-1])
size_dict[stock] = stocksize
else:
return
size_sorted = sorted(list(size_dict.items()), key = lambda item:item[1]) # 根据股本顺序排序
pre_holding = []
for tuple in size_sorted[-ContextInfo.holding_amount:]: # 最好不要占用关键词
pre_holding.append(tuple[0])
#print '买入备选',pre_holding
#函数下单
if len(pre_holding) > 0:
sellshort_list = []
for stock in list(ContextInfo.MarketPosition.keys()): # 遍历持仓,如果不在当前条件范围内,卖出
if stock not in pre_holding and (stock in list(his.keys())):
order_shares(stock,-ContextInfo.MarketPosition[stock],'lastest',his[stock][-1],ContextInfo,ContextInfo.accountID)
print('sell',stock)
sell_condition = True
sellshort_list.append(stock)
if len(sellshort_list) >0: # 这句多余
for stock in sellshort_list:
del ContextInfo.MarketPosition[stock]
for stock in pre_holding:
if stock not in list(ContextInfo.MarketPosition.keys()): # 买入
Lots = math.floor(ContextInfo.ratio * (1.0/len(pre_holding)) * ContextInfo.capital / (his[stock][-1] * 100))
order_shares(stock,Lots *100,'lastest',his[stock][-1],ContextInfo,ContextInfo.accountID)
print('buy',stock)
buy_condition = True
ContextInfo.MarketPosition[stock] = Lots *100
如果遇到不懂的,可以关注公众号咨询: 查看全部
#coding:gbk
'''
回测模型示例(非实盘交易策略)
本策略每隔1个月定时触发计算1000能源(399381.SZ)、1000材料(399382.SZ)、1000工业(399383.SZ)、
1000可选(399384.SZ)、1000消费(399385.SZ)、1000医药(399386.SZ)这几个行业指数过去
20个交易日的收益率并选取了收益率最高的指数的成份股并获取了他们的市值数据
随后把仓位调整至市值最大的5只股票上
该策略在股票指数日线下运行
'''
import numpy as np
import math
def init(ContextInfo):
MarketPosition ={}
ContextInfo.MarketPosition = MarketPosition #初始化持仓
index_universe = ['399381.SZ','399382.SZ','399383.SZ','399384.SZ','399385.SZ','399386.SZ']
index_stocks = []
for index in index_universe:
for stock in ContextInfo.get_sector(index): # 获取指数的成分股
index_stocks.append(stock)
ContextInfo.set_universe(index_universe+index_stocks) #设定股票池,
ContextInfo.day = 20
ContextInfo.ratio = 0.8
ContextInfo.holding_amount = 5
ContextInfo.accountID='testS'
def handlebar(ContextInfo):
buy_condition = False
sell_condition = False
d = ContextInfo.barpos
print(d)
lastdate = timetag_to_datetime(ContextInfo.get_bar_timetag(d - 1), '%Y%m%d')
date = timetag_to_datetime(ContextInfo.get_bar_timetag(d), '%Y%m%d')
print(date)
index_list = ['399381.SZ','399382.SZ','399383.SZ','399384.SZ','399385.SZ','399386.SZ']
return_index = []
weight = ContextInfo.ratio/ContextInfo.holding_amount
size_dict = {}
if (float(date[-4:-2]) != float(lastdate[-4:-2])):
#print '---------------------------------------------------------------------------------'
#print '当前交易日',date,date[-4:-2] 20210101 获取到的月份不一样,这样在每个月初会执行一次这个函数
# 获取的是股票池的
his = ContextInfo.get_history_data(21,'1d','close')
#print "his",his,timetag_to_datetime(ContextInfo.get_bar_timetag(d),"%Y%m%d")
for k in list(his.keys()):
if len(his[k]) == 0:
del his[k]
for index in index_list:
ratio = 0
try:
ratio = (his[index][-2] - his[index][0])/his[index][0]
except KeyError:
print('key error:' + index)
except IndexError:
print('list index out of range:' + index)
return_index.append(ratio)
# 获取指定数内收益率表现最好的行业
best_index = index_list[np.argmax(return_index)]
#print '当前最佳行业是:', ContextInfo.get_stock_name(best_index)[3:]+'行业'
# 获取当天有交易的股票
index_stock = ContextInfo.get_sector(best_index)
stock_available = []
for stock in index_stock:
if ContextInfo.is_suspended_stock(stock) == False: # 是否停牌
stock_available.append(stock)
for stock in stock_available:
if stock in list(his.keys()):
#目前历史流通股本取不到,暂用总股本
if len(his[stock]) >= 2:
stocksize =his[stock][-2] * float(ContextInfo.get_financial_data(['CAPITALSTRUCTURE.total_capital'],[stock],lastdate,date).iloc[0,-1])
size_dict[stock] = stocksize
elif len(his[stock]) == 1:
stocksize =his[stock][-1] * float(ContextInfo.get_financial_data(['CAPITALSTRUCTURE.total_capital'],[stock],lastdate,date).iloc[0,-1])
size_dict[stock] = stocksize
else:
return
size_sorted = sorted(list(size_dict.items()), key = lambda item:item[1]) # 根据股本顺序排序
pre_holding = []
for tuple in size_sorted[-ContextInfo.holding_amount:]: # 最好不要占用关键词
pre_holding.append(tuple[0])
#print '买入备选',pre_holding
#函数下单
if len(pre_holding) > 0:
sellshort_list = []
for stock in list(ContextInfo.MarketPosition.keys()): # 遍历持仓,如果不在当前条件范围内,卖出
if stock not in pre_holding and (stock in list(his.keys())):
order_shares(stock,-ContextInfo.MarketPosition[stock],'lastest',his[stock][-1],ContextInfo,ContextInfo.accountID)
print('sell',stock)
sell_condition = True
sellshort_list.append(stock)
if len(sellshort_list) >0: # 这句多余
for stock in sellshort_list:
del ContextInfo.MarketPosition[stock]
for stock in pre_holding:
if stock not in list(ContextInfo.MarketPosition.keys()): # 买入
Lots = math.floor(ContextInfo.ratio * (1.0/len(pre_holding)) * ContextInfo.capital / (his[stock][-1] * 100))
order_shares(stock,Lots *100,'lastest',his[stock][-1],ContextInfo,ContextInfo.accountID)
print('buy',stock)
buy_condition = True
ContextInfo.MarketPosition[stock] = Lots *100
如果遇到不懂的,可以关注公众号咨询:

图床网站横向对比 测试
网络 • 马化云 发表了文章 • 0 个评论 • 2258 次浏览 • 2021-12-13 18:44
网站提供登录,可是,一直是登录不了,点击按钮点击后是一直没有反应。后台做的不好。
不能登录,也就是你上传的图片,就下次想找回,也很难找,除非你找回你的原文章,在原来的文章里面找出原来的链接。
然后图片的话遇到一些美女图会经常误删,也就是这样子的。
就是你的图片链接被吃了。 这也侧面说明图床网站对你的图片进行审查的。
推荐指数:0
2. imgUrl
这个网站的图片也是有审查的,一般而言,二维码就是直接会被删除,所以不建议拿来存放一些公众号二维码等传播性的工具。
优点是速度比较快
推荐指数:3星
3. 七牛
上传下载速度快,并且正常的图片不会屏蔽,二维码也不会被屏蔽。支持很多的工具。可以自定义名字,也就是你上传的图片的URL不再是一串随机的字符,而是可以设定为指定日期,或者你的原来的文件名。
这样对于查找本地文件,或者根据本地的文件名,查找线上的图片文件,都是很有李的。
但是,部署这个有点难度,需要配置一些服务器的内容。比如需要通过API生产token,才可以放入到sharex中,并且需要定时更新。
推荐指数:5星
查看全部
网站提供登录,可是,一直是登录不了,点击按钮点击后是一直没有反应。后台做的不好。
不能登录,也就是你上传的图片,就下次想找回,也很难找,除非你找回你的原文章,在原来的文章里面找出原来的链接。
然后图片的话遇到一些美女图会经常误删,也就是这样子的。

就是你的图片链接被吃了。 这也侧面说明图床网站对你的图片进行审查的。
推荐指数:0
2. imgUrl
这个网站的图片也是有审查的,一般而言,二维码就是直接会被删除,所以不建议拿来存放一些公众号二维码等传播性的工具。
优点是速度比较快
推荐指数:3星
3. 七牛
上传下载速度快,并且正常的图片不会屏蔽,二维码也不会被屏蔽。支持很多的工具。可以自定义名字,也就是你上传的图片的URL不再是一串随机的字符,而是可以设定为指定日期,或者你的原来的文件名。
这样对于查找本地文件,或者根据本地的文件名,查找线上的图片文件,都是很有李的。
但是,部署这个有点难度,需要配置一些服务器的内容。比如需要通过API生产token,才可以放入到sharex中,并且需要定时更新。
推荐指数:5星
毕业7年,白手起家到资产千万,我的6个致富发财赚钱秘诀 --观后感
股票 • 李魔佛 发表了文章 • 0 个评论 • 3637 次浏览 • 2021-12-09 15:46
她总结了几点,并且有人在评论里面总结了。
1、有时候选择大于努力(投资炒股->炒美股)
2、不努力就没有选择的机会(名校本科+研究生+充分准备面试技巧+争取工作调动)
3、关键点很重要,在最关键的时候,必须全力一击!
4、富贵险中求,适当冒一点险(风控能力)
5、越早开始存钱,越好
6、打工是发不了财的、但是前期要积累工作经验和锻炼品质,竭尽全力把工作做好!再想办法开拓其他的赚钱方式!
基本都是很认同她的说法。
以后需要不断地思考,思考未来。该集中努力的地方得一定努力才行。
最后附上视频链接:
https://www.youtube.com/watch?v=094BcDIc0LM
查看全部

她总结了几点,并且有人在评论里面总结了。
1、有时候选择大于努力(投资炒股->炒美股)
2、不努力就没有选择的机会(名校本科+研究生+充分准备面试技巧+争取工作调动)
3、关键点很重要,在最关键的时候,必须全力一击!
4、富贵险中求,适当冒一点险(风控能力)
5、越早开始存钱,越好
6、打工是发不了财的、但是前期要积累工作经验和锻炼品质,竭尽全力把工作做好!再想办法开拓其他的赚钱方式!
基本都是很认同她的说法。
以后需要不断地思考,思考未来。该集中努力的地方得一定努力才行。
最后附上视频链接:
https://www.youtube.com/watch?v=094BcDIc0LM
github pages是可以被百度检索到的,网上的文章都是瞎扯
网络 • 李魔佛 发表了文章 • 0 个评论 • 1887 次浏览 • 2021-12-09 14:13
有图有证。
看来还是继续用回github pages吧。

有图有证。
看来还是继续用回github pages吧。
gitee pages 文章需要审核才能发布
闲聊 • 李魔佛 发表了文章 • 0 个评论 • 3730 次浏览 • 2021-12-09 08:41
写了一篇关于某国歌手的文章,内容实际只有一句话,配了一张百度图片上出来的贴图。
然后按照原来的方法,hexo g -> hexo d
部署到码云gitee上。
然后过了一天发现缓存没有更新。
第二天,缓存依然没有更新。
后面登录上去看了一下,发现说内容违规。我去。
原来这个gitee pages 还要这样审核一下才能通过。这样就没多少意思了。
关键这个gitee pages 是每次要git push到服务器后,都要手动在网页端,点一下更新按钮。。。。
遂删除repo了,say bye bye to gitee。
查看全部
写了一篇关于某国歌手的文章,内容实际只有一句话,配了一张百度图片上出来的贴图。
然后按照原来的方法,hexo g -> hexo d
部署到码云gitee上。
然后过了一天发现缓存没有更新。
第二天,缓存依然没有更新。
后面登录上去看了一下,发现说内容违规。我去。
原来这个gitee pages 还要这样审核一下才能通过。这样就没多少意思了。
关键这个gitee pages 是每次要git push到服务器后,都要手动在网页端,点一下更新按钮。。。。
遂删除repo了,say bye bye to gitee。

hexo下的markdown文件无法生成html文件
网络 • 李魔佛 发表了文章 • 0 个评论 • 2144 次浏览 • 2021-12-09 02:01

hexo下的source/_post/ 下的markdown文件后缀只能md 小写。 大写是识别不到,也就无法生成html文件了。
优矿回测可转债 代码 教程
量化交易-Ptrade-QMT • 李魔佛 发表了文章 • 0 个评论 • 6467 次浏览 • 2021-12-09 00:44
可是碍于非科班出生, 对于编程的一窍不通, 所以大部分止步于简单的数据统计.
比如采用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]欢迎讨论探索,星球里面有更多的完整策略与代码,回测数据,结论资源。
[/i] 查看全部
可是碍于非科班出生, 对于编程的一窍不通, 所以大部分止步于简单的数据统计.
比如采用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]欢迎讨论探索,星球里面有更多的完整策略与代码,回测数据,结论资源。

QMT无法下载python库
量化交易-Ptrade-QMT • 李魔佛 发表了文章 • 0 个评论 • 2920 次浏览 • 2021-12-08 21:58
点击打开大图
因为一直有很多朋友和我反馈,QMT经常下载python库失败。 我自己也试了下。的确,这个软件经常抽风,软件问题,实在没有办法。
券商软件做的这么垃圾的,也是第一次见。 换了谁也不想用,老是卡在这种设置问题,然后客服也找不到,也是挺郁闷的。
暂时不确定是软件本身的问题,还是券商自己的问题。
##### 后续更新:
券商反馈,在开盘期间做了限流,导致下载速度极慢。 在晚上的时间段,下载速度很快,一下子就下载好了。
几台服务器同时下好了。
查看全部

点击打开大图
因为一直有很多朋友和我反馈,QMT经常下载python库失败。 我自己也试了下。的确,这个软件经常抽风,软件问题,实在没有办法。
券商软件做的这么垃圾的,也是第一次见。 换了谁也不想用,老是卡在这种设置问题,然后客服也找不到,也是挺郁闷的。
暂时不确定是软件本身的问题,还是券商自己的问题。
##### 后续更新:
券商反馈,在开盘期间做了限流,导致下载速度极慢。 在晚上的时间段,下载速度很快,一下子就下载好了。
几台服务器同时下好了。
30天学会Golang
Golang • 马化云 发表了文章 • 0 个评论 • 2788 次浏览 • 2021-12-04 12:20
附github目录图以及github地址
https://github.com/Rockyzsu/GolangLearning
同时欢迎关注公众号: 30天尝试新事情
查看全部
附github目录图以及github地址
https://github.com/Rockyzsu/GolangLearning

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

券商的盘后理财产品 踩坑记
股票 • 绫波丽 发表了文章 • 0 个评论 • 5720 次浏览 • 2021-12-02 10:13
比如这个银河证券的盘后 财富星 理财产品
实际是一个盘后自动逆回购。本身收益率就低下,估计年化是2%-3%不到。
结果后面还有更坑的,是它的手续费。万0.3
1万的收益,收取的手续费是0.3元(其他的0.9,1元的是因为周4算3天的逆回购)
等同于你的收益30%左右还要被券商吸走。
不过这个应该写在开通协议的合同里面,只怪自己没有去看。 不过大部分人应该都不会去看的。券商就是要的这种效果。
查看全部
比如这个银河证券的盘后 财富星 理财产品
实际是一个盘后自动逆回购。本身收益率就低下,估计年化是2%-3%不到。
结果后面还有更坑的,是它的手续费。万0.3

1万的收益,收取的手续费是0.3元(其他的0.9,1元的是因为周4算3天的逆回购)
等同于你的收益30%左右还要被券商吸走。
不过这个应该写在开通协议的合同里面,只怪自己没有去看。 不过大部分人应该都不会去看的。券商就是要的这种效果。
证券app直接开户的费率为什么那么高
股票 • 绫波丽 发表了文章 • 0 个评论 • 2890 次浏览 • 2021-12-02 00:06
1.不能直接上APP开户,否则会被随机分配营业部,然后就百分之一万只能开到默认的万3佣金。
2.低佣必须用特殊的渠道才能开到。
你要是认识一些网上的大V或者券商朋友,那就好办了,有他们的渠道的话,就可以开到万一的超低佣金。
所以说关键在于,怎么才能找到低佣的渠道呢?
找到渠道也不难,就像网上千奇百怪的优惠券,虽然不会轻易被发现,但也总有人找得到一样;就算你实在找不到,想想有没有谁是开了的,问一问也一定能得到答案。
备注:开户
否则不通过
查看全部
1.不能直接上APP开户,否则会被随机分配营业部,然后就百分之一万只能开到默认的万3佣金。
2.低佣必须用特殊的渠道才能开到。
你要是认识一些网上的大V或者券商朋友,那就好办了,有他们的渠道的话,就可以开到万一的超低佣金。
所以说关键在于,怎么才能找到低佣的渠道呢?
找到渠道也不难,就像网上千奇百怪的优惠券,虽然不会轻易被发现,但也总有人找得到一样;就算你实在找不到,想想有没有谁是开了的,问一问也一定能得到答案。

备注:开户
否则不通过
今年预估相关的依赖港美股打新大陆券商收益大幅下跌
股票 • 李魔佛 发表了文章 • 0 个评论 • 2673 次浏览 • 2021-12-01 15:58
2. 场内的人就想往外跑。
3. 年底最后一个月,一些港股新股拼命发,不少是二婚股,像网易云音乐,微博这种。可能也是券商有压力,有这个发新股的需求,冷清的时候IPO上市费用相对会比热门是要低吧。排队也相对没有那么拥挤。
4. 富途,老虎,雪盈等可能都不好过。
查看全部
2. 场内的人就想往外跑。
3. 年底最后一个月,一些港股新股拼命发,不少是二婚股,像网易云音乐,微博这种。可能也是券商有压力,有这个发新股的需求,冷清的时候IPO上市费用相对会比热门是要低吧。排队也相对没有那么拥挤。
4. 富途,老虎,雪盈等可能都不好过。
搜狗拼音居然还会请求本地的web 80端口?要干嘛呢
网络 • 李魔佛 发表了文章 • 0 个评论 • 2377 次浏览 • 2021-12-01 11:36
不知道它实际是做什么用的。当时,这个绝对不正常,一个输入法软件,扫描我本地文件就算了。 居然还扫描我的本地web端口,如果开启了某个端口,你居然还会自动请求我?
并且,这个数据并不是外网来的。因为我这是内网的机子,并没有和外网联通,关键我也是一个路由器连着,外网也根本进不来。
好了,卸载了。 查看全部
不知道它实际是做什么用的。当时,这个绝对不正常,一个输入法软件,扫描我本地文件就算了。 居然还扫描我的本地web端口,如果开启了某个端口,你居然还会自动请求我?

并且,这个数据并不是外网来的。因为我这是内网的机子,并没有和外网联通,关键我也是一个路由器连着,外网也根本进不来。
好了,卸载了。
Goland 配置vim vimrc文件 附配置文件
Linux • 李魔佛 发表了文章 • 0 个评论 • 3704 次浏览 • 2021-11-30 13:17
只好自己写一个简单的教程来纠正下。
在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 即可
查看全部
只好自己写一个简单的教程来纠正下。
在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 即可

gitee pages静态页面的缓存时间太久了
网络 • 李魔佛 发表了文章 • 0 个评论 • 2452 次浏览 • 2021-11-30 12:21
在仓库repo中,文件是已经不见了的。
看到官网的文档说,这个max-age值,设置的为24小时 -.-!

hexo部署到gitee 无法更改next主题的语言为中文
网络 • 李魔佛 发表了文章 • 0 个评论 • 2169 次浏览 • 2021-11-30 12:07
安装网上的教程,改了_config.yml 的language为zh-CN,
清空缓存,hexo clean
重新部署上传
hexo g
hexo s
hexo g
然后在本地是正常显示中文的。 然后切换了其他浏览器,清空缓存,发现也是一样的。
个人觉得是网络DNS缓存和gitee的缓存机制有关。
所以等过了一段时间再看看效果。
顺便更新了一篇新文章上去,而新文章同样没有显示。
果然,是gitee的缓存机制的问题。
只能等缓存时间过后才能再去预览了。 查看全部

安装网上的教程,改了_config.yml 的language为zh-CN,
清空缓存,hexo clean
重新部署上传
hexo g
hexo s
hexo g
然后在本地是正常显示中文的。 然后切换了其他浏览器,清空缓存,发现也是一样的。
个人觉得是网络DNS缓存和gitee的缓存机制有关。
所以等过了一段时间再看看效果。
顺便更新了一篇新文章上去,而新文章同样没有显示。
果然,是gitee的缓存机制的问题。
只能等缓存时间过后才能再去预览了。
【手把手教程】空投币怎么领取,以ShiBZilla为例
量化交易 • 绫波丽 发表了文章 • 0 个评论 • 12601 次浏览 • 2021-11-29 20:26
记住,不要花钱,要的是白嫖,只要要你花一分钱,果断把网页关闭,然后打开手机,打几盘王者荣耀。
既然是送钱,那么会有什么风险吗? 有,就是最后没有送钱成功,空投的币种发行失败,也就你没有撸到羊毛,你损失的时间成本,当然如果你时间不值钱,就没有什么损失的啦。
好。准备的东西。
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
白赚的币大家可以去领一领,说不定上市值几百块钱。
查看全部
记住,不要花钱,要的是白嫖,只要要你花一分钱,果断把网页关闭,然后打开手机,打几盘王者荣耀。
既然是送钱,那么会有什么风险吗? 有,就是最后没有送钱成功,空投的币种发行失败,也就你没有撸到羊毛,你损失的时间成本,当然如果你时间不值钱,就没有什么损失的啦。
好。准备的东西。
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为什么上传二维码的图片会被删除 甚至账户被封?
网络 • 低调的哥哥 发表了文章 • 0 个评论 • 2150 次浏览 • 2021-11-29 01:23
为何二维码会被删除?
因为二维码很容易被用于黑产项目,而且无法直接识别,所以禁止上传含有二维码的相关图片.
为何二维码会被删除?
因为二维码很容易被用于黑产项目,而且无法直接识别,所以禁止上传含有二维码的相关图片.
截图软件sharex 上传到七牛图床 设置上传文件名与本地名一样
网络 • 低调的哥哥 发表了文章 • 0 个评论 • 3315 次浏览 • 2021-11-28 23:31
不过网上的文章使用的上传文件名是按照当时的日期设定的。
什么意思呢?
比如我用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 查看全部
不过网上的文章使用的上传文件名是按照当时的日期设定的。
什么意思呢?
比如我用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上无法显示
网络安全 • 李魔佛 发表了文章 • 0 个评论 • 4081 次浏览 • 2021-11-28 16:51
问题的根源在于 谷歌浏览器 , 在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 个月重新注册一个证书有时候懒的搞,反而导致页面不能正常访问。 查看全部
问题的根源在于 谷歌浏览器 , 在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无法访问,只能用梯子
量化交易 • 李魔佛 发表了文章 • 0 个评论 • 6952 次浏览 • 2021-11-28 00:53
如果现在停掉,然后重新运行挖矿程序的话,就无法连上猫池了。 * 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 挖矿 教程 附代码
并且,这不是因为腾讯云屏蔽的原因,在本地自己电脑上也是无法挖,除非挂上梯子。 查看全部
如果现在停掉,然后重新运行挖矿程序的话,就无法连上猫池了。
* 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 挖矿 教程 附代码
并且,这不是因为腾讯云屏蔽的原因,在本地自己电脑上也是无法挖,除非挂上梯子。
docker安装v2ray 图文配置教程
网络安全 • 李魔佛 发表了文章 • 0 个评论 • 11751 次浏览 • 2021-11-26 16:48
- 安装docker镜像:docker pull v2fly/v2fly-core , 这里懒得用bash安装逐个脚本了,免得出现一堆依赖关系,直接docker一行命令搞定。

待续。
想用python爬虫批量下载数据,下载下来的数据是excel表格形式,但是源码下载的链接如下,请问这样可以爬吗?
python爬虫 • 低调的哥哥 回复了问题 • 2 人关注 • 1 个回复 • 3470 次浏览 • 2021-11-26 13:20