通知设置 新通知
ptrade获取分时成交数据-LEVEL2数据逐笔数据
Ptrade • 李魔佛 发表了文章 • 0 个评论 • 2536 次浏览 • 2023-02-04 12:27
中提供了获取分时成交的数据。
使用场景
该函数在交易模块可用
接口说明
该接口用于获取当日分时成交行情数据。
注意事项:
1、沪深市场都有分时成交数据;
2、分时成交数据需开通level2行情才有数据推送,否则无数据返回;
返回字段:
返回
返回一个OrderedDict对象,包含每只代码的分时成交行情数据。(OrderedDict([(),()...]))
返回结果字段介绍:
time_stamp: 时间戳毫秒级(str:numpy.int64);
hq_px: 价格(str:numpy.float64);
hq_px64: 价格(str:numpy.int64)(行情暂不支持,返回均为0);
business_amount: 成交数量(str:numpy.int64);
business_balance: 成交金额(str:numpy.int64);
business_count: 成交笔数(str:numpy.int64);
business_direction: 成交方向(0:卖,1:买,2:平盘)(str:numpy.int64);
amount: 持仓量(str:numpy.int64)(行情暂不支持,返回均为0);
start_index: 分笔关联的逐笔开始序号(str:numpy.int64)(行情暂不支持,返回均为0);
end_index: 分笔关联的逐笔结束序号(str:numpy.int64)(行情暂不支持,返回均为0);
示例代码:
def initialize(context):
g.security = '000001.SZ'
set_universe(g.security)
def handle_data(context, data):
#获取000001.SZ的分时成交数据
direction_data = get_tick_direction(g.security)
log.info(direction_data)
#获取指定股票列表分时成交数据
direction_data = get_tick_direction(['000002.SZ','000032.SZ'])
log.info(direction_data)
#获取成交量
business_amount = direction_data['000002.SZ']['business_amount']
log.info('分时成交的成交量为:%s' % business_amount)
不过在handle_bar中或者tick_data中,实际行情推送最快也要3s,所以拿到的level2的是切片数据,即使拿到很多数据,可是行情获取时间间隔还是3s, 无法做到和qmt那样的level2逐笔订阅驱动。还有level2数据需要收费。ptrade目前常用的几个券商都不支持level2的。
目前有万一免五的qmt ptrade量化交易接口的券商吗?
查看全部
中提供了获取分时成交的数据。
使用场景
该函数在交易模块可用
接口说明
该接口用于获取当日分时成交行情数据。
注意事项:
1、沪深市场都有分时成交数据;
2、分时成交数据需开通level2行情才有数据推送,否则无数据返回;
返回字段:
返回
返回一个OrderedDict对象,包含每只代码的分时成交行情数据。(OrderedDict([(),()...]))
返回结果字段介绍:
time_stamp: 时间戳毫秒级(str:numpy.int64);
hq_px: 价格(str:numpy.float64);
hq_px64: 价格(str:numpy.int64)(行情暂不支持,返回均为0);
business_amount: 成交数量(str:numpy.int64);
business_balance: 成交金额(str:numpy.int64);
business_count: 成交笔数(str:numpy.int64);
business_direction: 成交方向(0:卖,1:买,2:平盘)(str:numpy.int64);
amount: 持仓量(str:numpy.int64)(行情暂不支持,返回均为0);
start_index: 分笔关联的逐笔开始序号(str:numpy.int64)(行情暂不支持,返回均为0);
end_index: 分笔关联的逐笔结束序号(str:numpy.int64)(行情暂不支持,返回均为0);
示例代码:
def initialize(context):
g.security = '000001.SZ'
set_universe(g.security)
def handle_data(context, data):
#获取000001.SZ的分时成交数据
direction_data = get_tick_direction(g.security)
log.info(direction_data)
#获取指定股票列表分时成交数据
direction_data = get_tick_direction(['000002.SZ','000032.SZ'])
log.info(direction_data)
#获取成交量
business_amount = direction_data['000002.SZ']['business_amount']
log.info('分时成交的成交量为:%s' % business_amount)
不过在handle_bar中或者tick_data中,实际行情推送最快也要3s,所以拿到的level2的是切片数据,即使拿到很多数据,可是行情获取时间间隔还是3s, 无法做到和qmt那样的level2逐笔订阅驱动。还有level2数据需要收费。ptrade目前常用的几个券商都不支持level2的。
目前有万一免五的qmt ptrade量化交易接口的券商吗?
ptrade移除当前ST股
Ptrade • 李魔佛 发表了文章 • 0 个评论 • 1183 次浏览 • 2023-02-04 12:14
下面代码移除创业板,科创板还有当前被ST的股票。也可以任意组合,移除。
可以参考上一篇:http://30daydo.com/article/44569
def remove_st_stock(all_stock_list):
st_dict = get_stock_status(all_stock_list, query_type='ST', query_date=None)
st_list = []
for k, v in st_dict.items():
if v:
st_list.append(k)
return st_list
MARKET_DICT = {0: '科创板', 1: '创业板', }
IGNORE_MARKET = [0, 1]
def all_codes_in_market():
all_stock_set = set(get_Ashares(date=None))
for ignore_code in IGNORE_MARKET:
market = MARKET_DICT.get(ignore_code)
if market == '科创板':
all_stock_set = all_stock_set - set(filter(lambda x: x.startswith('68'), all_stock_set))
if market == '创业板':
all_stock_set = all_stock_set - set(filter(lambda x: x.startswith('3'), all_stock_set))
return all_stock_set
def create_target(context):
all_stock_set = all_codes_in_market()
st_list = remove_st_stock(list(all_stock_set))
all_stock_set = all_stock_set - set(st_list)
return all_stock_set
调用方式:
stock_target = create_target(None)
这样返回的股票就被排除了科创板,创业板,ST股票。
查看全部
下面代码移除创业板,科创板还有当前被ST的股票。也可以任意组合,移除。
可以参考上一篇:http://30daydo.com/article/44569
def remove_st_stock(all_stock_list):
st_dict = get_stock_status(all_stock_list, query_type='ST', query_date=None)
st_list = []
for k, v in st_dict.items():
if v:
st_list.append(k)
return st_list
MARKET_DICT = {0: '科创板', 1: '创业板', }
IGNORE_MARKET = [0, 1]
def all_codes_in_market():
all_stock_set = set(get_Ashares(date=None))
for ignore_code in IGNORE_MARKET:
market = MARKET_DICT.get(ignore_code)
if market == '科创板':
all_stock_set = all_stock_set - set(filter(lambda x: x.startswith('68'), all_stock_set))
if market == '创业板':
all_stock_set = all_stock_set - set(filter(lambda x: x.startswith('3'), all_stock_set))
return all_stock_set
def create_target(context):
all_stock_set = all_codes_in_market()
st_list = remove_st_stock(list(all_stock_set))
all_stock_set = all_stock_set - set(st_list)
return all_stock_set
调用方式:
stock_target = create_target(None)
这样返回的股票就被排除了科创板,创业板,ST股票。
ptrade排除A股创业板,科创板的股票
Ptrade • 李魔佛 发表了文章 • 0 个评论 • 1488 次浏览 • 2023-02-04 10:48
MARKET_DICT = {0: '科创板', 1: '创业板', }
IGNORE_MARKET = [0, 1]
def create_target(context):
all_stock_set = set(get_Ashares(date=None))
for ignore_code in IGNORE_MARKET:
market = MARKET_DICT.get(ignore_code)
if market == '科创板':
all_stock_set = all_stock_set - set(filter(lambda x:x.startswith('68'),all_stock_set))
if market == '创业板':
all_stock_set = all_stock_set - set(filter(lambda x:x.startswith('3'),all_stock_set))
return all_stock_set
返回的all_stock_set就是排除了创业板,科创板的股票列表。
ptrade接口文档:http://ptradeapi.com
查看全部
MARKET_DICT = {0: '科创板', 1: '创业板', }
IGNORE_MARKET = [0, 1]
def create_target(context):
all_stock_set = set(get_Ashares(date=None))
for ignore_code in IGNORE_MARKET:
market = MARKET_DICT.get(ignore_code)
if market == '科创板':
all_stock_set = all_stock_set - set(filter(lambda x:x.startswith('68'),all_stock_set))
if market == '创业板':
all_stock_set = all_stock_set - set(filter(lambda x:x.startswith('3'),all_stock_set))
return all_stock_set
返回的all_stock_set就是排除了创业板,科创板的股票列表。
ptrade接口文档:http://ptradeapi.com
ptrade如何获取某天的全市场股票代码?
Ptrade • 李魔佛 发表了文章 • 0 个评论 • 1724 次浏览 • 2023-02-04 03:19
在ptrade的接口文档http://ptradeapi.com 里面可以查到,
get_Ashares – 获取指定日期A股代码列表
get_Ashares(date=None)
如果不指定日期,则获取单天的A股所有股票的股票代码。
如果在回测的时候,获取的是回测单天额所有股票代码; 如果指定日期,则获取的是指定日期的所有A股股票代码。
get_Ashares – 获取指定日期A股代码列表get_Ashares(date=None)使用场景
该函数在研究、回测、交易模块可用
接口说明
该接口用于获取指定日期沪深市场的所有A股代码列表
注意事项:
1、在回测中,date不入参默认取回测日期,默认值会随着回测日期变化而变化,等于context.current_dt
2、在研究中,date不入参默认取当天日期
3、在交易中,date不入参默认取当天日期
参数
date:格式为YYYYmmdd
返回
股票代码列表,list类型(list[str,...])
让我们来测试一下:
拿到的股票个数是4912个。
然后我对着通达信的所有A股数据比较了一下,get_Ashares 获取的数据不包括北交所,新三板创新创业的股票,也就是不包括4和8开头的股票数据,但包含沪深主板,创业板,科创板的股票数据。
查看全部
在ptrade的接口文档http://ptradeapi.com 里面可以查到,
get_Ashares – 获取指定日期A股代码列表
get_Ashares(date=None)
如果不指定日期,则获取单天的A股所有股票的股票代码。
如果在回测的时候,获取的是回测单天额所有股票代码; 如果指定日期,则获取的是指定日期的所有A股股票代码。
get_Ashares – 获取指定日期A股代码列表get_Ashares(date=None)使用场景
该函数在研究、回测、交易模块可用
接口说明
该接口用于获取指定日期沪深市场的所有A股代码列表
注意事项:
1、在回测中,date不入参默认取回测日期,默认值会随着回测日期变化而变化,等于context.current_dt
2、在研究中,date不入参默认取当天日期
3、在交易中,date不入参默认取当天日期
参数
date:格式为YYYYmmdd
返回
股票代码列表,list类型(list[str,...])
让我们来测试一下:
拿到的股票个数是4912个。
然后我对着通达信的所有A股数据比较了一下,get_Ashares 获取的数据不包括北交所,新三板创新创业的股票,也就是不包括4和8开头的股票数据,但包含沪深主板,创业板,科创板的股票数据。
国信可以使用miniqmt吗?
QMT • 李魔佛 发表了文章 • 0 个评论 • 3682 次浏览 • 2023-01-21 15:52
所以笔者特意去问了下国信的好友兼营业部经理,但他回复说,个人只要申请,就可以开通mini qmt。如果不申请,是无法使用的,无法连接上去。
但因为开通这个是不用门槛的,可能会有部分不懂的或者不愿意的经理会和客户说不支持,或者需要机构这样话语。
具体情况,具体分析。
1. 国信证券iQuant策略交易平台精简版是指国信证券iQuant策略交易平台更专业快速且简洁的版本,满足股票、期货、期权、基金等全品种交易需求。
2. 风险等级:R4
投资期限:0-1年
投资品种:权益类投资品种如股票、混合型基金、偏股型基金、股票型基金等。
3. 平台使用不收取费用。
具体的申请表如下:
不过申请了这个权限后,只能进行拉取数据,并没有交易权限。。交易权限需要机构才能开通。郁闷,看来国信的miniqmt是无法进行交易的了,只能白嫖点数据。
如果需要文字word版本,
可以到公众号后台回复: 国信mini申请
获取word版本。
或者加微信开通指定的营业部的国信qmt(iquant), 也可以帮你开通mini qmt。
查看全部
之前群里有国信的小伙伴说,国信的mini qmt无法使用的。
所以笔者特意去问了下国信的好友兼营业部经理,但他回复说,个人只要申请,就可以开通mini qmt。如果不申请,是无法使用的,无法连接上去。
但因为开通这个是不用门槛的,可能会有部分不懂的或者不愿意的经理会和客户说不支持,或者需要机构这样话语。
具体情况,具体分析。
1. 国信证券iQuant策略交易平台精简版是指国信证券iQuant策略交易平台更专业快速且简洁的版本,满足股票、期货、期权、基金等全品种交易需求。
2. 风险等级:R4
投资期限:0-1年
投资品种:权益类投资品种如股票、混合型基金、偏股型基金、股票型基金等。
3. 平台使用不收取费用。
具体的申请表如下:
不过申请了这个权限后,只能进行拉取数据,并没有交易权限。。交易权限需要机构才能开通。郁闷,看来国信的miniqmt是无法进行交易的了,只能白嫖点数据。
如果需要文字word版本,
可以到公众号后台回复: 国信mini申请
获取word版本。
或者加微信开通指定的营业部的国信qmt(iquant), 也可以帮你开通mini qmt。
ptrade生产环境在开盘交易时间无法回测,有什么办法可以解决?
Ptrade • 李魔佛 发表了文章 • 0 个评论 • 1847 次浏览 • 2023-01-06 12:07
在正式环境下,多个券商的ptrade都无法进行回测。
但也有办法解决。 就是使用ptrade的仿真客户端。 仿真客户端并连接实盘交易。所以没有这个时间的限制。
笔者在几个券商的上的仿真客户端都可以在交易时间使用回测功能。
可能部分仿真客户端需要申请才给开通的。
查看全部
ptrade回测结束后执行某个函数,比如保存回测结果
Ptrade • 李魔佛 发表了文章 • 0 个评论 • 1162 次浏览 • 2023-01-01 17:56
官方文档只提供一个每天盘后执行的函数,没有函数可以在回测结束后,固定执行某些操作。
比如我回测过程保存的历史交易记录,收益率等,要如何保存? 虽然可以在回测的时候,每个交易日保存一次。
但是这样就需要在回测的时候按照天打开文件,盘后写入一次。 使用一个全局对象操作,显得很啰嗦。
那么有没有办法可以做在回测结束后一次性 保存操作呢?
答案是有的。也很简单。 适用于ptrade,qmt。
https://t.zsxq.com/09yigu5dy
查看全部
官方文档只提供一个每天盘后执行的函数,没有函数可以在回测结束后,固定执行某些操作。
比如我回测过程保存的历史交易记录,收益率等,要如何保存? 虽然可以在回测的时候,每个交易日保存一次。
但是这样就需要在回测的时候按照天打开文件,盘后写入一次。 使用一个全局对象操作,显得很啰嗦。
那么有没有办法可以做在回测结束后一次性 保存操作呢?
答案是有的。也很简单。 适用于ptrade,qmt。
https://t.zsxq.com/09yigu5dy
ptrade回测 获取回测当天的分时数据
Ptrade • 李魔佛 发表了文章 • 0 个评论 • 1441 次浏览 • 2023-01-01 15:45
ptrade api的文档第3条表明,
3、数据返回内容不包括当天数据。
也就是用get_price是拿不到回测当天的数据。
比如下面的例子:
def initialize(context):
# 初始化策略
run_daily(context, execute, '09:36')
def handle_data(context, data):
pass
def execute(context):
current = context.blotter.current_dt.strftime('%Y-%m-%d')
log.info(current)
security='128025.SZ'
df = get_price(security, start_date=None, end_date=None, frequency='1m', fields=None, fq=None, count=10)
log.info(df)
返回的数据:
2023-01-01 15:31:21 开始运行回测, 策略名称: 四叶草-指定时间价格
2022-12-01 09:36:00 - INFO - 2022-12-01
2022-12-01 09:36:00 - INFO - open high low close volume \
2022-11-30 14:51:00 276.510 276.560 274.626 275.500 217510.0
2022-11-30 14:52:00 275.240 278.638 275.205 278.398 363820.0
2022-11-30 14:53:00 278.485 278.895 276.660 277.479 307570.0
2022-11-30 14:54:00 277.337 278.440 276.660 278.440 239370.0
2022-11-30 14:55:00 279.900 287.113 279.900 287.113 853170.0
2022-11-30 14:56:00 287.113 288.526 286.533 288.125 581860.0
2022-11-30 14:57:00 288.126 291.800 287.909 291.361 523580.0
2022-11-30 14:58:00 291.500 292.980 291.500 291.800 36480.0
2022-11-30 14:59:00 291.800 291.800 291.800 291.800 0.0
2022-11-30 15:00:00 292.510 292.510 292.510 292.510 421398.0
回测日期是2022-12-01日,每天09:36运行,那10根数据。
但返回的数据是昨天的收盘前的10根分时数据。并非当天9:36分开始拿10根bar。
如果把日期数据也固定,
df = get_price(security, start_date='2022-12-01', end_date=None, frequency='1m', fields=None, fq=None, count=10)
实际拿到的数据是空的,也就是无法拿到当天的数据。
正确的用法:
def initialize(context):
# 初始化策略
run_daily(context, execute, '09:36')
def handle_data(context, data):
pass
def execute(context):
current = context.blotter.current_dt.strftime('%Y-%m-%d')
log.info(current)
security='128025.SZ'
count=6
df=get_history(count, frequency='1m', field='close', security_list=security, fq=None, include=False, fill='nan')
log.info(df)
返回的数据:
欢迎关注公众号 查看全部
ptrade api的文档第3条表明,
3、数据返回内容不包括当天数据。
也就是用get_price是拿不到回测当天的数据。
比如下面的例子:
def initialize(context):
# 初始化策略
run_daily(context, execute, '09:36')
def handle_data(context, data):
pass
def execute(context):
current = context.blotter.current_dt.strftime('%Y-%m-%d')
log.info(current)
security='128025.SZ'
df = get_price(security, start_date=None, end_date=None, frequency='1m', fields=None, fq=None, count=10)
log.info(df)
返回的数据:
2023-01-01 15:31:21 开始运行回测, 策略名称: 四叶草-指定时间价格
2022-12-01 09:36:00 - INFO - 2022-12-01
2022-12-01 09:36:00 - INFO - open high low close volume \
2022-11-30 14:51:00 276.510 276.560 274.626 275.500 217510.0
2022-11-30 14:52:00 275.240 278.638 275.205 278.398 363820.0
2022-11-30 14:53:00 278.485 278.895 276.660 277.479 307570.0
2022-11-30 14:54:00 277.337 278.440 276.660 278.440 239370.0
2022-11-30 14:55:00 279.900 287.113 279.900 287.113 853170.0
2022-11-30 14:56:00 287.113 288.526 286.533 288.125 581860.0
2022-11-30 14:57:00 288.126 291.800 287.909 291.361 523580.0
2022-11-30 14:58:00 291.500 292.980 291.500 291.800 36480.0
2022-11-30 14:59:00 291.800 291.800 291.800 291.800 0.0
2022-11-30 15:00:00 292.510 292.510 292.510 292.510 421398.0
回测日期是2022-12-01日,每天09:36运行,那10根数据。
但返回的数据是昨天的收盘前的10根分时数据。并非当天9:36分开始拿10根bar。
如果把日期数据也固定,
df = get_price(security, start_date='2022-12-01', end_date=None, frequency='1m', fields=None, fq=None, count=10)
实际拿到的数据是空的,也就是无法拿到当天的数据。
正确的用法:
def initialize(context):
# 初始化策略
run_daily(context, execute, '09:36')
def handle_data(context, data):
pass
def execute(context):
current = context.blotter.current_dt.strftime('%Y-%m-%d')
log.info(current)
security='128025.SZ'
count=6
df=get_history(count, frequency='1m', field='close', security_list=security, fq=None, include=False, fill='nan')
log.info(df)
返回的数据:
欢迎关注公众号
Ptrade获取可转债强赎数据
Ptrade • 李魔佛 发表了文章 • 0 个评论 • 1752 次浏览 • 2022-12-21 15:50
所以在可转债的策略里面,把强赎的转债排除掉,是一个不错的因子。
但内置的ptrade接口数据并无提供任何转债相关的数据。
不过笔者这里提供了一个自研的数据接口。
http://ptradeapi.com/#%E5%8F%AF%E8%BD%AC%E5%80%BA%E5%BC%BA%E8%B5%8E%E4%B8%8E%E6%95%B0%E6%97%A5%E5%AD%90
方便在ptrade里面调用。
查看全部
所以在可转债的策略里面,把强赎的转债排除掉,是一个不错的因子。
但内置的ptrade接口数据并无提供任何转债相关的数据。
不过笔者这里提供了一个自研的数据接口。
http://ptradeapi.com/#%E5%8F%AF%E8%BD%AC%E5%80%BA%E5%BC%BA%E8%B5%8E%E4%B8%8E%E6%95%B0%E6%97%A5%E5%AD%90
方便在ptrade里面调用。
宁稳网可转债弹性因子 python回测
可转债 • 李魔佛 发表了文章 • 0 个评论 • 2331 次浏览 • 2022-12-04 18:43
https://t.zsxq.com/08779XPlk
的数据和代码,修改原来的代码
df=df.sort_values('税前收益率',ascending=False)
改为
df=df.sort_values('弹性',ascending=False) # 倒序
df=df.sort_values('弹性',ascending=True) # 正序
还有这里:
df = pd.read_excel(full_path)
df['税前收益率'] = df['税前收益率'].map(convert_float)
df['转股价格']=df['转股价格'].astype(float)
df=df[['转债代码','转债名称','转债价格','税前收益率']]
改为:
df['弹性'] = df['弹性'].map(convert_float)
df['转股价格']=df['转股价格'].astype(float)
df=df[['转债代码','转债名称','转债价格','弹性']]
如果修改持有个数,天数,修改HOLD_NUM ,和FREQ 即可
得到下面的图:
点击查看大图
"1天,大到小" 收益率 -30%,最大回撤34%
"1天,小到大" 收益率15.74%,最大回撤10.43%
'5天,大到小' 收益率-25%,最大回撤30.71%
'5天,小到大' 收益率7.36%, 最大回撤10.47%
可见弹性按照单天弹性值排名,买入最大的10只,无论按1天还是5天轮动,今天收益率是亏损的;
可见弹性按照单天弹性值排名,买入最小的10只,无论按1天还是5天轮动,今天收益率是盈利的;
如果对数据有疑问,可以到公众号后台留言~ 查看全部
https://t.zsxq.com/08779XPlk
的数据和代码,修改原来的代码
df=df.sort_values('税前收益率',ascending=False)
改为
df=df.sort_values('弹性',ascending=False) # 倒序
df=df.sort_values('弹性',ascending=True) # 正序
还有这里:
df = pd.read_excel(full_path)
df['税前收益率'] = df['税前收益率'].map(convert_float)
df['转股价格']=df['转股价格'].astype(float)
df=df[['转债代码','转债名称','转债价格','税前收益率']]
改为:
df['弹性'] = df['弹性'].map(convert_float)
df['转股价格']=df['转股价格'].astype(float)
df=df[['转债代码','转债名称','转债价格','弹性']]
如果修改持有个数,天数,修改HOLD_NUM ,和FREQ 即可
得到下面的图:
点击查看大图
"1天,大到小" 收益率 -30%,最大回撤34%
"1天,小到大" 收益率15.74%,最大回撤10.43%
'5天,大到小' 收益率-25%,最大回撤30.71%
'5天,小到大' 收益率7.36%, 最大回撤10.47%
可见弹性按照单天弹性值排名,买入最大的10只,无论按1天还是5天轮动,今天收益率是亏损的;
可见弹性按照单天弹性值排名,买入最小的10只,无论按1天还是5天轮动,今天收益率是盈利的;
如果对数据有疑问,可以到公众号后台留言~
可转债到期收益率因子回测 YTM回测 vs 双低 低溢价 低价策略
可转债 • 李魔佛 发表了文章 • 0 个评论 • 1690 次浏览 • 2022-11-26 16:51
自从优矿转为收费后,基本就没有登录过了。现在的回测在本地进行了,宁稳网的可转债数据上有YTM这因子数据,所以这次使用宁稳网的数据回测。也不使用什么第三方框架了,直接手写回测,模拟交易过程。
逻辑就是按照交易日期,读取所有excel数据。保存到一个dataframe里面,然后按照日期对YTM排名。 选出排名N名的进行买入,掉出N名的进行卖出。
数据源
采用宁稳的全表数据,里面有YTM因子
YTM收益率曲线
本地使用python编写回测代码,纯手工,不使用第三方框架。 平时我也多次力荐大家手写,别依赖那些第三方框架,什么vnpy,backtrade,一是特别难用,数据要适配,二是不好调试,除非你对它们的源码特别熟悉。本回测代码和宁稳数据放在个人知识星球,大部分人其实只关心回测结果就够了。
下图是2022年1月1日至11月25日的回测数据。持有10个标的,红色的是1天调仓,蓝色的是5天调仓
5天轮动,2022年的收益率为4.29%,最大回撤6.98% 。
1天轮动,2022年的收益率为9.33%,最大回撤5.32% 。
1天轮动的整体收益率要比5天轮动的高5个点,并且最大回撤也小一点。
持仓日志
从持仓以及调仓日志来看,买入的大部分是低价转债,且部分也是之前有瑕疵,爆过雷的转债。
高YTM轮动 vs 双低,低溢价,低价
接着对比一下几个常规的转债策略,双低,低溢价,低价。
回测条件相同,起始时间2022-01-01,结束时间2022-11-25。
持有10只,5天轮动。
在今年的可转债偏弱的行情下,高YTM轮动在这4个策略里面的收益率是最高的。
低溢价一如既然的高波动,一会ICU,一会蹦迪。但笔者觉得跌到前期最大回撤的位置,低溢价可以考虑介入的。
YTM和低价格的今年回测收益率接近,YTM高了一个点左右,最大回撤接近。 而低溢价还在回撤的途中,目前今年的收益率为-25%,如果轮动频率高一些,低溢价收益率会高一些,强赎的转债基本会被轮入低溢价标的,因为最近半年强赎后的转债像进入了死亡螺旋一样,正股转债一起跌;因此排除强赎转债会对低溢价收益率有不少的提升。
完整代码以及数据请开通星球查收。
查看全部
自从优矿转为收费后,基本就没有登录过了。现在的回测在本地进行了,宁稳网的可转债数据上有YTM这因子数据,所以这次使用宁稳网的数据回测。也不使用什么第三方框架了,直接手写回测,模拟交易过程。
逻辑就是按照交易日期,读取所有excel数据。保存到一个dataframe里面,然后按照日期对YTM排名。 选出排名N名的进行买入,掉出N名的进行卖出。
数据源
采用宁稳的全表数据,里面有YTM因子
YTM收益率曲线
本地使用python编写回测代码,纯手工,不使用第三方框架。 平时我也多次力荐大家手写,别依赖那些第三方框架,什么vnpy,backtrade,一是特别难用,数据要适配,二是不好调试,除非你对它们的源码特别熟悉。本回测代码和宁稳数据放在个人知识星球,大部分人其实只关心回测结果就够了。
下图是2022年1月1日至11月25日的回测数据。持有10个标的,红色的是1天调仓,蓝色的是5天调仓
5天轮动,2022年的收益率为4.29%,最大回撤6.98% 。
1天轮动,2022年的收益率为9.33%,最大回撤5.32% 。
1天轮动的整体收益率要比5天轮动的高5个点,并且最大回撤也小一点。
持仓日志
从持仓以及调仓日志来看,买入的大部分是低价转债,且部分也是之前有瑕疵,爆过雷的转债。
高YTM轮动 vs 双低,低溢价,低价
接着对比一下几个常规的转债策略,双低,低溢价,低价。
回测条件相同,起始时间2022-01-01,结束时间2022-11-25。
持有10只,5天轮动。
在今年的可转债偏弱的行情下,高YTM轮动在这4个策略里面的收益率是最高的。
低溢价一如既然的高波动,一会ICU,一会蹦迪。但笔者觉得跌到前期最大回撤的位置,低溢价可以考虑介入的。
YTM和低价格的今年回测收益率接近,YTM高了一个点左右,最大回撤接近。 而低溢价还在回撤的途中,目前今年的收益率为-25%,如果轮动频率高一些,低溢价收益率会高一些,强赎的转债基本会被轮入低溢价标的,因为最近半年强赎后的转债像进入了死亡螺旋一样,正股转债一起跌;因此排除强赎转债会对低溢价收益率有不少的提升。
完整代码以及数据请开通星球查收。
Ptrade多策略如何编写?
Ptrade • 李魔佛 发表了文章 • 0 个评论 • 1755 次浏览 • 2022-11-16 11:33
系统自带的读取仓位函数需要你重写。
目前使用一个类来管理仓位:
初始化部分:class PositionManager():
def __init__(self):
if SINGLE_FACTOR not in [1, 2, 3, 4]:
raise ValueError('策略数字有误')
self.strategy = SINGLE_FACTOR
NOTEBOOK_PATH = '/home/fly/notebook/'
# self.filename = NOTEBOOK_PATH + 'S-{}.txt'.format(self.strategy)
self.filename = NOTEBOOK_PATH + personal_define_filename
self.portfolio = self.read()
log.info(self.portfolio)
self.write()
def init_data(self):
js_data = {
'cash': CASH,
'strategy': self.strategy,
'positions': ,
'portfolio_value': None,
'positions_value': None,
'capital_used': None,
'start_date': datetime.datetime.now().strftime('%Y%m%d%H%M%S'),
'current_day': 0,
}
数据需要收盘后保存到文件,数据库也行;不过考虑到大部分ptrade(除了国盛,需要开通的可以联系公众号:可转债量化分析)都没有连接外网功能,所以最简单的方式就是写入文件,纯粹的文本文件。
目前笔者使用json存储
点击查看大图
这样存储有一个好处,就是如果你想中途修改策略持仓,可以直接修改这个文本文件。比如你的策略不小心买入了一只强赎的转债,你想手动卖掉,那么很简单,你只要在这个json文件里面把对应的持仓删除,再把他的市值加到可用资金里面去即可。 用法是相当灵活。
需要完整代码或者指导的朋友可以关注下面公众号和知识星球。
查看全部
系统自带的读取仓位函数需要你重写。
目前使用一个类来管理仓位:
初始化部分:
class PositionManager():
def __init__(self):
if SINGLE_FACTOR not in [1, 2, 3, 4]:
raise ValueError('策略数字有误')
self.strategy = SINGLE_FACTOR
NOTEBOOK_PATH = '/home/fly/notebook/'
# self.filename = NOTEBOOK_PATH + 'S-{}.txt'.format(self.strategy)
self.filename = NOTEBOOK_PATH + personal_define_filename
self.portfolio = self.read()
log.info(self.portfolio)
self.write()
def init_data(self):
js_data = {
'cash': CASH,
'strategy': self.strategy,
'positions': ,
'portfolio_value': None,
'positions_value': None,
'capital_used': None,
'start_date': datetime.datetime.now().strftime('%Y%m%d%H%M%S'),
'current_day': 0,
}
数据需要收盘后保存到文件,数据库也行;不过考虑到大部分ptrade(除了国盛,需要开通的可以联系公众号:可转债量化分析)都没有连接外网功能,所以最简单的方式就是写入文件,纯粹的文本文件。
目前笔者使用json存储
点击查看大图
这样存储有一个好处,就是如果你想中途修改策略持仓,可以直接修改这个文本文件。比如你的策略不小心买入了一只强赎的转债,你想手动卖掉,那么很简单,你只要在这个json文件里面把对应的持仓删除,再把他的市值加到可用资金里面去即可。 用法是相当灵活。
需要完整代码或者指导的朋友可以关注下面公众号和知识星球。
Ptrade拆单 分批下单 python代码 可转债/股票
Ptrade • 李魔佛 发表了文章 • 0 个评论 • 1788 次浏览 • 2022-11-10 00:35
所以如果资金量大,就需要拆单操作。
交易代码部分,如果设置 SPLIT_ORDER_ENABLE = True 即进行拆单操作:
在交易部分:(省略部分不相关代码) if SPLIT_ORDER_ENABLE:
split_order(code, BUY_DIRECTION, amount)
else:
buy_price = round(buy_price, 3)
ret = order(code, amount, limit_price=buy_price)BUY_DIRECTION 为买,值是1,一个常量
SELL_DIRECTION为卖,值为-1,也是一个常量,传入拆单函数中
拆单函数提取出来:def split_order(code, direction, target_count):
'''
拆单
:param code: 股票代码
:param direction: 买:1 卖:-1
:param target_count: 总共要卖的股数
:return:
'''
count = int(target_count / EACH_ORDER_COUNT)
# 例如:560张, 200 张一单, 2次 + 最后一次160 张
remain_count = target_count % EACH_ORDER_COUNT
for i in range(count):
ret = order(code, direction * EACH_ORDER_COUNT)
time.sleep(SPLIT_ORDER_DELAY) # 拆开的单子等待一个时间,再下另外一单
if direction == 1: # 买的时候需要整数,卖则不需要
remain_count = int(remain_count / 10) * 10
if remain_count > 0:
ret = order(code, direction * remain_count)常用的操作都类似,写成模块方便下次调用。写多了就是套模块。
在可转债实盘中,拆单后每笔下单200张,就是每次200张下一次单,因为有可能不是马上成交,所以还需要一段等待延时,再去下单;不然你的拆单也变得没有意义,因为委托那里都是挂的你的单,并没有被消化掉。
可以看到实盘交易日志,即使拆单为200张一笔,外加一段延时,成交张数也是稀稀拉拉的,出现了不少的部分成交;也就是一次连200张都未成交完成;一笔200张的,部分成交10张,20张,都是有可能的,这也足以说明,可转债的流动性问题,滑点是很难被忽略的。
当然,这是轮动调仓的时候,金额较大的情况下拆单。如果高频交易下就不能这么操作了。
具体怎么写,可以关注个人公众号与知识星球。
知识星球原文:
如需要代写量化策略实盘代码,可以到个人公众号【可转债量化分析】后台留言。
查看全部
所以如果资金量大,就需要拆单操作。
交易代码部分,如果设置 SPLIT_ORDER_ENABLE = True 即进行拆单操作:
在交易部分:(省略部分不相关代码)
if SPLIT_ORDER_ENABLE:BUY_DIRECTION 为买,值是1,一个常量
split_order(code, BUY_DIRECTION, amount)
else:
buy_price = round(buy_price, 3)
ret = order(code, amount, limit_price=buy_price)
SELL_DIRECTION为卖,值为-1,也是一个常量,传入拆单函数中
拆单函数提取出来:
def split_order(code, direction, target_count):常用的操作都类似,写成模块方便下次调用。写多了就是套模块。
'''
拆单
:param code: 股票代码
:param direction: 买:1 卖:-1
:param target_count: 总共要卖的股数
:return:
'''
count = int(target_count / EACH_ORDER_COUNT)
# 例如:560张, 200 张一单, 2次 + 最后一次160 张
remain_count = target_count % EACH_ORDER_COUNT
for i in range(count):
ret = order(code, direction * EACH_ORDER_COUNT)
time.sleep(SPLIT_ORDER_DELAY) # 拆开的单子等待一个时间,再下另外一单
if direction == 1: # 买的时候需要整数,卖则不需要
remain_count = int(remain_count / 10) * 10
if remain_count > 0:
ret = order(code, direction * remain_count)
在可转债实盘中,拆单后每笔下单200张,就是每次200张下一次单,因为有可能不是马上成交,所以还需要一段等待延时,再去下单;不然你的拆单也变得没有意义,因为委托那里都是挂的你的单,并没有被消化掉。
可以看到实盘交易日志,即使拆单为200张一笔,外加一段延时,成交张数也是稀稀拉拉的,出现了不少的部分成交;也就是一次连200张都未成交完成;一笔200张的,部分成交10张,20张,都是有可能的,这也足以说明,可转债的流动性问题,滑点是很难被忽略的。
当然,这是轮动调仓的时候,金额较大的情况下拆单。如果高频交易下就不能这么操作了。
具体怎么写,可以关注个人公众号与知识星球。
知识星球原文:
如需要代写量化策略实盘代码,可以到个人公众号【可转债量化分析】后台留言。
Ptrade里写策略坑比较多的地方(一)
Ptrade • 李魔佛 发表了文章 • 0 个评论 • 1861 次浏览 • 2022-11-03 11:26
1. 后缀符号不统一
这个是天煞的产品涉及的问题。 好好地代码后缀,比如 深圳市场的 有时候出现 300333.SZ , 有时候结构体里面却会是 300333.XSHE,
比如返回的orders 字典,里面用的是 00333.XSHE,而仓位的结构体 position 里面用的缺失 .sz
类似这样的问题在很多函数里面都有。
2. 部分成交 的主推函数
如果一个订单,部分成交,会先触发部分成交主推; 然后最后一个部分成交,反而会触发全部成交主推。
细想,似乎也是合理的,只是,你在全部成交里面返回的成交数量,实际只是最后一次部分成交的量。
3. 想到再写
更多更新 可以参看个人知识星球或者公众号。
查看全部
1. 后缀符号不统一
这个是天煞的产品涉及的问题。 好好地代码后缀,比如 深圳市场的 有时候出现 300333.SZ , 有时候结构体里面却会是 300333.XSHE,
比如返回的orders 字典,里面用的是 00333.XSHE,而仓位的结构体 position 里面用的缺失 .sz
类似这样的问题在很多函数里面都有。
2. 部分成交 的主推函数
如果一个订单,部分成交,会先触发部分成交主推; 然后最后一个部分成交,反而会触发全部成交主推。
细想,似乎也是合理的,只是,你在全部成交里面返回的成交数量,实际只是最后一次部分成交的量。
3. 想到再写
更多更新 可以参看个人知识星球或者公众号。
Ptrade量化交易之 拆单买入卖出操作
Ptrade • 李魔佛 发表了文章 • 0 个评论 • 1982 次浏览 • 2022-09-30 16:20
注:代码里面针对的是可转债交易,股票的话把这一行:
remain_count=int(remain_count/10)*10 改为
remain_count=int(remain_count/100)*100 就可以了
股票100股整数倍买,转债是10张倍数买。
code,direction,target_count : 第一个代码,第二个买卖方向,第三个是目标数目
each_order_count = 100 # 每单的股数,张数
def split_order(code,direction,target_count):
'''
拆单
:param code: 股票代码
:param direction: 买:1 卖:-1
:param target_count: 总共要卖的股数
:return:
'''
SPLIT_ORDER_DELAY =1
each_order_count = 100 # 每单的股数,张数
count = int(target_count/each_order_count)
remain_count = target_count%each_order_count
for i in range(count):
ret = order(code,direction*each_order_count)
time.sleep(SPLIT_ORDER_DELAY)
if direction==1:
remain_count=int(remain_count/10)*10 # 可转债买的时候只能10的倍数交易,
if remain_count>0:
ret = order(code,direction*each_order_count)
更多ptrade实盘代码,欢迎关注个人知识星球 查看全部
注:代码里面针对的是可转债交易,股票的话把这一行:
remain_count=int(remain_count/10)*10 改为
remain_count=int(remain_count/100)*100 就可以了
股票100股整数倍买,转债是10张倍数买。
code,direction,target_count : 第一个代码,第二个买卖方向,第三个是目标数目
each_order_count = 100 # 每单的股数,张数
def split_order(code,direction,target_count):
'''
拆单
:param code: 股票代码
:param direction: 买:1 卖:-1
:param target_count: 总共要卖的股数
:return:
'''
SPLIT_ORDER_DELAY =1
each_order_count = 100 # 每单的股数,张数
count = int(target_count/each_order_count)
remain_count = target_count%each_order_count
for i in range(count):
ret = order(code,direction*each_order_count)
time.sleep(SPLIT_ORDER_DELAY)
if direction==1:
remain_count=int(remain_count/10)*10 # 可转债买的时候只能10的倍数交易,
if remain_count>0:
ret = order(code,direction*each_order_count)
更多ptrade实盘代码,欢迎关注个人知识星球
Ptrade挂单后撤单函数 实现
Ptrade • 李魔佛 发表了文章 • 0 个评论 • 1772 次浏览 • 2022-09-29 16:40
所以也需要有撤单,重新挂的动作。
order(code,amount) # 买入或者卖出
time.sleep(CANCEL_ORDER_TIME) # 等待片刻
cancel_order_reorder(context) # 进入撤单函数
中间需要有个等待时间。
1。 买入后,并不一定买上成交,需要一点时间消化,尤其是量大的单子,得要慢慢吃掉。
2。 成交回报并不是实时的。记住,ptrade的成交回报是有个延时,约9秒。 也就是你成交后,立即调用get_positions函数 看看你持仓,是无法看到你刚刚买入的股票数据的。
比如:
def initialize(context):
g.security = '600570.SS'
set_universe(g.security)
def handle_data(context, data):
order(g.security,100)
position = get_position(g.security)
log.info(position)这样你是无法获取的你的持仓的。
下面的示例代码,获取还在挂单的委托单子,然后逐个撤销,重新按照最新的市价下单。
def cancel_order_reorder(context):
'''
取消订单,重新下单
:return:
'''
open_orders = get_open_orders()
for _order in open_orders:
_id = _order.id
amount=_order.amount
filled=_order.filled
next_amount = amount-filled
code = _order.symbol
log.info('撤单{} - {}'.format(code,next_amount))
cancel_order(_id)
# time.sleep(1)
log.info('重新下单{} 数量{}'.format(code,next_amount))
order(code,next_amount)
后话:
很多投资者没有编程基础,学习起来会很吃力,耗费大量的时间,得不偿失。写出来的代码也是很多bug而不自知。等到实盘了用真金白银 得到了教训,还不如早期跟一两个人有经验的人学习,甚至找个代写代码就好了。
当然,能力超强,精力旺盛的大神就无视了,这个人折腾起来什么都可以搞得有模有样。
查看全部
所以也需要有撤单,重新挂的动作。
order(code,amount) # 买入或者卖出
time.sleep(CANCEL_ORDER_TIME) # 等待片刻
cancel_order_reorder(context) # 进入撤单函数
中间需要有个等待时间。
1。 买入后,并不一定买上成交,需要一点时间消化,尤其是量大的单子,得要慢慢吃掉。
2。 成交回报并不是实时的。记住,ptrade的成交回报是有个延时,约9秒。 也就是你成交后,立即调用get_positions函数 看看你持仓,是无法看到你刚刚买入的股票数据的。
比如:
def initialize(context):这样你是无法获取的你的持仓的。
g.security = '600570.SS'
set_universe(g.security)
def handle_data(context, data):
order(g.security,100)
position = get_position(g.security)
log.info(position)
下面的示例代码,获取还在挂单的委托单子,然后逐个撤销,重新按照最新的市价下单。
def cancel_order_reorder(context):
'''
取消订单,重新下单
:return:
'''
open_orders = get_open_orders()
for _order in open_orders:
_id = _order.id
amount=_order.amount
filled=_order.filled
next_amount = amount-filled
code = _order.symbol
log.info('撤单{} - {}'.format(code,next_amount))
cancel_order(_id)
# time.sleep(1)
log.info('重新下单{} 数量{}'.format(code,next_amount))
order(code,next_amount)
后话:
很多投资者没有编程基础,学习起来会很吃力,耗费大量的时间,得不偿失。写出来的代码也是很多bug而不自知。等到实盘了用真金白银 得到了教训,还不如早期跟一两个人有经验的人学习,甚至找个代写代码就好了。
当然,能力超强,精力旺盛的大神就无视了,这个人折腾起来什么都可以搞得有模有样。
可转债 最新的不下修转股价 名单 持续更新
可转债 • 李魔佛 发表了文章 • 0 个评论 • 1429 次浏览 • 2022-09-28 11:24
数据更新至2022年9月24日。
如果可转债公布了某个时间段内的不下修转股价,在溢价率很高的情况下,那么在该时间段内,其溢价率回归的办法只剩拉正股了,而在这上涨阶段中,站在概率面,持有转债的涨幅是会大幅低于正股的。
现在市场的情况也是这样,如果可转债公布不下修,第二天的开盘会以低开反映出来。
数据来源:巨潮。
文末附获取原始数据方法。
点击查看大图
点击查看大图
点击查看大图
链接: https://pan.baidu.com/s/1TVAR3nftALTWR0VTnagVhg 提取码: 5wde
更多公众号文章代码与数据,可输入:帮助
查看全部
数据更新至2022年9月24日。
如果可转债公布了某个时间段内的不下修转股价,在溢价率很高的情况下,那么在该时间段内,其溢价率回归的办法只剩拉正股了,而在这上涨阶段中,站在概率面,持有转债的涨幅是会大幅低于正股的。
现在市场的情况也是这样,如果可转债公布不下修,第二天的开盘会以低开反映出来。
数据来源:巨潮。
文末附获取原始数据方法。
点击查看大图
点击查看大图
点击查看大图
链接: https://pan.baidu.com/s/1TVAR3nftALTWR0VTnagVhg 提取码: 5wde
更多公众号文章代码与数据,可输入:帮助
Ptrade在一个循环事件里 能否不断获取股票实时价格?
Ptrade • 李魔佛 发表了文章 • 0 个评论 • 1741 次浏览 • 2022-09-28 10:53
如:
run_daily(context, get_price, '09:44')
定义的get_price 函数,
然后get_price函数里面有一个死循环,不断地获取价格。
因为ptrade的行情切片 是每3秒更新的一次的,如果行情没更新,那么当前的价格也是过去最近的一个3s的价格。
现在问题是,在一个固定的时间里面,不断地读取价格函数,能获取到最新的价格吗 ?
我们用代码实践一下:
import time
def initialize(context):
# 初始化策略
run_daily(context, get_price, '09:44')
def handle_data(context, data):
pass
def get_price(context):
for i in range(10):
target_list =['113585.SS','123057.SZ']
bond_gear_price_target = get_gear_price(target_list)
for code in target_list:
price = bond_gear_price_target[code]['offer_grp'][1][0]
log.info('code: {} price {} '.format(code,price))
time.sleep(1)
输出的结果:
2022-09-28 10:31:00 - INFO - code: 113585.SS price 169.147
2022-09-28 10:31:00 - INFO - code: 128053.SZ price 144.785
2022-09-28 10:31:01 - INFO - code: 113585.SS price 169.147
2022-09-28 10:31:01 - INFO - code: 128053.SZ price 144.785
2022-09-28 10:31:02 - INFO - code: 113585.SS price 169.156
2022-09-28 10:31:02 - INFO - code: 128053.SZ price 144.785
2022-09-28 10:31:03 - INFO - code: 113585.SS price 169.156
2022-09-28 10:31:03 - INFO - code: 128053.SZ price 144.8
2022-09-28 10:31:04 - INFO - code: 113585.SS price 169.199
2022-09-28 10:31:04 - INFO - code: 128053.SZ price 144.8
2022-09-28 10:31:05 - INFO - code: 113585.SS price 169.199
2022-09-28 10:31:05 - INFO - code: 128053.SZ price 144.8
2022-09-28 10:31:06 - INFO - code: 113585.SS price 169.199
2022-09-28 10:31:06 - INFO - code: 128053.SZ price 144.785
2022-09-28 10:31:07 - INFO - code: 113585.SS price 169.068
2022-09-28 10:31:07 - INFO - code: 128053.SZ price 144.785
2022-09-28 10:31:08 - INFO - code: 113585.SS price 169.068
2022-09-28 10:31:08 - INFO - code: 128053.SZ price 144.785
2022-09-28 10:31:09 - INFO - code: 113585.SS price 169.068
2022-09-28 10:31:09 - INFO - code: 128053.SZ price 144.746
2022-09-28 10:31:10 - INFO - code: 113585.SS price 169.066
2022-09-28 10:31:10 - INFO - code: 128053.SZ price 144.746
2022-09-28 10:31:11 - INFO - code: 113585.SS price 169.066
2022-09-28 10:31:11 - INFO - code: 128053.SZ price 144.746
2022-09-28 10:31:12 - INFO - code: 113585.SS price 169.066
2022-09-28 10:31:12 - INFO - code: 128053.SZ price 144.785
2022-09-28 10:31:13 - INFO - code: 113585.SS price 169.068
2022-09-28 10:31:13 - INFO - code: 128053.SZ price 144.785
2022-09-28 10:31:14 - INFO - code: 113585.SS price 169.068
2022-09-28 10:31:14 - INFO - code: 128053.SZ price 144.785
2022-09-28 10:31:15 - INFO - code: 113585.SS price 169.068
2022-09-28 10:31:15 - INFO - code: 128053.SZ price 144.692
2022-09-28 10:31:16 - INFO - code: 113585.SS price 169.068
2022-09-28 10:31:16 - INFO - code: 128053.SZ price 144.692
2022-09-28 10:31:17 - INFO - code: 113585.SS price 169.068
2022-09-28 10:31:17 - INFO - code: 128053.SZ price 144.692
2022-09-28 10:31:18 - INFO - code: 113585.SS price 169.068
2022-09-28 10:31:18 - INFO - code: 128053.SZ price 144.691
2022-09-28 10:31:19 - INFO - code: 113585.SS price 169.062
2022-09-28 10:31:19 - INFO - code: 128053.SZ price 144.691
2022-09-28 10:31:20 - INFO - code: 113585.SS price 169.062
为了更为直观,过滤掉另外一只可转债
只保留一只
2022-09-28 10:31:00 - INFO - code: 113585.SS price 169.147
2022-09-28 10:31:01 - INFO - code: 113585.SS price 169.147
2022-09-28 10:31:02 - INFO - code: 113585.SS price 169.156
2022-09-28 10:31:03 - INFO - code: 113585.SS price 169.156
2022-09-28 10:31:04 - INFO - code: 113585.SS price 169.199
2022-09-28 10:31:05 - INFO - code: 113585.SS price 169.199
2022-09-28 10:31:06 - INFO - code: 113585.SS price 169.199
2022-09-28 10:31:07 - INFO - code: 113585.SS price 169.068
2022-09-28 10:31:08 - INFO - code: 113585.SS price 169.068
2022-09-28 10:31:09 - INFO - code: 113585.SS price 169.068
2022-09-28 10:31:10 - INFO - code: 113585.SS price 169.066
2022-09-28 10:31:11 - INFO - code: 113585.SS price 169.066 可以看到价格也是基本没个3s更新一次。
更多ptrade实盘代码,请常见个人星球。
【可转债追涨杀跌日内T+0,双低 低价 低溢价 规模多因子轮动】
查看全部
如:
run_daily(context, get_price, '09:44')
定义的get_price 函数,
然后get_price函数里面有一个死循环,不断地获取价格。
因为ptrade的行情切片 是每3秒更新的一次的,如果行情没更新,那么当前的价格也是过去最近的一个3s的价格。
现在问题是,在一个固定的时间里面,不断地读取价格函数,能获取到最新的价格吗 ?
我们用代码实践一下:
import time
def initialize(context):
# 初始化策略
run_daily(context, get_price, '09:44')
def handle_data(context, data):
pass
def get_price(context):
for i in range(10):
target_list =['113585.SS','123057.SZ']
bond_gear_price_target = get_gear_price(target_list)
for code in target_list:
price = bond_gear_price_target[code]['offer_grp'][1][0]
log.info('code: {} price {} '.format(code,price))
time.sleep(1)
输出的结果:
2022-09-28 10:31:00 - INFO - code: 113585.SS price 169.147
2022-09-28 10:31:00 - INFO - code: 128053.SZ price 144.785
2022-09-28 10:31:01 - INFO - code: 113585.SS price 169.147
2022-09-28 10:31:01 - INFO - code: 128053.SZ price 144.785
2022-09-28 10:31:02 - INFO - code: 113585.SS price 169.156
2022-09-28 10:31:02 - INFO - code: 128053.SZ price 144.785
2022-09-28 10:31:03 - INFO - code: 113585.SS price 169.156
2022-09-28 10:31:03 - INFO - code: 128053.SZ price 144.8
2022-09-28 10:31:04 - INFO - code: 113585.SS price 169.199
2022-09-28 10:31:04 - INFO - code: 128053.SZ price 144.8
2022-09-28 10:31:05 - INFO - code: 113585.SS price 169.199
2022-09-28 10:31:05 - INFO - code: 128053.SZ price 144.8
2022-09-28 10:31:06 - INFO - code: 113585.SS price 169.199
2022-09-28 10:31:06 - INFO - code: 128053.SZ price 144.785
2022-09-28 10:31:07 - INFO - code: 113585.SS price 169.068
2022-09-28 10:31:07 - INFO - code: 128053.SZ price 144.785
2022-09-28 10:31:08 - INFO - code: 113585.SS price 169.068
2022-09-28 10:31:08 - INFO - code: 128053.SZ price 144.785
2022-09-28 10:31:09 - INFO - code: 113585.SS price 169.068
2022-09-28 10:31:09 - INFO - code: 128053.SZ price 144.746
2022-09-28 10:31:10 - INFO - code: 113585.SS price 169.066
2022-09-28 10:31:10 - INFO - code: 128053.SZ price 144.746
2022-09-28 10:31:11 - INFO - code: 113585.SS price 169.066
2022-09-28 10:31:11 - INFO - code: 128053.SZ price 144.746
2022-09-28 10:31:12 - INFO - code: 113585.SS price 169.066
2022-09-28 10:31:12 - INFO - code: 128053.SZ price 144.785
2022-09-28 10:31:13 - INFO - code: 113585.SS price 169.068
2022-09-28 10:31:13 - INFO - code: 128053.SZ price 144.785
2022-09-28 10:31:14 - INFO - code: 113585.SS price 169.068
2022-09-28 10:31:14 - INFO - code: 128053.SZ price 144.785
2022-09-28 10:31:15 - INFO - code: 113585.SS price 169.068
2022-09-28 10:31:15 - INFO - code: 128053.SZ price 144.692
2022-09-28 10:31:16 - INFO - code: 113585.SS price 169.068
2022-09-28 10:31:16 - INFO - code: 128053.SZ price 144.692
2022-09-28 10:31:17 - INFO - code: 113585.SS price 169.068
2022-09-28 10:31:17 - INFO - code: 128053.SZ price 144.692
2022-09-28 10:31:18 - INFO - code: 113585.SS price 169.068
2022-09-28 10:31:18 - INFO - code: 128053.SZ price 144.691
2022-09-28 10:31:19 - INFO - code: 113585.SS price 169.062
2022-09-28 10:31:19 - INFO - code: 128053.SZ price 144.691
2022-09-28 10:31:20 - INFO - code: 113585.SS price 169.062
为了更为直观,过滤掉另外一只可转债
只保留一只
2022-09-28 10:31:00 - INFO - code: 113585.SS price 169.147可以看到价格也是基本没个3s更新一次。
2022-09-28 10:31:01 - INFO - code: 113585.SS price 169.147
2022-09-28 10:31:02 - INFO - code: 113585.SS price 169.156
2022-09-28 10:31:03 - INFO - code: 113585.SS price 169.156
2022-09-28 10:31:04 - INFO - code: 113585.SS price 169.199
2022-09-28 10:31:05 - INFO - code: 113585.SS price 169.199
2022-09-28 10:31:06 - INFO - code: 113585.SS price 169.199
2022-09-28 10:31:07 - INFO - code: 113585.SS price 169.068
2022-09-28 10:31:08 - INFO - code: 113585.SS price 169.068
2022-09-28 10:31:09 - INFO - code: 113585.SS price 169.068
2022-09-28 10:31:10 - INFO - code: 113585.SS price 169.066
2022-09-28 10:31:11 - INFO - code: 113585.SS price 169.066
更多ptrade实盘代码,请常见个人星球。
【可转债追涨杀跌日内T+0,双低 低价 低溢价 规模多因子轮动】
2022年上半年 顶流基金亏损排行榜
股票 • 绫波丽 发表了文章 • 0 个评论 • 1267 次浏览 • 2022-09-16 12:49
太惨了。。。。
论绝对金额,亏损最大的是蔡经理,哦不,是蔡狗。
然后就是谢治宇,ikun。。
ptrade回测和实盘支持可转债日内tick/分时吗?
可转债 • 李魔佛 发表了文章 • 0 个评论 • 2064 次浏览 • 2022-07-25 07:19
比如下面的部分代码片段,是用于导出可转债的日内分时数据的。最低颗粒,按照一分钟k线获取。 ptrade里面能够获取到的最小频率单位。
def initialize(context):
# 初始化策略
g.code_mapper = date_code_mapper()
log.info(g.code_mapper)
g.error_set=set()
def last_n_day(date,n,origin_fmt,target_fmt):
return (datetime.datetime.strptime(date, origin_fmt) - datetime.timedelta(days=n)).strftime(target_fmt)
def post_fix(code):
return code + '.SZ' if code.startswith('12') else code + '.SS'
def handle_data(context, data):
date=context.blotter.current_dt.strftime('%Y%m%d')
if date not in g.code_mapper:
return
security_list=g.code_mapper.get(date)
for code in security_list:
code=post_fix(code)
try:
df = get_history(1, frequency='1m', field=['open' ,'high','low','close'], security_list=code, fq='pre',include=False)
except Exception as e:
if code not in g.error_set:
log.info(e)
log.info('代码获取数据 出错{}'.format(code))
g.error_set.add(code)
continue
df['ticker']=code
g.result.append(df)
def after_trading_end(context, data):
#engine = DBS
db = DBSelector()
conn = db.get_engine()
date=context.blotter.current_dt.strftime('%Y%m%d%H%M')
if len(g.result)==0:
return
df = pd.concat(g.result)
try:
df.to_sql('minute_info',con=conn,if_exists='append')
except Exception as e:
log.info(e)
g.result=
def before_trading_start(context, data):
g.result=
然后在handle_data里面加入相关的order就可以交易了。(上面的代码主要是保存tick/分时数据到mysql,实际并没有进行交易。) 查看全部
比如下面的部分代码片段,是用于导出可转债的日内分时数据的。最低颗粒,按照一分钟k线获取。 ptrade里面能够获取到的最小频率单位。
def initialize(context):
# 初始化策略
g.code_mapper = date_code_mapper()
log.info(g.code_mapper)
g.error_set=set()
def last_n_day(date,n,origin_fmt,target_fmt):
return (datetime.datetime.strptime(date, origin_fmt) - datetime.timedelta(days=n)).strftime(target_fmt)
def post_fix(code):
return code + '.SZ' if code.startswith('12') else code + '.SS'
def handle_data(context, data):
date=context.blotter.current_dt.strftime('%Y%m%d')
if date not in g.code_mapper:
return
security_list=g.code_mapper.get(date)
for code in security_list:
code=post_fix(code)
try:
df = get_history(1, frequency='1m', field=['open' ,'high','low','close'], security_list=code, fq='pre',include=False)
except Exception as e:
if code not in g.error_set:
log.info(e)
log.info('代码获取数据 出错{}'.format(code))
g.error_set.add(code)
continue
df['ticker']=code
g.result.append(df)
def after_trading_end(context, data):
#engine = DBS
db = DBSelector()
conn = db.get_engine()
date=context.blotter.current_dt.strftime('%Y%m%d%H%M')
if len(g.result)==0:
return
df = pd.concat(g.result)
try:
df.to_sql('minute_info',con=conn,if_exists='append')
except Exception as e:
log.info(e)
g.result=
def before_trading_start(context, data):
g.result=
然后在handle_data里面加入相关的order就可以交易了。(上面的代码主要是保存tick/分时数据到mysql,实际并没有进行交易。)
雪球上的小兵 重仓的融创 现在潜心修炼
绫波丽 发表了文章 • 0 个评论 • 1849 次浏览 • 2022-07-23 12:53
2020年还40多元,现在只有4块多。目前还停牌了,复牌后又是腥风血雨的了。
现在已经跌破他的成本线了,色即是空,空即是色。 到头来,做了一轮大过山车,收获了寂寞。
现在他在雪球上也不怎么发言。 每天就是徒步, 打坐,修行。
不过还是挺喜欢他性格,放荡不羁,敢作敢为,不卖理财基金收割粉丝,也不会说自己在融创高位全部抛了,在地位又买回来这样伪大V的假话。
一个小兵,一个云蒙,都值得尊佩。
查看全部
雪球上卖号的大V 集合【合适新人拉黑的伪大V】 定期更新
股票 • 绫波丽 发表了文章 • 0 个评论 • 1697 次浏览 • 2022-07-04 11:43
小七滚雪球
没啥干货,一堆广告,喜欢拉黑别人。 伪大v的一大特点就是喜欢拉黑别人。
--------------------------------
释老毛 【已被雪球禁言】
查看全部
获取可转债历史分时tick数据 【python】
可转债 • 李魔佛 发表了文章 • 0 个评论 • 3175 次浏览 • 2022-06-25 12:29
对于想做日内回测的朋友,是一件很痛苦的事情。
那么,接下来,本文结束一种通过第三方平台的数据,来把可转债的分时tick数据获取下来,并保存到本地数据库。
2022-07-05 更新:
如果直接拿历史数据,可以拿到1分钟级别的数据,如上图所示。
如果要拿秒级别的,需要实时采集。
笔者使用sqlite做为内存缓存,盘后统一入到mysql中。
如果盘中每隔3秒使用mysql储存,显然会造成不必要的io阻塞(开个线程存数据也是一个方案)。
使用sqlite的时候,设置为memeory模式,速度比存文件要快很多倍。
待续 查看全部
对于想做日内回测的朋友,是一件很痛苦的事情。
那么,接下来,本文结束一种通过第三方平台的数据,来把可转债的分时tick数据获取下来,并保存到本地数据库。
2022-07-05 更新:
如果直接拿历史数据,可以拿到1分钟级别的数据,如上图所示。
如果要拿秒级别的,需要实时采集。
笔者使用sqlite做为内存缓存,盘后统一入到mysql中。
如果盘中每隔3秒使用mysql储存,显然会造成不必要的io阻塞(开个线程存数据也是一个方案)。
使用sqlite的时候,设置为memeory模式,速度比存文件要快很多倍。
待续
美股指数成分股历史数据
股票 • 李魔佛 发表了文章 • 0 个评论 • 1574 次浏览 • 2022-06-06 12:53
找到的都是当前日期的数据。
所以搞了个程序定期获取。
每隔一个月获取一次。
图中数据为纳指100ETF成分股的历史数据
需要数据的可以关注公众号获取
后台回复:纳指100
查看全部
强赎日期计数 excel文件
可转债 • 李魔佛 发表了文章 • 0 个评论 • 1704 次浏览 • 2022-06-04 22:54
代码 名称 当前满足天数 强赎目标数 周期 以公告
113568 新春转债 已公告强赎
127043 川恒转债 暂不强赎
123086 海兰转债 暂不强赎
113548 石英转债 暂不强赎
128107 交科转债 已公告强赎
110071 湖盐转债 12 15 30
128111 中矿转债 暂不强赎
127013 创维转债 14 15 30
123092 天壕转债 暂不强赎
128046 利尔转债 19 20 30
127027 靖远转债 暂不强赎
113541 荣晟转债 公告要强赎
123085 万顺转2 暂不强赎
123083 朗新转债 12 15 30
128128 齐翔转2 暂不强赎
128106 华统转债 暂不强赎
113537 文灿转债 暂不强赎
128095 恩捷转债 已满足强赎条件
127007 湖广转债 暂不强赎
123012 万顺转债 暂不强赎
123057 美联转债 暂不强赎
113585 寿仙转债 暂不强赎
110061 川投转债 暂不强赎
113626 伯特转债 暂不强赎
113025 明泰转债 暂不强赎
123078 飞凯转债 暂不强赎
113567 君禾转债 暂不强赎
128017 金禾转债 暂不强赎
128040 华通转债 暂不强赎
128029 太阳转债 暂不强赎
123073 同和转债 暂不强赎
110055 伊力转债 暂不强赎
113525 台华转债 暂不强赎
123060 苏试转债 暂不强赎
127038 国微转债 暂不强赎
123046 天铁转债 暂不强赎
123098 一品转债 暂不强赎
110074 精达转债 暂不强赎
123114 三角转债 暂不强赎
113051 节能转债 暂不强赎
128140 润建转债 暂不强赎
123071 天能转债 暂不强赎
113027 华钰转债 暂不强赎
128091 新天转债 暂不强赎
128085 鸿达转债 暂不强赎
113620 傲农转债 暂不强赎
123052 飞鹿转债 暂不强赎
118000 嘉元转债 暂不强赎
128082 华锋转债 暂不强赎
128109 楚江转债 暂不强赎
113016 小康转债 暂不强赎
123027 蓝晓转债 暂不强赎
128137 洁美转债 暂不强赎
128101 联创转债 暂不强赎
123031 晶瑞转债 暂不强赎
128078 太极转债 暂不强赎
128030 天康转债 暂不强赎
123034 通光转债 暂不强赎
excel原文件:
http://xximg.30daydo.com/webupload/2022-06-04-redeem-info.xlsx
或者关注公众号:可转债量化分析
后台回复:
强赎20220604 查看全部
代码 名称 当前满足天数 强赎目标数 周期 以公告
113568 新春转债 已公告强赎
127043 川恒转债 暂不强赎
123086 海兰转债 暂不强赎
113548 石英转债 暂不强赎
128107 交科转债 已公告强赎
110071 湖盐转债 12 15 30
128111 中矿转债 暂不强赎
127013 创维转债 14 15 30
123092 天壕转债 暂不强赎
128046 利尔转债 19 20 30
127027 靖远转债 暂不强赎
113541 荣晟转债 公告要强赎
123085 万顺转2 暂不强赎
123083 朗新转债 12 15 30
128128 齐翔转2 暂不强赎
128106 华统转债 暂不强赎
113537 文灿转债 暂不强赎
128095 恩捷转债 已满足强赎条件
127007 湖广转债 暂不强赎
123012 万顺转债 暂不强赎
123057 美联转债 暂不强赎
113585 寿仙转债 暂不强赎
110061 川投转债 暂不强赎
113626 伯特转债 暂不强赎
113025 明泰转债 暂不强赎
123078 飞凯转债 暂不强赎
113567 君禾转债 暂不强赎
128017 金禾转债 暂不强赎
128040 华通转债 暂不强赎
128029 太阳转债 暂不强赎
123073 同和转债 暂不强赎
110055 伊力转债 暂不强赎
113525 台华转债 暂不强赎
123060 苏试转债 暂不强赎
127038 国微转债 暂不强赎
123046 天铁转债 暂不强赎
123098 一品转债 暂不强赎
110074 精达转债 暂不强赎
123114 三角转债 暂不强赎
113051 节能转债 暂不强赎
128140 润建转债 暂不强赎
123071 天能转债 暂不强赎
113027 华钰转债 暂不强赎
128091 新天转债 暂不强赎
128085 鸿达转债 暂不强赎
113620 傲农转债 暂不强赎
123052 飞鹿转债 暂不强赎
118000 嘉元转债 暂不强赎
128082 华锋转债 暂不强赎
128109 楚江转债 暂不强赎
113016 小康转债 暂不强赎
123027 蓝晓转债 暂不强赎
128137 洁美转债 暂不强赎
128101 联创转债 暂不强赎
123031 晶瑞转债 暂不强赎
128078 太极转债 暂不强赎
128030 天康转债 暂不强赎
123034 通光转债 暂不强赎
excel原文件:
http://xximg.30daydo.com/webupload/2022-06-04-redeem-info.xlsx
或者关注公众号:可转债量化分析
后台回复:
强赎20220604
NFT的邀请送藏品 机制
绫波丽 发表了文章 • 0 个评论 • 1197 次浏览 • 2022-05-31 20:16
发现里面就是群加群,互相拉人头,拉够了人头,就会送藏品。
发几张图感受下:
是不是有点传销的感觉?
哈哈。
比如注册下面的二维码:
然后在里面拉10个人,最后送一个未上市的藏品。
等上市后就卖出。 白嫖。
菜鸟入坑,想玩的可以注册白嫖试试,注意不要买,不要买,不要买,这样保证不会亏。
加好友一起研究哈 查看全部
发现里面就是群加群,互相拉人头,拉够了人头,就会送藏品。
发几张图感受下:
是不是有点传销的感觉?
哈哈。
比如注册下面的二维码:
然后在里面拉10个人,最后送一个未上市的藏品。
等上市后就卖出。 白嫖。
菜鸟入坑,想玩的可以注册白嫖试试,注意不要买,不要买,不要买,这样保证不会亏。
加好友一起研究哈
数字藏品NFT 的常见术语 入门必备
绫波丽 发表了文章 • 0 个评论 • 2007 次浏览 • 2022-05-31 11:48
你和NFT老藏家的距离就像是“魔法师”和“麻瓜”之间的差距,那么接下来的20个术语,
一、基础平台和应用软件
1. OS:
Opensea的简称,国际NFT交易平台,是目前全球最多用户使用,市场份额占比最高,交易量最大的NFT交易平台。
2. DC
Discord的简称,功能强大的社群通讯软件。目前绝大部分NFT项目的社群聚集地,项目方通常在DC发布重要通道,进社群推广等等。也是目前许多自发NFT社群的根据地。
3. MetaMask (狐狸钱包):
以太坊生态系统中最受欢迎,用户数量最大的NFT钱包。
二、入门级必备术语
1. White List (白名单):
简称WL,也就是NFT项目的白名单。拥有白名单可以在项目公开发售前提前购买NFT,不用和大批人比网速比手速。尤其是在目前大火项目二级市场价格都偏高,而首发作品都处于上架秒空的情况下,白名单可以是“拿到即赚到”。
2. Blue Chips (蓝筹项目):
原指赌场上的蓝色筹码(赌场桌上最基础的筹码组合是1美元的白色筹码、5美元的红色筹码和25美元的蓝色筹码),蓝色筹码为最具有价值的筹码。延伸到蓝筹项目就是指有价值、建议长期持有的优质NFT。
3. Airdrop (空投):
你的钱包会免费收到一个NFT。目前空投被项目方广泛用来激励长期持有者,在国内大多用“转赠”来代替“空投”用法。
4. Mint(铸造) :
翻译成中文,做名词有薄荷的意思,做动词则是铸造。也就是生成NFT的过程,某一个NFT项目的首次铸造。
5. Gas Fee (燃料费):
燃料费, 也可理解成手续费。从技术层面来说,区块链的每一个节点都是需要维护的,而在以太坊中的每笔交易都需要“矿工们”帮你完成,而你则要支付一定的报酬给矿工们。在海外你需要使用eth等虚拟货币进行支付,而在国内则支持RMB支付。因而Gas Fee 也称作“矿工费”。
6. DAO
Decentralized Autonomous Organization的首字母缩写,也就是“去中心化自治组织”。目前多数NFT项目方都会有自己的DAO, 当你持有该项目的NFT时你就有资质成为DAO成员,DAO群成员拥有对该项目未来发展整体方向的治理权。通过DAO,项目方可以凝聚社群,从而提升项目的发展长驱动力。
7. Roadmap(路线图):
路线图,专门指某个NFT项目计划为社群增加价值而进行的一系列活动。路线图目前已经成为许多藏家入手新项目之前必须考察的一点,一个NFT项目是否拥有路线图在一定程度上决定了该项目的规划能力以及运营能力。
8. Floor Price (地板价):
地板价,指某一NFT项目在交易市场中的最低入手价格,Floor Price的价格越高,代表该NFT项目的整体价格走向明朗。抄底也是指在该项目处于Floor Price的时候大量购入,等待其后续的爆发时机。
三、进阶级术语
1. 10k project
指由约10000个头像组成的NFT项目,10k project 以Bored Ape Yacht Club 以及 Croptofunks 为代表。但值得注意的是,这里的10k并不是固定的,该术语仅指代这一类型的头像合集,并未规定10k 的具体数量。
2. PFP
PFP在不同的行业有着不同的含义,在NFT界的PFP特指[Profile Picture],也就是“个人资料图片”。不少10 projet 都是PFP项目,比如库里购入了Cryptofunk,并将它用作自己社交媒体的头像。目前,PFP仍然广收藏家的欢迎,拥有一个价值极高的NFT,可以彰显自己的财力和投资眼光。
3. FOMO:
Fear of Missing Out的首字母缩写——错失恐惧症,意思是害怕错过的情绪。类似于担心抢不到心仪的商品或怕比别人手慢而盲目跟风下单看到什么买什么。(这里建议大家理智购买藏品,不要过分FOMO)
4. Cope:
跟 FOMO 相反的意思,意识是后悔做了某事。比如因为之前没有在地板价的时候购入,目前价格一路飙升非常的Cope。又比如之前FOMO过头,买了太多现在积仓过多,非常后悔。
5. Apeing (into something):
这里的Apein和任何Ape项目都无关。是指,出于FOMO情绪,大量投入超出自己经济承受能力的资金,也指没有对NFT项目进行一个调研和了解就盲目进行投资。
6. Rug:
Rug pull 的缩写,原意为拉地毯,在NFT行业中延伸指:在项目方或者平台卷款潜逃事件。具体指:NFT项目的创建者争取到投资,然后突然放弃项目,骗取项目投资者的资金。比如Frosties项目创始人因Rug pull就被美国司法部指控欺诈和洗钱。
7.1:1 Art:
意思是指每件作品都是独一无二的(1 of 1),10k project中多数都是1:1 ART,这也是PFP项目容易受到市场追捧的一个原因。
8.McDonald's:
字面意思: 麦当劳。当有人在Discord中说 McDonald's则意味着没钱了,吃土,去搬砖的意思。国内社群更多用美团来代替。 查看全部
你和NFT老藏家的距离就像是“魔法师”和“麻瓜”之间的差距,那么接下来的20个术语,
一、基础平台和应用软件
1. OS:
Opensea的简称,国际NFT交易平台,是目前全球最多用户使用,市场份额占比最高,交易量最大的NFT交易平台。
2. DC
Discord的简称,功能强大的社群通讯软件。目前绝大部分NFT项目的社群聚集地,项目方通常在DC发布重要通道,进社群推广等等。也是目前许多自发NFT社群的根据地。
3. MetaMask (狐狸钱包):
以太坊生态系统中最受欢迎,用户数量最大的NFT钱包。
二、入门级必备术语
1. White List (白名单):
简称WL,也就是NFT项目的白名单。拥有白名单可以在项目公开发售前提前购买NFT,不用和大批人比网速比手速。尤其是在目前大火项目二级市场价格都偏高,而首发作品都处于上架秒空的情况下,白名单可以是“拿到即赚到”。
2. Blue Chips (蓝筹项目):
原指赌场上的蓝色筹码(赌场桌上最基础的筹码组合是1美元的白色筹码、5美元的红色筹码和25美元的蓝色筹码),蓝色筹码为最具有价值的筹码。延伸到蓝筹项目就是指有价值、建议长期持有的优质NFT。
3. Airdrop (空投):
你的钱包会免费收到一个NFT。目前空投被项目方广泛用来激励长期持有者,在国内大多用“转赠”来代替“空投”用法。
4. Mint(铸造) :
翻译成中文,做名词有薄荷的意思,做动词则是铸造。也就是生成NFT的过程,某一个NFT项目的首次铸造。
5. Gas Fee (燃料费):
燃料费, 也可理解成手续费。从技术层面来说,区块链的每一个节点都是需要维护的,而在以太坊中的每笔交易都需要“矿工们”帮你完成,而你则要支付一定的报酬给矿工们。在海外你需要使用eth等虚拟货币进行支付,而在国内则支持RMB支付。因而Gas Fee 也称作“矿工费”。
6. DAO
Decentralized Autonomous Organization的首字母缩写,也就是“去中心化自治组织”。目前多数NFT项目方都会有自己的DAO, 当你持有该项目的NFT时你就有资质成为DAO成员,DAO群成员拥有对该项目未来发展整体方向的治理权。通过DAO,项目方可以凝聚社群,从而提升项目的发展长驱动力。
7. Roadmap(路线图):
路线图,专门指某个NFT项目计划为社群增加价值而进行的一系列活动。路线图目前已经成为许多藏家入手新项目之前必须考察的一点,一个NFT项目是否拥有路线图在一定程度上决定了该项目的规划能力以及运营能力。
8. Floor Price (地板价):
地板价,指某一NFT项目在交易市场中的最低入手价格,Floor Price的价格越高,代表该NFT项目的整体价格走向明朗。抄底也是指在该项目处于Floor Price的时候大量购入,等待其后续的爆发时机。
三、进阶级术语
1. 10k project
指由约10000个头像组成的NFT项目,10k project 以Bored Ape Yacht Club 以及 Croptofunks 为代表。但值得注意的是,这里的10k并不是固定的,该术语仅指代这一类型的头像合集,并未规定10k 的具体数量。
2. PFP
PFP在不同的行业有着不同的含义,在NFT界的PFP特指[Profile Picture],也就是“个人资料图片”。不少10 projet 都是PFP项目,比如库里购入了Cryptofunk,并将它用作自己社交媒体的头像。目前,PFP仍然广收藏家的欢迎,拥有一个价值极高的NFT,可以彰显自己的财力和投资眼光。
3. FOMO:
Fear of Missing Out的首字母缩写——错失恐惧症,意思是害怕错过的情绪。类似于担心抢不到心仪的商品或怕比别人手慢而盲目跟风下单看到什么买什么。(这里建议大家理智购买藏品,不要过分FOMO)
4. Cope:
跟 FOMO 相反的意思,意识是后悔做了某事。比如因为之前没有在地板价的时候购入,目前价格一路飙升非常的Cope。又比如之前FOMO过头,买了太多现在积仓过多,非常后悔。
5. Apeing (into something):
这里的Apein和任何Ape项目都无关。是指,出于FOMO情绪,大量投入超出自己经济承受能力的资金,也指没有对NFT项目进行一个调研和了解就盲目进行投资。
6. Rug:
Rug pull 的缩写,原意为拉地毯,在NFT行业中延伸指:在项目方或者平台卷款潜逃事件。具体指:NFT项目的创建者争取到投资,然后突然放弃项目,骗取项目投资者的资金。比如Frosties项目创始人因Rug pull就被美国司法部指控欺诈和洗钱。
7.1:1 Art:
意思是指每件作品都是独一无二的(1 of 1),10k project中多数都是1:1 ART,这也是PFP项目容易受到市场追捧的一个原因。
8.McDonald's:
字面意思: 麦当劳。当有人在Discord中说 McDonald's则意味着没钱了,吃土,去搬砖的意思。国内社群更多用美团来代替。
讯投QMT python API文档
股票 • 李魔佛 发表了文章 • 0 个评论 • 2795 次浏览 • 2022-04-23 01:35
需要的可以到公众号后台留言获取: qmt接口文档
需要开通qmt可以联系微信: (目前交易费率万一免五)
国金证券如何开通科创板及开通条件是什么
绫波丽 发表了文章 • 0 个评论 • 2145 次浏览 • 2022-04-13 18:53
首先,科创板开通条件主要检查是否满足以下两个硬性要求
1,资金要求
开通之前的20个交易日以上,证券账户及资金账户内的资产日平均不少于50万人民币
2,交易时间要求
该账户证券交易24个月(两年)以上
其次,若满足以上两个要求,即可开通国金证券科创板,步骤如下:
1.登录国金证券账户
2.点击“我的”
3.点击“业务办理“
4.选择点击科创板权限设置"
5.点击”开通科创板“
恰逢目前国金有万一的活动,需要开户的朋友,请扫码联系,备注:国金开户 查看全部