CTP期货接口python写多策略多品种多周期案例源码
"""
关注公众号: Ctp接口量化
"""from API import *
class MACDStrategy(Strategy):def __init__(self):super().__init__()# self.symbol_lsit = ["UR301","rb2301","au2212","IF2211","IC2211","i2301","eb2211","MA301"] #订阅合约self.symbol_lsit = ["i2301"] #订阅合约self.BarType = BarType.Min5 #K线周期self.StrategyType = StrategyType.Bar #策略类型 StrategyType.Renko StrategyType.Bar StrategyType.Tickdef on_tick(self, tick=None):print(tick.InstrumentID,tick.LastPrice) def on_bar(self, tick=None, Bar=None):symbol = tick.InstrumentID #合约代码Bid = tick.BidPrice1 #买价Ask = tick.AskPrice1 #卖价LastPrice = tick.LastPrice #最新价#print(symbol) #合约#print(tick.LastPrice) #合约tick.UpdateTime# print(tick.UpdateTime) #合约tick.UpdateTime# print(Bar[0]["symbol"]) #合约kline = Bar[0]["data"] # K 线数据if len(kline) <= 35: # 小于35 条 退出 return # K,D,J = self.KDJ(kline) # 取KDJ指标数组# UP,MB,DN = self.BOLL(kline) # 取BOLL指标数组# EMA = self.EMA(kline,60) # 取EMA指标数组# RSI = self.RSI(kline) # 取RSI指标数组# MA1 = self.MA(kline,30) # 取MA指标数组Channels# MA2 = self.MA(kline,60) # 取MA指标数组Channelsdif,dea,macd = self.MACD(kline) # 取MACD指标数组close,High,low = self.tick(kline) # 取收盘价数组 # 获取最新价格(卖价)# print(self.Get_Position(symbol))Pos = self.GetPosition(symbol)# print(Pos)# 开多单if Pos["Direction"]=="None" and dif[-1]>dea[-1] and dif[-2] < dea[-2] and dea[-1] > 0:print(symbol) #合约print("MACD策略开多")最低价 = min(low[-10:])止盈 = Ask + (Ask-最低价)*3# self.send(symbol, DirectionType.Buy, OffsetType.Open, Ask, 3, OrderType.Limit) # # OrderType.FOK OrderType.FAK OrderType.Marketself.send(symbol, DirectionType.Buy, OffsetType.Open, Ask, 3, OrderType.Limit,止损=最低价,止盈=止盈,移动止损=最低价) # # OrderType.FOK OrderType.FAK OrderType.Market# # 开空单if Pos["Direction"]=="None" and dif[-1]<dea[-1] and dif[-2] > dea[-2] and dea[-1] < 0:print(symbol) #合约print("MACD策略开空")最高价 = max(High[-10:])止盈 = Bid - (最高价-Bid)*3# self.send(symbol, DirectionType.Sell, OffsetType.Open, Bid, 3, OrderType.Limit) # # OffsetType.Open OffsetType.Close OffsetType.CloseToday OffsetType.CloseYesterdayself.send(symbol, DirectionType.Sell, OffsetType.Open, Bid, 3, OrderType.Limit,止损=最高价,止盈=止盈,移动止损=最高价) # # OffsetType.Open OffsetType.Close OffsetType.CloseToday OffsetType.CloseYesterday# # 平多单if Pos["Direction"]==DirectionType.Buy and dif[-1]<dea[-1] and dif[-2] > dea[-2]:print(symbol) #合约print("MACD策略平多单")self.send(symbol, DirectionType.Sell, OffsetType.Close, Bid, Pos['Volume'], OrderType.Limit) # # 平空单 if Pos["Direction"]==DirectionType.Sell and dif[-1]>dea[-1] and dif[-2] < dea[-2]:print(symbol) #合约print("MACD策略平空单")self.send(symbol, DirectionType.Buy, OffsetType.Close, Ask, Pos['Volume'], OrderType.Limit)if 'kwargs' in Pos.keys():# print(Pos["kwargs"])if Pos["Direction"]==DirectionType.Buy and LastPrice<Pos["kwargs"]["止损"]:print(symbol) #合约print("MACD策略止损多单")self.send(symbol, DirectionType.Sell, OffsetType.Close, Bid, Pos['Volume'], OrderType.Limit) # # 平空单 if Pos["Direction"]==DirectionType.Sell and LastPrice>Pos["kwargs"]["止损"]:print(symbol) #合约print("MACD策略止损空单")self.send(symbol, DirectionType.Buy, OffsetType.Close, Ask, Pos['Volume'], OrderType.Limit)# # 多单 修改移动止损价if Pos["Direction"]==DirectionType.Buy and (LastPrice - Pos["kwargs"]["移动止损"]) > (Pos["Price"] - Pos["kwargs"]["止损"]):self.OrderModify(symbol, LastPrice - (Pos["Price"] - Pos["kwargs"]["止损"]))print("空单 修改移动止损价",LastPrice - (Pos["Price"] - Pos["kwargs"]["止损"]))# # 空单 修改移动止损价if Pos["Direction"]==DirectionType.Sell and (Pos["kwargs"]["移动止损"] - LastPrice) > (Pos["kwargs"]["止损"] - Pos["Price"]):self.OrderModify(symbol, LastPrice + (Pos["kwargs"]["止损"] - Pos["Price"]))print("空单 修改移动止损价",LastPrice + (Pos["kwargs"]["止损"] - Pos["Price"]))class MAStrategy(Strategy):def __init__(self):super().__init__()self.symbol_lsit = ["UR301","rb2301","au2212","IF2211","IC2211","i2301","eb2211","MA301"] #订阅合约self.BarType = BarType.Min15 #K线周期self.StrategyType = StrategyType.Bar #策略类型 StrategyType.Renko StrategyType.Bar StrategyType.Tickdef on_tick(self, tick=None):print(tick.InstrumentID,tick.LastPrice) def on_bar(self, tick=None, Bar=None):symbol = tick.InstrumentID #合约代码Bid = tick.BidPrice1 #买价Ask = tick.AskPrice1 #卖价LastPrice = tick.LastPrice #最新价#print(symbol) #合约#print(tick.LastPrice) #合约tick.UpdateTime# print(tick.UpdateTime) #合约tick.UpdateTime# print(Bar[0]["symbol"]) #合约kline = Bar[0]["data"] # K 线数据if len(kline) <= 35: # 小于35 条 退出 return # K,D,J = self.KDJ(kline) # 取KDJ指标数组# UP,MB,DN = self.BOLL(kline) # 取BOLL指标数组# EMA = self.EMA(kline,60) # 取EMA指标数组# RSI = self.RSI(kline) # 取RSI指标数组MA1 = self.MA(kline,5) # 取MA指标数组ChannelsMA2 = self.MA(kline,10) # 取MA指标数组ChannelsMA3 = self.MA(kline,30) # 取MA指标数组Channels# dif,dea,macd = self.MACD(kline) # 取MACD指标数组close,High,low = self.tick(kline) # 取收盘价数组 # 获取最新价格(卖价)# print(self.Get_Position(symbol))Pos = self.GetPosition(symbol)# print(Pos)# 开多单if Pos["Direction"]=="None" and MA1[-1]>MA2[-1] and MA1[-2] < MA2[-2] and close[-1] > MA3[-1]:print(symbol) #合约print("MA策略开多")最低价 = min(low[-10:])止盈 = Ask + (Ask-最低价)*3# self.send(symbol, DirectionType.Buy, OffsetType.Open, Ask, 3, OrderType.Limit) # # OrderType.FOK OrderType.FAK OrderType.Marketself.send(symbol, DirectionType.Buy, OffsetType.Open, Ask, 3, OrderType.Limit,止损=最低价,止盈=止盈,移动止损=最低价) # # OrderType.FOK OrderType.FAK OrderType.Market# # 开空单if Pos["Direction"]=="None" and MA1[-1]<MA2[-1] and MA1[-2] > MA2[-2] and close[-1] < MA3[-1]:print(symbol) #合约print("MA策略开空")最高价 = max(High[-10:])止盈 = Bid - (最高价-Bid)*3# self.send(symbol, DirectionType.Sell, OffsetType.Open, Bid, 3, OrderType.Limit) # # OffsetType.Open OffsetType.Close OffsetType.CloseToday OffsetType.CloseYesterdayself.send(symbol, DirectionType.Sell, OffsetType.Open, Bid, 3, OrderType.Limit,止损=最高价,止盈=止盈,移动止损=最高价) # # OffsetType.Open OffsetType.Close OffsetType.CloseToday OffsetType.CloseYesterday# # 平多单if Pos["Direction"]==DirectionType.Buy and MA1[-1]<MA2[-1] and MA1[-2] > MA2[-2]:print(symbol) #合约print("MA策略平多单")self.send(symbol, DirectionType.Sell, OffsetType.Close, Bid, Pos['Volume'], OrderType.Limit) # # 平空单 if Pos["Direction"]==DirectionType.Sell and MA1[-1]>MA2[-1] and MA1[-2] < MA2[-2]:print(symbol) #合约print("MA策略平空单")self.send(symbol, DirectionType.Buy, OffsetType.Close, Ask, Pos['Volume'], OrderType.Limit)if 'kwargs' in Pos.keys():# print(Pos["kwargs"])if Pos["Direction"]==DirectionType.Buy and LastPrice<Pos["kwargs"]["止损"]:print(symbol) #合约print("RSI策略止损多单")self.send(symbol, DirectionType.Sell, OffsetType.Close, Bid, Pos['Volume'], OrderType.Limit) # # 平空单 if Pos["Direction"]==DirectionType.Sell and LastPrice>Pos["kwargs"]["止损"]:print(symbol) #合约print("RSI策略止损空单")self.send(symbol, DirectionType.Buy, OffsetType.Close, Ask, Pos['Volume'], OrderType.Limit)# # 多单 修改移动止损价if Pos["Direction"]==DirectionType.Buy and (LastPrice - Pos["kwargs"]["移动止损"]) > (Pos["Price"] - Pos["kwargs"]["止损"]):self.OrderModify(symbol, LastPrice - (Pos["Price"] - Pos["kwargs"]["止损"]))print("空单 修改移动止损价",LastPrice - (Pos["Price"] - Pos["kwargs"]["止损"]))# # 空单 修改移动止损价if Pos["Direction"]==DirectionType.Sell and (Pos["kwargs"]["移动止损"] - LastPrice) > (Pos["kwargs"]["止损"] - Pos["Price"]):self.OrderModify(symbol, LastPrice + (Pos["kwargs"]["止损"] - Pos["Price"]))print("空单 修改移动止损价",LastPrice + (Pos["kwargs"]["止损"] - Pos["Price"]))
class KDJStrategy(Strategy):def __init__(self):super().__init__()self.symbol_lsit = ["UR301","rb2301","au2212","IF2211","IC2211","i2301","eb2211","MA301"] #订阅合约self.BarType = BarType.Min30 #K线周期self.StrategyType = StrategyType.Bar #策略类型 StrategyType.Renko StrategyType.Bar StrategyType.Tickdef on_tick(self, tick=None):print(tick.InstrumentID,tick.LastPrice) def on_bar(self, tick=None, Bar=None):symbol = tick.InstrumentID #合约代码Bid = tick.BidPrice1 #买价Ask = tick.AskPrice1 #卖价LastPrice = tick.LastPrice #最新价#print(symbol) #合约#print(tick.LastPrice) #合约tick.UpdateTime# print(tick.UpdateTime) #合约tick.UpdateTime# print(Bar[0]["symbol"]) #合约kline = Bar[0]["data"] # K 线数据if len(kline) <= 35: # 小于35 条 退出 return K,D,J = self.KDJ(kline) # 取KDJ指标数组# UP,MB,DN = self.BOLL(kline) # 取BOLL指标数组# EMA = self.EMA(kline,60) # 取EMA指标数组# RSI = self.RSI(kline) # 取RSI指标数组# MA1 = self.MA(kline,30) # 取MA指标数组Channels# MA2 = self.MA(kline,60) # 取MA指标数组Channelsdif,dea,macd = self.MACD(kline) # 取MACD指标数组close,High,low = self.tick(kline) # 取收盘价数组 # 获取最新价格(卖价)# print(self.Get_Position(symbol))Pos = self.GetPosition(symbol)# print(Pos)# 开多单if Pos["Direction"]=="None" and K[-1]>D[-1] and K[-2] < D[-2] and dea[-1] > 0:print(symbol) #合约print("KDJ策略开多")最低价 = min(low[-10:])止盈 = Ask + (Ask-最低价)*3# self.send(symbol, DirectionType.Buy, OffsetType.Open, Ask, 3, OrderType.Limit) # # OrderType.FOK OrderType.FAK OrderType.Marketself.send(symbol, DirectionType.Buy, OffsetType.Open, Ask, 3, OrderType.Limit,止损=最低价,止盈=止盈,移动止损=最低价) # # OrderType.FOK OrderType.FAK OrderType.Market# # 开空单if Pos["Direction"]=="None" and K[-1]<D[-1] and K[-2] > D[-2] and dea[-1] < 0:print(symbol) #合约print("KDJ策略开空")最高价 = max(High[-10:])止盈 = Bid - (最高价-Bid)*3# self.send(symbol, DirectionType.Sell, OffsetType.Open, Bid, 3, OrderType.Limit) # # OffsetType.Open OffsetType.Close OffsetType.CloseToday OffsetType.CloseYesterdayself.send(symbol, DirectionType.Sell, OffsetType.Open, Bid, 3, OrderType.Limit,止损=最高价,止盈=止盈,移动止损=最高价) # # OffsetType.Open OffsetType.Close OffsetType.CloseToday OffsetType.CloseYesterday# # 平多单if Pos["Direction"]==DirectionType.Buy and K[-1]<D[-1] and K[-2] > D[-2]:print(symbol) #合约print("KDJ策略平多单")self.send(symbol, DirectionType.Sell, OffsetType.Close, Bid, Pos['Volume'], OrderType.Limit) # # 平空单 if Pos["Direction"]==DirectionType.Sell and K[-1]>D[-1] and K[-2] < D[-2]:print(symbol) #合约print("KDJ策略平空单")self.send(symbol, DirectionType.Buy, OffsetType.Close, Ask, Pos['Volume'], OrderType.Limit)if 'kwargs' in Pos.keys():# print(Pos["kwargs"])if Pos["Direction"]==DirectionType.Buy and LastPrice<Pos["kwargs"]["止损"]:print(symbol) #合约print("RSI策略止损多单")self.send(symbol, DirectionType.Sell, OffsetType.Close, Bid, Pos['Volume'], OrderType.Limit) # # 平空单 if Pos["Direction"]==DirectionType.Sell and LastPrice>Pos["kwargs"]["止损"]:print(symbol) #合约print("RSI策略止损空单")self.send(symbol, DirectionType.Buy, OffsetType.Close, Ask, Pos['Volume'], OrderType.Limit)# # 多单 修改移动止损价if Pos["Direction"]==DirectionType.Buy and (LastPrice - Pos["kwargs"]["移动止损"]) > (Pos["Price"] - Pos["kwargs"]["止损"]):self.OrderModify(symbol, LastPrice - (Pos["Price"] - Pos["kwargs"]["止损"]))print("空单 修改移动止损价",LastPrice - (Pos["Price"] - Pos["kwargs"]["止损"]))# # 空单 修改移动止损价if Pos["Direction"]==DirectionType.Sell and (Pos["kwargs"]["移动止损"] - LastPrice) > (Pos["kwargs"]["止损"] - Pos["Price"]):self.OrderModify(symbol, LastPrice + (Pos["kwargs"]["止损"] - Pos["Price"]))print("空单 修改移动止损价",LastPrice + (Pos["kwargs"]["止损"] - Pos["Price"]))
class RSIStrategy(Strategy):def __init__(self):super().__init__()self.symbol_lsit = ["UR301","rb2301","au2212","IF2211","IC2211","i2301","eb2211","MA301"] #订阅合约self.BarType = BarType.Min60 #K线周期self.StrategyType = StrategyType.Bar #策略类型 StrategyType.Renko StrategyType.Bar StrategyType.Tickdef on_tick(self, tick=None):print(tick.InstrumentID,tick.LastPrice) def on_bar(self, tick=None, Bar=None):symbol = tick.InstrumentID #合约代码Bid = tick.BidPrice1 #买价Ask = tick.AskPrice1 #卖价LastPrice = tick.LastPrice #最新价#print(symbol) #合约#print(tick.LastPrice) #合约tick.UpdateTime# print(tick.UpdateTime) #合约tick.UpdateTime# print(Bar[0]["symbol"]) #合约kline = Bar[0]["data"] # K 线数据if len(kline) <= 35: # 小于35 条 退出 return # K,D,J = self.KDJ(kline) # 取KDJ指标数组# UP,MB,DN = self.BOLL(kline) # 取BOLL指标数组# EMA = self.EMA(kline,60) # 取EMA指标数组RSI = self.RSI(kline) # 取RSI指标数组# MA1 = self.MA(kline,30) # 取MA指标数组Channels# MA2 = self.MA(kline,60) # 取MA指标数组Channelsdif,dea,macd = self.MACD(kline) # 取MACD指标数组close,High,low = self.tick(kline) # 取收盘价数组 # 获取最新价格(卖价)# print(self.Get_Position(symbol))Pos = self.GetPosition(symbol)# print(Pos)# 开多单if Pos["Direction"]=="None" and RSI[-1]>50 and RSI[-2] < 50 and dea[-1] > 0:print(symbol) #合约print("RSI策略开多")最低价 = min(low[-10:])止盈 = Ask + (Ask-最低价)*3# self.send(symbol, DirectionType.Buy, OffsetType.Open, Ask, 3, OrderType.Limit) # # OrderType.FOK OrderType.FAK OrderType.Marketself.send(symbol, DirectionType.Buy, OffsetType.Open, Ask, 3, OrderType.Limit,止损=最低价,止盈=止盈,移动止损=最低价) # # OrderType.FOK OrderType.FAK OrderType.Market# # 开空单if Pos["Direction"]=="None" and RSI[-1]<50 and RSI[-2] > 50 and dea[-1] < 0:print(symbol) #合约print("RSI策略开空")最高价 = max(High[-10:])止盈 = Bid - (最高价-Bid)*3# self.send(symbol, DirectionType.Sell, OffsetType.Open, Bid, 3, OrderType.Limit) # # OffsetType.Open OffsetType.Close OffsetType.CloseToday OffsetType.CloseYesterdayself.send(symbol, DirectionType.Sell, OffsetType.Open, Bid, 3, OrderType.Limit,止损=最高价,止盈=止盈,移动止损=最高价) # # OffsetType.Open OffsetType.Close OffsetType.CloseToday OffsetType.CloseYesterday# # 平多单if Pos["Direction"]==DirectionType.Buy and RSI[-1]<50 and RSI[-2] > 50:print(symbol) #合约print("RSI策略平多单")self.send(symbol, DirectionType.Sell, OffsetType.Close, Bid, Pos['Volume'], OrderType.Limit) # # 平空单 if Pos["Direction"]==DirectionType.Sell and RSI[-1]>50 and RSI[-2] < 50:print(symbol) #合约print("RSI策略平空单")self.send(symbol, DirectionType.Buy, OffsetType.Close, Ask, Pos['Volume'], OrderType.Limit)if 'kwargs' in Pos.keys():# print(Pos["kwargs"])if Pos["Direction"]==DirectionType.Buy and LastPrice<Pos["kwargs"]["止损"]:print(symbol) #合约print("RSI策略止损多单")self.send(symbol, DirectionType.Sell, OffsetType.Close, Bid, Pos['Volume'], OrderType.Limit) # # 平空单 if Pos["Direction"]==DirectionType.Sell and LastPrice>Pos["kwargs"]["止损"]:print(symbol) #合约print("RSI策略止损空单")self.send(symbol, DirectionType.Buy, OffsetType.Close, Ask, Pos['Volume'], OrderType.Limit)# # 多单 修改移动止损价if Pos["Direction"]==DirectionType.Buy and (LastPrice - Pos["kwargs"]["移动止损"]) > (Pos["Price"] - Pos["kwargs"]["止损"]):self.OrderModify(symbol, LastPrice - (Pos["Price"] - Pos["kwargs"]["止损"]))print("空单 修改移动止损价",LastPrice - (Pos["Price"] - Pos["kwargs"]["止损"]))# # 空单 修改移动止损价if Pos["Direction"]==DirectionType.Sell and (Pos["kwargs"]["移动止损"] - LastPrice) > (Pos["kwargs"]["止损"] - Pos["Price"]):self.OrderModify(symbol, LastPrice + (Pos["kwargs"]["止损"] - Pos["Price"]))print("空单 修改移动止损价",LastPrice + (Pos["kwargs"]["止损"] - Pos["Price"]))# Config = {'brokerid':'9999', 'userid':'123456', 'password':'123456', 'appid':'simnow_client_test', 'auth_code':'0000000000000000', 'product_info':'python dll', 'td_address':'tcp://180.168.146.187:10201', 'md_address':'tcp://180.168.146.187:10211'}
Config = {'brokerid':'9999', 'userid':'1123456', 'password':'123456', 'appid':'simnow_client_test', 'auth_code':'0000000000000000', 'product_info':'python dll', 'td_address':'tcp://180.168.146.187:10130', 'md_address':'tcp://180.168.146.187:10131'}if __name__ == '__main__':t = CtpGateway()t.add_Strategy(MACDStrategy())t.add_Strategy(MAStrategy())t.add_Strategy(KDJStrategy())t.add_Strategy(RSIStrategy())t.add_Config(Config)t.Start()
CTP期货接口python写多策略多品种多周期案例源码相关推荐
- 用Python写了一个网易云音乐(附源码、视频教程)
今天给大家分享一个实战项目,用Python整个网易云出来,实现音乐自由!文末附本项目源码以及视频教程! 这一次,咱们来玩点花活,整个网易云出来,实现音乐自由! 环境 Python3.6.8 PyCha ...
- 周末用Python写了5个小游戏(附源码)
周末不能出去玩多无聊啊,那就来几个小游戏给大家助助兴,,可以自己复现玩玩,研究下里面的编程逻辑,对学习编程(特别是初学者)应该会有很大帮助.学会了别忘记教你的小伙伴,好的东西大家要学会分享. 由于文章 ...
- 用Python写了一个上课点名系统(附源码)
今天刷到了一个这样的短视频,我寻思我是不是也可以写一个类似的上课点名程序,想法经不起等待,说写就写~ 一.准备工作 1.Tkinter Tkinter 是 python 内置的 TK GUI 工具集. ...
- 30 个Python代码实现的常用功能(附案例源码)
今天给大家分享30个 Python 常用代码案例,建议收藏啊~ 1.冒泡排序 2.计算x的n次方的方法 3.计算aa + bb + c*c + -- 4.计算阶乘 n! 5.列出当前目录下的所有文件和 ...
- 31 个Python代码实现的常用功能(附案例源码)
今天给大家分享30个 Python 常用代码案例,建议收藏啊~ 1.冒泡排序 2.计算x的n次方的方法 3.计算aa + bb + c*c + -- 4.计算阶乘 n! 5.列出当前目录下的所有文件和 ...
- python撩人的代码,老师教已毕业的学生,用Python代码每天不定时撩女友,附源码文件...
原本就是学生会主席,在学校如此优秀的他,毕业参加工作,依然展现出好强的一面. 每天认真的工作,即使在工作之余也要用来给自己充电,所以难免会忽略女友,不够关心,免不了发脾气,甚至是争吵. 有一天,曾经大 ...
- 分享Python采集的77个PHP整站程序源码
Python采集的77个PHP整站程序源码下载链接:百度网盘 请输入提取码 提取码:pdwa ULCms(Unlimited Cms) V1.0 RC Build 20080926 DiY-Page ...
- Python基于OpenCV监控老鼠蟑螂检测系统[完整源码&部署教程]
1.视频演示: [项目分享]Python基于OpenCV监控老鼠蟑螂检测系统[完整源码&部署教程]_哔哩哔哩_bilibili 2.图片演示: 3.明厨亮灶: 餐饮企业的厨房卫生状况一直饱受消 ...
- 基于python食品安全溯源管理系统django框架计算机毕业设计源码+系统+数据库+lw文档+调试部署
基于python食品安全溯源管理系统django框架计算机毕业设计源码+系统+数据库+lw文档+调试部署 基于python食品安全溯源管理系统django框架计算机毕业设计源码+系统+数据库+lw文档 ...
最新文章
- js转换html为pdf文件怎么打开方式,pdf.js实现在HTML下直接浏览pdf文档,无需插件即可实现...
- Leetcode 187. 重复的DNA序列 解题思路及C++实现
- 从5随机到7随机及其扩展
- java中递归的概念_【Java】基础38:什么叫递归?
- 20165306 我期望的师生关系
- 0 uC/OS 系统精讲索引
- TDA-04D8变送器数据上报阿里云
- 发明导诊机器人团队_牛!这个平均年龄21岁的团队竟然发明偏瘫康复机器人
- python之Beautiflusoup操作
- android开发者模式自动打开位置touch信息
- Android 手写和笔锋研究资料
- 两年计算机考研教训经验贴
- 验证CUDA和CUDNN是否安装成功的方法
- 电脑上如何进行屏幕录制,笔记本电脑录屏怎么录
- web页面的性能优化以及SEO(搜索引擎优化)
- 无线AP的7种工作模式
- 教学|3DMAX渲染教程:超写实风格Vray渲染五步法则
- 【MySQL进阶-05】深入理解mvcc机制(详解)
- 无锡中软国际有限公司笔试题(Java)附加个人答案版
- 医院测温人脸门禁设备解决方案
热门文章
- 均匀三次B样条曲线插值实现及MATLAB代码
- java毕业生设计学生健康管理系统计算机源码+系统+mysql+调试部署+lw
- 2021年中国表面等离子体共振市场趋势报告、技术动态创新及2027年市场预测
- 沥青都市7723java_“横看成岭侧成峰,远近高低各不同”——线激光车辙测试仪(LIR)及其在沥青路面车辙检测中的应用...
- 早教+托育哪家强?2020年度早教托育一体化品牌排行榜出炉
- CleanMyMac是什么软件,可以清理Mac系统么
- VMware虚拟机安装macos Ventura 13.1(22C65)教程镜像CDR/ISO下载
- JavaScript DOM文档对象模型小结
- 记录Git 提交报错 fatal: Exiting because of unfinished merge
- 在notepad++中安装jslint插件