国金证券万一开户
国金证券支持同花顺,雪球登录。
费率:
股票万一
场内基金万0.5
可转债上海百万分之五(没有最低),深圳十万分之五(最低0.1)
融资利率5.0%
开通后可以直接开通QMT,ptrade量化功能,不收取流量费。
QMT和ptrade的一些介绍资料:
自动化交易:QMT安装python第三方库
https://zhuanlan.zhihu.com/p/445599417
什么是Ptrade
http://www.30daydo.com/article/44230
需要的可以扫码开通。
收起阅读 »
费率:
股票万一
场内基金万0.5
可转债上海百万分之五(没有最低),深圳十万分之五(最低0.1)
融资利率5.0%
开通后可以直接开通QMT,ptrade量化功能,不收取流量费。
QMT和ptrade的一些介绍资料:
自动化交易:QMT安装python第三方库
https://zhuanlan.zhihu.com/p/445599417
什么是Ptrade
http://www.30daydo.com/article/44230
需要的可以扫码开通。
收起阅读 »
不是所有的bytes都可以转换为string
byte转为string
b.decode('utf8')
如果报错:
说明字节无法字节转为string,
上面的字节是可以正常decode为utf8
而改下字节数据
所以你试下decode下面的字节:
是无法解析的。
这个是没有办法的,如果要硬刚 。
可以加入参数errors = ‘replace’
这样就不会报错。但是这也只是输出的乱码。
正确的姿势是要看看你的字节的最原始编码格式。如果是gbk,那么就应该使用b.decode('gbk')
收起阅读 »
b.decode('utf8')
如果报错:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe4 in position 1: invalid continuation byte
说明字节无法字节转为string,
上面的字节是可以正常decode为utf8
而改下字节数据
所以你试下decode下面的字节:
c=b'\x1e\xe4\xd5\x97\x9a#\x99kC\xadD\x7f\x9a\xc2G\x92'
是无法解析的。
这个是没有办法的,如果要硬刚 。
可以加入参数errors = ‘replace’
b.decode('utf8',errors='replace')
这样就不会报错。但是这也只是输出的乱码。
正确的姿势是要看看你的字节的最原始编码格式。如果是gbk,那么就应该使用b.decode('gbk')
收起阅读 »
Ptrade、QMT如何在虚拟机下运行?
QMT在阿里云的虚拟机上无法运行的,QMT会检测到当前的环境是虚拟机,会阻止你登录。
那是不是只能在本地的物理机上执行的呢?
不过有办法解决:
使用阿里云的云服务中的无影云。
关键它价格也不贵,一年的2核4G的价格也就是139元,支持windows
https://www.aliyun.com/minisite/goods?userCode=nebb965s
其实就是一个windows的远程桌面,里面可以按照各种应用程序,比如同花顺,东方财富,QQ等等
连接方式,使用浏览器就可以连上远程桌面了:
我用的谷歌浏览器,现在无论走到那里,只要可以上网,就可以在浏览器里面连接到远程桌面,看到Ptrade里面的情况。
收起阅读 »
那是不是只能在本地的物理机上执行的呢?
不过有办法解决:
使用阿里云的云服务中的无影云。
关键它价格也不贵,一年的2核4G的价格也就是139元,支持windows
https://www.aliyun.com/minisite/goods?userCode=nebb965s
无影云桌面 (Elastic Desktop Service),是一种易用、安全、高效的云上桌面服务。它支持快速便捷的桌面环境创建、部署、统一管控与运维。无需前期传统硬件投资,帮您快速构建安全、高性能、低成本的企业桌面办公体系。可广泛应用于具有高数据安全管控、高性能计算等要求的安全办公、金融、设计、影视、教育等领域。
其实就是一个windows的远程桌面,里面可以按照各种应用程序,比如同花顺,东方财富,QQ等等
连接方式,使用浏览器就可以连上远程桌面了:
我用的谷歌浏览器,现在无论走到那里,只要可以上网,就可以在浏览器里面连接到远程桌面,看到Ptrade里面的情况。
收起阅读 »
性能测试: flask WSGI vs 异步 ASGI vs tornodo vs Golang Gin
做一个基本的性能基准测试。测试脚本使用是apach benchmark
测试命令:
ab -kc 1000 -n 4000 http://127.0.0.1:5000/
代码最精简:
flask wsgi:
得到的结果:
ASGI的代码:
运行命令:
uvicorn --host 0.0.0.0 simple_asgi:app
得到的结果:
python的tornado
Goland的gin
通过requests per second 每秒的请求数:
flask : 1000
uvicorn: 2000
tornoda:3000
go gin:4000
所以综合测试结果,flask的性能最烂,go gin的性能最好。差了4倍。
转载请注明出处:
http://www.30daydo.com/article/44336
收起阅读 »
测试命令:
ab -kc 1000 -n 4000 http://127.0.0.1:5000/
代码最精简:
flask wsgi:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, World!'
if __name__ == '__main__':
app.run(host='0.0.0.0')
得到的结果:
ASGI的代码:
async def app(scope, receive, send):
await send({
'type': 'http.response.start',
'status': 200,
'headers': [
[b'content-type', b'text/html']
]
})
await send({
'type': 'http.response.body',
'body': b'Hello This is server running',
'more_body': False
})
运行命令:
uvicorn --host 0.0.0.0 simple_asgi:app
得到的结果:
python的tornado
from tornado import ioloop
from tornado import web
class Homepage(web.RequestHandler):
def get(self):
print('get method')
self.write("This is tornado server")
if __name__ == '__main__':
app = web.Application([
("/",Homepage),
])
app.listen(8888)
ioloop.IOLoop.current().start()
Goland的gin
package main
import "github.com/gin-gonic/gin"
// 测试专用
func main() {
r := gin.Default()
r.GET("/index", func(c *gin.Context) {
c.JSON(200, gin.H{"message": "Working"})
})
r.GET("/", func(c *gin.Context) {
c.JSON(200, gin.H{"message": "Working"})
})
r.Run()
}
通过requests per second 每秒的请求数:
flask : 1000
uvicorn: 2000
tornoda:3000
go gin:4000
所以综合测试结果,flask的性能最烂,go gin的性能最好。差了4倍。
转载请注明出处:
http://www.30daydo.com/article/44336
收起阅读 »
腾讯云上的centos 然后没有sudo
轻服务器,感觉是最小安装的centos,连sudo都不默认安装。还得自己yum安装。
稍等片刻就可以了。
现在腾讯的轻服务器还是很便宜,双核4G的服务器,3年,价格才200左右,平均一年60多,随便拿来挖矿就可以回本了。单买一年的话74块,也就一天的饭钱。
活动还在继续,点击下面的官网链接就可以购买了。不限定是否新用户,老用户也可以的。
https://curl.qcloud.com/eCqCAb4a
收起阅读 »
yum -y install sudo
稍等片刻就可以了。
现在腾讯的轻服务器还是很便宜,双核4G的服务器,3年,价格才200左右,平均一年60多,随便拿来挖矿就可以回本了。单买一年的话74块,也就一天的饭钱。
活动还在继续,点击下面的官网链接就可以购买了。不限定是否新用户,老用户也可以的。
https://curl.qcloud.com/eCqCAb4a
收起阅读 »
Chrome插件批量清除浏览器的收藏夹中重复,无法访问的网址
这个chrome插件挺好用的:
Bookmarks clean up
chrome应用商场下载即可。
可以自动清除一些年代久远,无法访问的站点。
还有一些重复收藏的网址。
Bookmarks clean up
chrome应用商场下载即可。
可以自动清除一些年代久远,无法访问的站点。
还有一些重复收藏的网址。
揭露垃圾的短信收码平台
短信收码平台,主要用来注册一些临时的论坛, 不想泄露自己的隐私。 所以得找一些临时的手机号来收验证码。
一起的收码平台质量挺好的。
可是现在越来越烂了。
总结一些完全没有用的收码平台。 希望大家不要浪费时间在这些垃圾网站上浪费时间。
都是自己平时使用过的,在上面等了几分钟后,短信没收到,而上面的短信全是广告。
垃圾排名第一:(按搜索引擎出来的,大家就不要点这些网站)
无敌云短信验证码接收平台
https://www.clearcode.cn/
上面的基本都是套路,是一些商家的广告。并没有你的验证码。
收起阅读 »
一起的收码平台质量挺好的。
可是现在越来越烂了。
总结一些完全没有用的收码平台。 希望大家不要浪费时间在这些垃圾网站上浪费时间。
都是自己平时使用过的,在上面等了几分钟后,短信没收到,而上面的短信全是广告。
垃圾排名第一:(按搜索引擎出来的,大家就不要点这些网站)
无敌云短信验证码接收平台
https://www.clearcode.cn/
上面的基本都是套路,是一些商家的广告。并没有你的验证码。
收起阅读 »
后生可畏 看到某个作者的github commit状态
基本每天保持绿色状态。
没有绿的3天应该是过年状态吧。
没有绿的3天应该是过年状态吧。
ubuntu(centos)下golang下载libxml2 报错信息, go 安装libxml2
ubuntu下golang下载libxml2 报错信息:
因为系统少了个libxml2 开发包:
使用以下命令即可修复:
如果是centos的话,安装命令:
注意是 libxml2-devel !
别用那种下载源码编译的方法,能用yum就用yum,否则弄得系统一堆依赖问题。 收起阅读 »
$ go get -u github.com/lestrrat-go/libxml2
# pkg-config --cflags -- libxml-2.0 Package libxml-2.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `libxml-2.0.pc' to the PKG_CONFIG_PATH environment variable
No package 'libxml-2.0' found pkg-config: exit status 1
因为系统少了个libxml2 开发包:
使用以下命令即可修复:
sudo apt install libxml2-dev
如果是centos的话,安装命令:
yum install libxml2
yum install libxml2-devel
注意是 libxml2-devel !
别用那种下载源码编译的方法,能用yum就用yum,否则弄得系统一堆依赖问题。 收起阅读 »
REST ful API的规范 delete方法不建议在body放入数据
毕竟delete参数是根据uri删除资源.
因为资源的唯一性,所以就没必要再在body里面放入其他的数据了.
什么? 通过uri不能确定资源的唯一? 那么你这个设计就不是REST规范了.
那PUT这些操作也无法准确更新资源了.
因为资源的唯一性,所以就没必要再在body里面放入其他的数据了.
什么? 通过uri不能确定资源的唯一? 那么你这个设计就不是REST规范了.
那PUT这些操作也无法准确更新资源了.
内网穿透软件 frp和ngrok的比较
内网穿透就是访问某个内网主机.
可以理解为一个vpn网络. 同在一个内网. 不过原理不一样.
内网穿透是绑定的某个端口的数据转发与接收.
前提都是需要一台有公网ip的主机,通过这个主机作为跳板, 先访问这个跳板主机, 然后把数据转发到链接到内网.
那么比较frp和ngork的各个方面,从而让用户了解各自的需求:
1. 开源
frp 开源免费,ngrok1.x开源,但2.x开始收费
2. 配置难度
二者都是用go编写的,所以基本可以跨平台是,linux,windows都可以。
都需要一个客户端,一个服务端
配置而言,frp要比ngrok配置容易多了.
虽然都是go写的.不过ngrok的配置比较麻烦,而且go get 经常拉不下来.
推荐frp, 直接下载下来就可以使用了.
可以自定义域名. 即使域名没有备案,也可以直接用ip访问.
ngrok有个随机的域名,不过那个速度有限速,用来偶尔测试一下还可以。 长期用来工作或者建站肯定不行。
ngrok 2.x 官网提供下载的版本需要注册,获取token,才能使用
然后
收起阅读 »
可以理解为一个vpn网络. 同在一个内网. 不过原理不一样.
内网穿透是绑定的某个端口的数据转发与接收.
前提都是需要一台有公网ip的主机,通过这个主机作为跳板, 先访问这个跳板主机, 然后把数据转发到链接到内网.
那么比较frp和ngork的各个方面,从而让用户了解各自的需求:
1. 开源
frp 开源免费,ngrok1.x开源,但2.x开始收费
2. 配置难度
二者都是用go编写的,所以基本可以跨平台是,linux,windows都可以。
都需要一个客户端,一个服务端
配置而言,frp要比ngrok配置容易多了.
虽然都是go写的.不过ngrok的配置比较麻烦,而且go get 经常拉不下来.
推荐frp, 直接下载下来就可以使用了.
可以自定义域名. 即使域名没有备案,也可以直接用ip访问.
ngrok有个随机的域名,不过那个速度有限速,用来偶尔测试一下还可以。 长期用来工作或者建站肯定不行。
ngrok 2.x 官网提供下载的版本需要注册,获取token,才能使用
ngrok config add-authtoken <token>
然后
ngrok http 80监听本地的80端口。
收起阅读 »
微信公众号token验证失败的原因
主要是文档写的过于模糊(比较含蓄,实际上是垃圾到不行)
因为提供的文档,用的是python2的代码:
如果按照上面的代码,放到python3上执行, 实际返回的 echostr 的值是错的. 所以服务器拿这个错的值,匹配, 会总是失败.
什么年代了, 一个demo 也不换个新一点的python版本.
提供一个新版的python3通过检验的代码:
因为提供的文档,用的是python2的代码:
import hashlib
import web
class Handle(object):
def GET(self):
try:
data = web.input()
if len(data) == 0:
return "hello, this is handle view"
signature = data.signature
timestamp = data.timestamp
nonce = data.nonce
echostr = data.echostr
token = "xxxx" #请按照公众平台官网\基本配置中信息填写
list = [token, timestamp, nonce]
list.sort()
sha1 = hashlib.sha1()
map(sha1.update, list)
hashcode = sha1.hexdigest()
print "handle/GET func: hashcode, signature: ", hashcode, signature
if hashcode == signature:
return echostr
else:
return ""
except Exception, Argument:
return Argument
如果按照上面的代码,放到python3上执行, 实际返回的 echostr 的值是错的. 所以服务器拿这个错的值,匹配, 会总是失败.
什么年代了, 一个demo 也不换个新一点的python版本.
提供一个新版的python3通过检验的代码:
# -*- coding: utf-8 -*-收起阅读 »
# -*- coding: utf-8 -*-
# filename: handle.py
import hashlib
import web
class Handle(object):
def POST(self):
pass
# get方法,验证token
def GET(self):
try:
data = web.input()
if len(data) == 0:
return "token success!"
signature = data.signature
timestamp = data.timestamp
nonce = data.nonce
echostr = data.echostr
token = "123456abcdefg" # 请按照公众平台官网\基本配置中信息填写,两个token保持一致
list = [token, timestamp, nonce]
list.sort()
sha1 = hashlib.sha1()
sha1.update(list[0].encode("utf-8"))
sha1.update(list[1].encode("utf-8"))
sha1.update(list[2].encode("utf-8"))
hashcode = sha1.hexdigest() # 获取加密串
# 验证
print("handle/GET func: hashcode, signature: ", hashcode, signature)
if hashcode == signature:
return echostr
else:
return ""
except Exception as Argument:
return Argument
golang的时间格式化 做法有点像格力手机的开机画面是董小姐
网络上的开发者基本都是一路吐槽。
做法有点像格力手机的开机画面是董小姐。
用个语言还得记住你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 无法修改结构体的值。传入指针
假如我的json文件的格式如下:
然后我的定义的结构体:
然后程序里面解析json的代码:
发现是无法把t的值修改为json文件里面的值,最后的记过输出,还是一个零值的结果体。
后面知道问题所在了,如果定义的结构体的首字母小写的时候,包外的反射是无法修改结构体的值的,也就是只能只读。
所以只需要把结构体的首字母改为大写,问题就可以解决了。
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一个快捷方式帮你搞定
在golanad的ide上,敲入 type xx struct{
}
在出现的generate from json的页面,把json的字符串输入进去。
IDE即可帮你转换为对应的结构体了。 根本就没有在线IDE什么事情了。
}
在出现的generate from json的页面,把json的字符串输入进去。
IDE即可帮你转换为对应的结构体了。 根本就没有在线IDE什么事情了。
golang根据不同返回解析不同结构的json
// 数据源
{"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)
}
就可以解析上面的不规则的结构体了。
收起阅读 »
vs code 无法启动jupyter notebook 修复 亲测
错误信息:
之前一直运行得好好的。不知道安装了什么依赖库后就这样了。。
在国外网站找了一通后,找到了解决办法:
不得不感慨,国外大神多,国内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轮动
回测代码如下: 代码里面加入了个人理解的注释。
如果遇到不懂的,可以关注公众号咨询:
收起阅读 »
#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
如果遇到不懂的,可以关注公众号咨询:
收起阅读 »
图床网站横向对比 测试
1. SM.SM
网站提供登录,可是,一直是登录不了,点击按钮点击后是一直没有反应。后台做的不好。
不能登录,也就是你上传的图片,就下次想找回,也很难找,除非你找回你的原文章,在原来的文章里面找出原来的链接。
然后图片的话遇到一些美女图会经常误删,也就是这样子的。
就是你的图片链接被吃了。 这也侧面说明图床网站对你的图片进行审查的。
推荐指数:0
2. imgUrl
这个网站的图片也是有审查的,一般而言,二维码就是直接会被删除,所以不建议拿来存放一些公众号二维码等传播性的工具。
优点是速度比较快
推荐指数:3星
3. 七牛
上传下载速度快,并且正常的图片不会屏蔽,二维码也不会被屏蔽。支持很多的工具。可以自定义名字,也就是你上传的图片的URL不再是一串随机的字符,而是可以设定为指定日期,或者你的原来的文件名。
这样对于查找本地文件,或者根据本地的文件名,查找线上的图片文件,都是很有李的。
但是,部署这个有点难度,需要配置一些服务器的内容。比如需要通过API生产token,才可以放入到sharex中,并且需要定时更新。
推荐指数:5星
收起阅读 »
网站提供登录,可是,一直是登录不了,点击按钮点击后是一直没有反应。后台做的不好。
不能登录,也就是你上传的图片,就下次想找回,也很难找,除非你找回你的原文章,在原来的文章里面找出原来的链接。
然后图片的话遇到一些美女图会经常误删,也就是这样子的。
就是你的图片链接被吃了。 这也侧面说明图床网站对你的图片进行审查的。
推荐指数:0
2. imgUrl
这个网站的图片也是有审查的,一般而言,二维码就是直接会被删除,所以不建议拿来存放一些公众号二维码等传播性的工具。
优点是速度比较快
推荐指数:3星
3. 七牛
上传下载速度快,并且正常的图片不会屏蔽,二维码也不会被屏蔽。支持很多的工具。可以自定义名字,也就是你上传的图片的URL不再是一串随机的字符,而是可以设定为指定日期,或者你的原来的文件名。
这样对于查找本地文件,或者根据本地的文件名,查找线上的图片文件,都是很有李的。
但是,部署这个有点难度,需要配置一些服务器的内容。比如需要通过API生产token,才可以放入到sharex中,并且需要定时更新。
推荐指数:5星
收起阅读 »
毕业7年,白手起家到资产千万,我的6个致富发财赚钱秘诀 --观后感
看了油管上 土妹的视频,《毕业7年,白手起家到资产千万,我的6个致富发财赚钱秘诀》
她总结了几点,并且有人在评论里面总结了。
基本都是很认同她的说法。
以后需要不断地思考,思考未来。该集中努力的地方得一定努力才行。
最后附上视频链接:
https://www.youtube.com/watch?v=094BcDIc0LM
收起阅读 »
她总结了几点,并且有人在评论里面总结了。
1、有时候选择大于努力(投资炒股->炒美股)
2、不努力就没有选择的机会(名校本科+研究生+充分准备面试技巧+争取工作调动)
3、关键点很重要,在最关键的时候,必须全力一击!
4、富贵险中求,适当冒一点险(风控能力)
5、越早开始存钱,越好
6、打工是发不了财的、但是前期要积累工作经验和锻炼品质,竭尽全力把工作做好!再想办法开拓其他的赚钱方式!
基本都是很认同她的说法。
以后需要不断地思考,思考未来。该集中努力的地方得一定努力才行。
最后附上视频链接:
https://www.youtube.com/watch?v=094BcDIc0LM
收起阅读 »
github pages是可以被百度检索到的,网上的文章都是瞎扯
有图有证。
看来还是继续用回github pages吧。