快速开始

分享

阅读 19473

更新 2021-01-13 09:43:05

常见的策略结构主要包括3类,如下图所示。

用户可以根据策略需求选择相应的策略结构,具体可以参考经典策略。

定时任务示例

以下代码的内容是:在每个交易日的14:50:00 市价买入200股浦发银行股票:

# coding=utf-8

from__future__importprint_function,absolute_import

fromgm.apiimport*

definit(context):

# 每天14:50 定时执行algo任务,

# algo执行定时任务函数,只能传context参数

# date_rule执行频率,目前暂时支持1d、1w、1m,其中1w、1m仅用于回测,实时模式1d以上的频率,需要在algo判断日期

# time_rule执行时间, 注意多个定时任务设置同一个时间点,前面的定时任务会被后面的覆盖

schedule(schedule_func=algo,date_rule='1d',time_rule='14:50:00')

defalgo(context):

# 以市价购买200股浦发银行股票, price在市价类型不生效

order_volume(symbol='SHSE.600000',volume=200,side=OrderSide_Buy,

order_type=OrderType_Market,position_effect=PositionEffect_Open,price=0)

# 查看最终的回测结果

defon_backtest_finished(context,indicator):

print(indicator)

if__name__=='__main__':

'''

strategy_id策略ID, 由系统生成

filename文件名, 请与本文件名保持一致

mode运行模式, 实时模式:MODE_LIVE回测模式:MODE_BACKTEST

token绑定计算机的ID, 可在系统设置-密钥管理中生成

backtest_start_time回测开始时间

backtest_end_time回测结束时间

backtest_adjust股票复权方式, 不复权:ADJUST_NONE前复权:ADJUST_PREV后复权:ADJUST_POST

backtest_initial_cash回测初始资金

backtest_commission_ratio回测佣金比例

backtest_slippage_ratio回测滑点比例

'''

run(strategy_id='strategy_id',

filename='main.py',

mode=MODE_BACKTEST,

token='token_id',

backtest_start_time='2020-11-01 08:00:00',

backtest_end_time='2020-11-10 16:00:00',

backtest_adjust=ADJUST_PREV,

backtest_initial_cash=10000000,

backtest_commission_ratio=0.0001,

backtest_slippage_ratio=0.0001)

整个策略需要三步:

设置初始化函数: init , 使用 schedule 函数进行定时任务配置

配置任务, 到点会执行该任务

执行策略

数据事件驱动示例

在用subscribe()接口订阅标的后,后台会返回tick数据或bar数据。每产生一个或一组数据,就会自动触发on_tick()或on_bar()里面的内容执行。比如以下范例代码片段,订阅浦发银行频率为1天和60s的bar数据,每产生一次bar,就会自动触发on_bar()调用,打印获取的bar信息:

# coding=utf-8

from__future__importprint_function,absolute_import

fromgm.apiimport*

definit(context):

# 订阅浦发银行, bar频率为一天和一分钟

# 订阅订阅多个频率的数据,可多次调用subscribe

subscribe(symbols='SHSE.600000',frequency='1d')

subscribe(symbols='SHSE.600000',frequency='60s')

defon_bar(context,bars):

# 打印bar数据

print(bars)

if__name__=='__main__':

'''

strategy_id策略ID, 由系统生成

filename文件名, 请与本文件名保持一致

mode运行模式, 实时模式:MODE_LIVE回测模式:MODE_BACKTEST

token绑定计算机的ID, 可在系统设置-密钥管理中生成

backtest_start_time回测开始时间

backtest_end_time回测结束时间

backtest_adjust股票复权方式, 不复权:ADJUST_NONE前复权:ADJUST_PREV后复权:ADJUST_POST

backtest_initial_cash回测初始资金

backtest_commission_ratio回测佣金比例

backtest_slippage_ratio回测滑点比例

'''

run(strategy_id='strategy_id',

filename='main.py',

mode=MODE_BACKTEST,

token='token_id',

backtest_start_time='2020-11-01 08:00:00',

backtest_end_time='2020-11-10 16:00:00',

backtest_adjust=ADJUST_PREV,

backtest_initial_cash=10000000,

backtest_commission_ratio=0.0001,

backtest_slippage_ratio=0.0001)

整个策略需要三步:

设置初始化函数: init, 使用subscribe函数进行数据订阅

实现一个函数: on_bar, 来根据数据推送进行逻辑处理

执行策略

时间序列数据事件驱动示例

策略订阅代码时指定数据窗口大小与周期, 平台创建数据滑动窗口, 加载初始数据, 并在新的bar到来时自动刷新数据。

on_bar事件触发时, 策略可以取到订阅代码的准备好的时间序列数据。

以下的范例代码片段是一个非常简单的例子, 订阅浦发银行的日线和分钟bar, bar数据的更新会自动触发on_bar的调用, 每次调用context.data来获取最新的50条分钟bar信息:

# coding=utf-8

from__future__importprint_function,absolute_import

fromgm.apiimport*

definit(context):

# 订阅浦发银行, bar频率为一天和一分钟

# 指定数据窗口大小为50

# 订阅订阅多个频率的数据,可多次调用subscribe

subscribe(symbols='SHSE.600000',frequency='1d',count=50)

subscribe(symbols='SHSE.600000',frequency='60s',count=50)

defon_bar(context,bars):

# context.data提取缓存的数据滑窗, 可用于计算指标

# 注意:context.data里的count要小于或者等于subscribe里的count

data=context.data(symbol=bars[0]['symbol'],frequency='60s',count=50,fields='close,bob')

# 打印最后5条bar数据(最后一条是最新的bar)

print(data.tail())

if__name__=='__main__':

'''

strategy_id策略ID, 由系统生成

filename文件名, 请与本文件名保持一致

mode运行模式, 实时模式:MODE_LIVE回测模式:MODE_BACKTEST

token绑定计算机的ID, 可在系统设置-密钥管理中生成

backtest_start_time回测开始时间

backtest_end_time回测结束时间

backtest_adjust股票复权方式, 不复权:ADJUST_NONE前复权:ADJUST_PREV后复权:ADJUST_POST

backtest_initial_cash回测初始资金

backtest_commission_ratio回测佣金比例

backtest_slippage_ratio回测滑点比例

'''

run(strategy_id='strategy_id',

filename='main.py',

mode=MODE_BACKTEST,

token='token_id',

backtest_start_time='2020-11-01 08:00:00',

backtest_end_time='2020-11-10 16:00:00',

backtest_adjust=ADJUST_PREV,

backtest_initial_cash=10000000,

backtest_commission_ratio=0.0001,

backtest_slippage_ratio=0.0001)

整个策略需要三步:

设置初始化函数: init , 使用 subscribe 函数进行数据订阅

实现一个函数: on_bar , 来根据数据推送进行逻辑处理, 通过 context.data 获取数据滑窗

执行策略

多个标的数据事件驱动示例

策略订阅多个标的, 并且要求同一频度的数据到齐后, 再触发事件.

以下的范例代码片段是一个非常简单的例子, 订阅浦发银行和平安银行的日线bar, 在浦发银行bar和平安银行bar到齐后会自动触发on_bar的调用:

# coding=utf-8

from__future__importprint_function,absolute_import

fromgm.apiimport*

definit(context):

# 同时订阅浦发银行和平安银行,数据全部到齐再触发事件

# wait_group是否需要等待全部代码的数据到齐再触发事件

# wait_group_timeout超时时间,从返回第一个bar开始计时, 默认是10s,超时后的bar不再返回

subscribe(symbols='SHSE.600000,SZSE.000001',frequency='1d',count=5,wait_group=True,wait_group_timeout='10s')

defon_bar(context,bars):

forbarinbars:

print(bar['symbol'],bar['eob'])

if__name__=='__main__':

'''

strategy_id策略ID, 由系统生成

filename文件名, 请与本文件名保持一致

mode运行模式, 实时模式:MODE_LIVE回测模式:MODE_BACKTEST

token绑定计算机的ID, 可在系统设置-密钥管理中生成

backtest_start_time回测开始时间

backtest_end_time回测结束时间

backtest_adjust股票复权方式, 不复权:ADJUST_NONE前复权:ADJUST_PREV后复权:ADJUST_POST

backtest_initial_cash回测初始资金

backtest_commission_ratio回测佣金比例

backtest_slippage_ratio回测滑点比例

'''

run(strategy_id='strategy_id',

filename='main.py',

mode=MODE_BACKTEST,

token='token_id',

backtest_start_time='2020-11-01 08:00:00',

backtest_end_time='2020-11-10 16:00:00',

backtest_adjust=ADJUST_PREV,

backtest_initial_cash=10000000,

backtest_commission_ratio=0.0001,

backtest_slippage_ratio=0.0001)

整个策略需要三步:

设置初始化函数: init , 使用 subscribe 函数进行数据订阅多个代码, 设置wait_group=True

实现一个函数: on_bar , 来根据数据推送(多个代码行情)进行逻辑处理

执行策略

选择回测模式/实时模式运行示例

掘金3策略只有两种模式, 回测模式(backtest)与实时模式(live)。在加载策略时指定mode参数。

# coding=utf-8

from__future__importprint_function,absolute_import

fromgm.apiimport*

definit(context):

# 订阅浦发银行的tick

subscribe(symbols='SHSE.600000',frequency='60s')

defon_bar(context,bars):

# 打印当前获取的bar信息

print(bars)

if__name__=='__main__':

# 在终端仿真交易和实盘交易的启动策略按钮默认是实时模式,运行回测默认是回测模式,在外部IDE里运行策略需要修改成对应的运行模式

# mode=MODE_LIVE 实时模式, 回测模式的相关参数不生效

# mode=MODE_BACKTEST 回测模式

'''

strategy_id策略ID, 由系统生成

filename文件名, 请与本文件名保持一致

mode运行模式, 实时模式:MODE_LIVE回测模式:MODE_BACKTEST

token绑定计算机的ID, 可在系统设置-密钥管理中生成

backtest_start_time回测开始时间

backtest_end_time回测结束时间

backtest_adjust股票复权方式, 不复权:ADJUST_NONE前复权:ADJUST_PREV后复权:ADJUST_POST

backtest_initial_cash回测初始资金

backtest_commission_ratio回测佣金比例

backtest_slippage_ratio回测滑点比例

'''

run(strategy_id='strategy_id',

filename='main.py',

mode=MODE_LIVE,

token='token_id',

backtest_start_time='2020-11-01 08:00:00',

backtest_end_time='2020-11-10 16:00:00',

backtest_adjust=ADJUST_PREV,

backtest_initial_cash=10000000,

backtest_commission_ratio=0.0001,

backtest_slippage_ratio=0.0001)

整个策略需要三步:

设置初始化函数: init , 使用 subscribe 函数进行数据订阅代码

实现一个函数: on_bar , 来根据数据推送进行逻辑处理

选择对应模式,执行策略

提取数据研究示例

如果只想提取数据,无需实时数据驱动策略, 无需交易下单可以直接通过数据查询函数来进行查询。

# coding=utf-8

from__future__importprint_function,absolute_import

fromgm.apiimport*

# 可以直接提取数据,掘金终端需要打开,接口取数是通过网络请求的方式,效率一般,行情数据可通过subscribe订阅方式

# 设置token, 查看已有token ID,在用户-密钥管理里获取

set_token('your token_id')

# 查询历史行情, 采用定点复权的方式, adjust指定前复权,adjust_end_time指定复权时间点

data=history(symbol='SHSE.600000',frequency='1d',start_time='2020-01-01 09:00:00',end_time='2020-12-31 16:00:00',

fields='open,high,low,close',adjust=ADJUST_PREV,adjust_end_time='2020-12-31',df=True)

print(data)

整个过程只需要两步:

set_token 设置用户token, 如果token不正确, 函数调用会抛出异常

调用数据查询函数, 直接进行数据查询

回测模式下高速处理数据示例

本示例提供一种在init中预先取全集数据,规整后索引调用的高效数据处理方式,能够避免反复调用服务器接口导致的低效率问题,可根据该示例思路,应用到其他数据接口以提高效率.

# coding=utf-8

from__future__importprint_function,absolute_import

fromgm.apiimport*

definit(context):

# 在init中一次性拿到所有需要的instruments信息

instruments=get_history_instruments(symbols='SZSE.000001,SZSE.000002',start_date=context.backtest_start_time,end_date=context.backtest_end_time)

# 将信息按symbol,date作为key存入字典

context.ins_dict={(i.symbol,i.trade_date.date()):iforiininstruments}

subscribe(symbols='SZSE.000001,SZSE.000002',frequency='1d')

defon_bar(context,bars):

print(context.ins_dict[(bars[0].symbol,bars[0].eob.date())])

if__name__=='__main__':

'''

strategy_id策略ID, 由系统生成

filename文件名, 请与本文件名保持一致

mode运行模式, 实时模式:MODE_LIVE回测模式:MODE_BACKTEST

token绑定计算机的ID, 可在系统设置-密钥管理中生成

backtest_start_time回测开始时间

backtest_end_time回测结束时间

backtest_adjust股票复权方式, 不复权:ADJUST_NONE前复权:ADJUST_PREV后复权:ADJUST_POST

backtest_initial_cash回测初始资金

backtest_commission_ratio回测佣金比例

backtest_slippage_ratio回测滑点比例

'''

run(strategy_id='strategy_id',

filename='main.py',

mode=MODE_BACKTEST,

token='token_id',

backtest_start_time='2020-11-01 08:00:00',

backtest_end_time='2020-11-10 16:00:00',

backtest_adjust=ADJUST_PREV,

backtest_initial_cash=10000000,

backtest_commission_ratio=0.0001,

backtest_slippage_ratio=0.0001)

整个策略需要三步:

设置初始化函数: init , 一次性拿到所有需要的instruments信息, 将信息按symbol,date作为key存入字典, 使用 subscribe 函数进行数据订阅代码

实现一个函数: on_bar , 来根据数据推送进行逻辑处理

执行策略

实时模式下动态参数示例

本示例提供一种通过策略设置动态参数,可在终端界面显示和修改,在不停止策略的情况下手动修改参数传入策略方法.

# coding=utf-8

from__future__importprint_function,absolute_import,unicode_literals

fromgm.apiimport*

importnumpyasnp

importpandasaspd

'''动态参数,是指在不终止策略的情况下,掘金终端UI界面和策略变量做交互,

通过add_parameter在策略代码里设置动态参数,终端UI界面会显示对应参数

'''

definit(context):

# log日志函数,只支持实时模式,在仿真交易和实盘交易界面查看,重启终端log日志会被清除,需要记录到本地可以使用logging库

log(level='info',msg='平安银行信号触发',source='strategy')

# 设置k值阀值作为动态参数

context.k_value=23

# add_parameter设置动态参数函数,只支持实时模式,在仿真交易和实盘交易界面查看,重启终端动态参数会被清除,重新运行策略会重新设置

add_parameter(key='k_value',value=context.k_value,min=0,max=100,name='k值阀值',intro='设置k值阀值',

group='1',readonly=False)

# 设置d值阀值作为动态参数

context.d_value=20

add_parameter(key='d_value',value=context.d_value,min=0,max=100,name='d值阀值',intro='设置d值阀值',

group='2',readonly=False)

print('当前的动态参数有',context.parameters)

# 订阅行情

subscribe(symbols='SZSE.002400',frequency='60s',count=120)

defon_bar(context,bars):

data=context.data(symbol=bars[0]['symbol'],frequency='60s',count=100)

kdj=KDJ(data,9,3,3)

k_value=kdj['kdj_k'].values

d_value=kdj['kdj_d'].values

ifk_value[-1]>context.k_valueandd_value[-1]

order_percent(symbol=bars[0]['symbol'],percent=0.01,side=OrderSide_Buy,order_type=OrderType_Market,position_effect=PositionEffect_Open)

print('{}下单买入, k值为{}'.format(bars[0]['symbol'],context.k_value))

# 计算KDJ

defKDJ(data,N,M1,M2):

lowList=data['low'].rolling(N).min()

lowList.fillna(value=data['low'].expanding().min(),inplace=True)

highList=data['high'].rolling(N).max()

highList.fillna(value=data['high'].expanding().max(),inplace=True)

rsv=(data['close']-lowList)/(highList-lowList)*100

data['kdj_k']=rsv.ewm(alpha=1/M1).mean()

data['kdj_d']=data['kdj_k'].ewm(alpha=1/M2).mean()

data['kdj_j']=3.0*data['kdj_k']-2.0*data['kdj_d']

returndata

# 动态参数变更事件

defon_parameter(context,parameter):

# print(parameter)

ifparameter['name']=='k值阀值':

# 通过全局变量把动态参数值传入别的事件里

context.k_value=parameter['value']

print('{}已经修改为{}'.format(parameter['name'],context.k_value))

ifparameter['name']=='d值阀值':

context.d_value=parameter['value']

print('{}已经修改为{}'.format(parameter['name'],context.d_value))

defon_account_status(context,account):

print(account)

if__name__=='__main__':

'''

strategy_id策略ID,由系统生成

filename文件名,请与本文件名保持一致

mode实时模式:MODE_LIVE回测模式:MODE_BACKTEST

token绑定计算机的ID,可在系统设置-密钥管理中生成

backtest_start_time回测开始时间

backtest_end_time回测结束时间

backtest_adjust股票复权方式不复权:ADJUST_NONE前复权:ADJUST_PREV后复权:ADJUST_POST

backtest_initial_cash回测初始资金

backtest_commission_ratio回测佣金比例

backtest_slippage_ratio回测滑点比例

'''

run(strategy_id='07c08563-a4a8-11ea-a682-7085c223669d',

filename='main.py',

mode=MODE_LIVE,

token='2c4e3c59cde776ebc268bf6d7b4c457f204482b3',

backtest_start_time='2020-09-01 08:00:00',

backtest_end_time='2020-10-01 16:00:00',

backtest_adjust=ADJUST_PREV,

backtest_initial_cash=500000,

backtest_commission_ratio=0.0001,

backtest_slippage_ratio=0.0001)

level2数据驱动事件示例

本示例提供level2行情的订阅, 包括逐笔成交、逐笔委托、委托队列

仅券商托管版本支持

# coding=utf-8

from__future__importprint_function,absolute_import

fromgm.apiimport*

definit(context):

# 查询历史L2 Tick行情

history_l2tick=get_history_l2ticks('SHSE.600519','2020-11-23 14:00:00','2020-11-23 15:00:00',fields=None,

skip_suspended=True,fill_missing=None,

adjust=ADJUST_NONE,adjust_end_time='',df=False)

print(history_l2tick[0])

# 查询历史L2 Bar行情

history_l2bar=get_history_l2bars('SHSE.600000','60s','2020-11-23 14:00:00','2020-11-23 15:00:00',fields=None,

skip_suspended=True,fill_missing=None,

adjust=ADJUST_NONE,adjust_end_time='',df=False)

print(history_l2bar[0])

# 查询历史L2 逐笔成交

history_transactions=get_history_l2transactions('SHSE.600000','2020-11-23 14:00:00','2020-11-23 15:00:00',fields=None,df=False)

print(history_transactions[0])

# 查询历史L2 逐笔委托

history_order=get_history_l2orders('SZSE.000001','2020-11-23 14:00:00','2020-11-23 15:00:00',fields=None,df=False)

print(history_order[0])

# 查询历史L2 委托队列

history_order_queue=get_history_l2orders_queue('SZSE.000001','2020-11-23 14:00:00','2020-11-23 15:00:00',fields=None,df=False)

print(history_order_queue[0])

# 订阅浦发银行的逐笔成交数据

subscribe(symbols='SHSE.600000',frequency='l2transaction')

# 订阅平安银行的逐笔委托数据(仅支持深市标的)

subscribe(symbols='SZSE.000001',frequency='l2order')

# 订阅平安银行的委托队列数据

subscribe(symbols='SZSE.000001',frequency='l2order_queue')

defon_l2order(context,order):

# 打印逐笔成交数据

print(order)

defon_l2transaction(context,transition):

# 打印逐笔委托数据

print(transition)

defon_l2order_queue(context,l2order_queue):

# 打印委托队列数据

print(l2order_queue)

if__name__=='__main__':

'''

strategy_id策略ID, 由系统生成

filename文件名, 请与本文件名保持一致

mode运行模式, 实时模式:MODE_LIVE回测模式:MODE_BACKTEST

token绑定计算机的ID, 可在系统设置-密钥管理中生成

backtest_start_time回测开始时间

backtest_end_time回测结束时间

backtest_adjust股票复权方式, 不复权:ADJUST_NONE前复权:ADJUST_PREV后复权:ADJUST_POST

backtest_initial_cash回测初始资金

backtest_commission_ratio回测佣金比例

backtest_slippage_ratio回测滑点比例

'''

run(strategy_id='strategy_id',

filename='main.py',

mode=MODE_BACKTEST,

token='token_id',

backtest_start_time='2020-11-01 08:00:00',

backtest_end_time='2020-11-10 16:00:00',

backtest_adjust=ADJUST_PREV,

backtest_initial_cash=10000000,

backtest_commission_ratio=0.0001,

backtest_slippage_ratio=0.0001)

老滚5初始化python失败_快速开始 - Python - 掘金量化相关推荐

  1. anaconda降级python失败_如何降级Python版本安装spyder?

    如何降级 Python 版本安装 Spyder? 可能并不需要降级 Python 版本,使用 Spyder 独立安装包安装,然后指定 Python 解释器:另外一种方法是在 Anaconda 中安装. ...

  2. 快速运行python虚拟环境_快速入门Python 最新最流行的pipenv虚拟环境

    2018的PyCon把最新型最先进的Python虚拟环境pipenv吵得火热.看了下介绍感觉真的很好用,它在virtualenv的基础上包装了一些更便捷的功能,解决了很多很多virtualenv欠缺的 ...

  3. 要不要学Python?如何快速学Python?

    随着Python的技术的流行,Python为人们的工作与生活上带来了很多的便捷.因为Python简单,学起来快,也是不少新手程序员入门的首选语言.但有几个问题是想入门Python的小伙伴所关心的:要不 ...

  4. Python编程语言学习:python语言中快速查询python自带模块函数的用法及其属性方法、如何查询某个函数关键词的用法、输出一个类或者实例化对象的所有属性和方法名之详细攻略

    Python编程语言学习:python语言中快速查询python自带模块&函数的用法及其属性方法.如何查询某个函数&关键词的用法.输出一个类或者实例化对象的所有属性和方法名之详细攻略 ...

  5. python自己创建模块引用失败_详解Python import方法引入模块的实例 Python怎么import自己写的模块...

    python中 import导入模块失败的问题? python中的import引用不了模块我傻,为你傻;我痛,为你痛;深夜里,你是我一种惯性的回忆. 为什么我用from lianxi import*就 ...

  6. python思维导图完整版下载高清_快速学习 Python 的全套 14 张思维导图(附高清版下载)...

    来源:机器学习算法与自然语言处理 本文主要涵盖了 Python 编程的核心知识(暂不包括标准库及第三方库).按顺序依次展示了以下内容的一系列思维导图:基础知识,数据类型(数字,字符串,列表,元组,字典 ...

  7. python好多模块和c相识_快速实现python c扩展模块

    1  python扩展模块的组成 在python中,对于一些和系统相关的模块或者对性能要求很高的模块,通常会把这个模块C化.扩展模块中主要包含下面几个部分: init函数,函数名为:init+模块名, ...

  8. python开发环境有哪些特点_快速了解Python开发环境Spyder

    Spyder简介 Spyder (前身是 Pydee) 是一个强大的交互式 Python 语言开发环境,提供高级的代码编辑.交互测试.调试等特性,支持包括 Windows.Linux 和 OS X 系 ...

  9. 2018年python薪资_最好的Python:2017和2018年至今我最喜欢的文章集

    2018年python薪资 我打算发布此收藏集 (My intention with publishing this collection) Last year I only used Medium ...

最新文章

  1. 【Android 逆向】ART 脱壳 ( DexClassLoader 脱壳 | DexClassLoader 构造函数 | 参考 Dalvik 的 DexClassLoader 类加载流程 )
  2. Panda和numpy库和matplotlib库的安装
  3. Arthas - 开源 Java 诊断工具
  4. ssh sftp 免密码 公钥登录
  5. mongodump 备份还原
  6. python字典属于无序序列_Python序列结构--字典
  7. gin 源码解析 - 详解http请求在gin中的流转过程
  8. jQuery—$ is not a function
  9. AEJoy —— 表达式之弹性震动模拟详解【JS】
  10. 关于aab转apk的方法--bundletool
  11. 熊猫烧香手工清除实验
  12. php多条件筛选前台功能,JavaScript前端数据多条件筛选功能实现代码
  13. 同步升压与非同步升压区别
  14. 大学计算机教育国外著名教材系列 数据结构,经典数据结构(Java语言版)(影印版)——大学计算机教育国外著名教材系列...
  15. 如何挑选属于自己的电脑
  16. 微信公众号活动策划方案怎么写?看完你也可以直接套用
  17. DP2515国产带SPI接口汽车CAN总线控制器芯片兼容替代MCP2515/MCP2515-I/ST
  18. 方舟编译器的构建(笔记)
  19. 疯人院之大家别去美国,一个愚蠢而落后的国度
  20. WINCE系统防火墙设置

热门文章

  1. 陳三甲网络笔记:想要年赚30万,这些小道道你要知道(十七)
  2. Python3 实现 Redis 消息队列
  3. 因为写的程序BUG太多来重头开始整理最基础的C语言学习记录
  4. 这家酒店的机器人用事实证明:“懒人”改变了世界!
  5. mysql cluster安装配置_mysql cluster (mysql 集群)安装配置方案
  6. esxi增加linux空间,ESXI 4.1 Linux虚拟机调整扩充磁盘大小
  7. ARP协议详解:了解数据包转发与映射机制背后的原理
  8. 计算机网络应用之WLAN与WiFi的区别
  9. 两招提高孩子识字兴趣和效果
  10. 搭建一个私人云(群晖)