Hello CTP(四)——CTP交易API

一、CTP交易API简介

1、CTP交易API简介

CThostFtdcTraderApi交易API接口包含CThostFtdcTraderApi和CThostFtdcTraderSpi,通过CThostFtdcTraderApi向CTP发送操作请求,通过CThostFtdcTraderSpi接收CTP操作响应。

2、CTP API交易流程

(1)创建CTP API实例

CThostFtdcTraderApi *pTradeApi = CThostFtdcTraderApi::CreateFtdcTraderApi(dirName);

API实例用于发起各种请求,如连接服务器、用户登录、报单、撤单、查询持仓、查询资金等。

(2)创建CTP API回调实例

CFtdcTradeSpi *pTradeSpi = new CFtdcTradeSpi(pTradeApi, this);

开发者需要实现上期CThostFtdcTraderSpi类,重写类方法,处理CTP服务端回传的各类数据。

(3)注册回调实例

pTradeApi->RegisterSpi(pTradeSpi);

(4)连接前置服务器

pTradeApi_->RegisterFront((char *)serverAddr_.c_str());pTradeApi_->Init();

连接请求发出后,OnFrontConnected()会响应请求。

(5)身份认证

在用户登录前,CTP服务端要求对客户端进行身份认证,客户端通过认证后才能请求登录。

身份认证功能是否启用在期货公司的业务人员使用的结算平台上是可以进行配置的。期货公司可以选择关闭身份认证功能,则客户端可不必进行身份认证。否则期货公司需要在结算平台上维护该客户端程序的认证码(AuthCode)。

请求进行身份认证使用的函数接口为 ReqAuthenticate(请求身份认证)和 OnRspAuthenticate(服务端返回的身份认证的响应)。

(6)用户登录

OnRspAuthenticate()函数内可以调用登录函数pTradeApi->ReqUserLogin()完成用户登录操作。

登录成功后,OnRspUserLogin中参数pRspUserLogin中包含前置编号(FrontID)、会话编号(SessionID)、最大报单编号(MaxOrderRef)。

前置编号:客户端连接到的前置机的编号。

会话编号:客户端连接到前置机的连接会话编号。

最大报单编号:每一笔报单都有一个唯一的不重复的编号(OrderRef)。客户端若不赋值,服务端自动赋值;客户端若赋值,可从MaxOrderRef向上逐一递增,防止与其它报单重复,也可以根据时间戳指定唯一不重复编号即可。

通过ReqUserLogout登出系统,会先将现有链接断开,再重新建立一个新链接,重新登录后 SessionID会重置,因此MaxOrderRef 会重新从0计数。

(7)Topic订阅

OnRspUserLogin()函数内订阅Topic完成后,可以正常下单交易。

pTradeApi_->SubscribePublicTopic(THOST_TERT_QUICK);pTradeApi_->SubscribePrivateTopic(THOST_TERT_QUICK);

CTP公有流和私有流提供三种订阅方式,

TERT_RESTART:从本交易日开始重传。
TERT_RESUME:从上次收到的续传。

TERT_QUICK:只传送登录后的内容。

由于国内期货在交易日内首次登录时需要做投资者结算结果确认操作,因此需要登录成功时请求投资者结算结果确认。

int ReqSettlementInfoConfirm(CThostFtdcSettlementInfoConfirmField *pSettlementInfoConfirm, int nRequestID);

(8)报单操作

virtual int ReqOrderInsert(CThostFtdcInputOrderField *pInputOrder, int nRequestID) = 0;

报单操作如下:

CThostFtdcInputOrderField reqField;
memset(&reqField, 0, sizeof(CThostFtdcInputOrderField));
// 报单条件
pTradeApi_->ReqOrderInsert(&reqField, orderInsertReqId_);

需要正确填写买卖方向、开仓、平仓、市价、限价、委托数量、委托价格等,调用ReqOrderInsert()报单。

调用函数ReqOrderInsert报单后,如果在CTP端验资验仓等通不过,则客户端会回调函数OnRspOrderInsert和OnErrRtnOrderInsert;如果通过则先回调一次OnRtnOrder。

CTP再将报单报往交易所,如果交易所验资验仓没通过将返回错误给CTP,此时客户端会回调OnRtnOrder;如果交易所检查正确则此时会再次回调OnRtnOrder。

InvestorID:投资者代码 

InstrumentID:合约代码

Direction:买卖方向

CombOffsetFlag:开平标识

CombHedgeFlag:投机套保标识

LimitPrice:价格

VolumeTotalOriginal:数量

TimeCondition:有效期类型

OrderPriceType:报单价格条件

VolumeCondition:成交量类型

MinVolume:最小成交量

ContingentCondition:触发条件

StopPrice:止损价

IsSwapOrder:互换单标志

ExchangeID:交易所代码

(9)报单响应

void CFtdcTradeSpi::OnRspOrderInsert(CThostFtdcInputOrderField *pInputOrder, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);

CTP为了简化逻辑,实际上报单后并不会被回调,会在CTP检查不通过时回调。

(10)订单状态回报

void CFtdcTradeSpi::OnRtnOrder(CThostFtdcOrderField *pOrder);

 当委托状态发生变化时,会被回调。常见委托状态主要有:未知、未成交还在队列中、部分成交还在队列中、完全成交等。一次报单,如果数量比较多,一般不会一次全部成交,而是会分多批次成交,所以会不断被回调。随着不断回调,每次返回的委托量、成交量、剩余量等数据会不断变更。

(11)成交回报

void CFtdcTradeSpi::OnRtnTrade(CThostFtdcTradeField *pTrade);

返回每一条信息都是成交信息,包含成交量、成交价、成交费用等。

二、CTP报单指令

1、OrderPriceType订单价格类型                               

限价(LimitPrice):执行价格必须同等于或好于委托中指定的限价,即仅和撮合队列中价格等于或好于指定价的对手方进行撮合,CTP标识 THOST_FTDC_OPT_LimitPrice。

市价(AnyPrice):委托能够以市场上任何可得到的价格执行,即可以和撮合队列中的任何对手方报单进行撮合,CTP标识THOST_FTDC_OPT_AnyPrice。

最优价(BestPrice):仅和撮合队列中排在最前面的1个价格的对手方报单进行撮合,CTP标识 THOST_FTDC_OPT_BestPrice。     

五档市价(FiveLevelPrice):有一定的价格保护带,只和撮合队列中排在最前面的5个价格的对手方报单进行撮合,CTP标识THOST_FTDC_OPT_FiveLevelPrice。

2、TimeCondition时间条件                                    

THOST_FTDC_TC_IOC:立即完成,否则撤销

THOST_FTDC_TC_GFS:本节有效

THOST_FTDC_TC_GFD:当日有效

THOST_FTDC_TC_GTC:撤销前有效

THOST_FTDC_TC_GFA:集合竞价有效

3、VolumeCondition成交量条件                             

任何数量(AV):以可能的最大数量执行,CTP标识THOST_FTDC_VC_AV。

最小数量(MV):委托包含必须执行的一个最小数量,如执行不成功则委托被完全取消,CTP标识THOST_FTDC_VC_MV。

全部数量(CV):委托必须按指定数量全额执行,如执行不成功则委托被完全取消,CTP标识THOST_FTDC_VC_CV。

4、ContingentCondition触发条件 

THOST_FTDC_CC_Immediately:报单立即有效。

THOST_FTDC_CC_Touch:止损单。

THOST_FTDC_CC_TouchProfit:止盈单。 

THOST_FTDC_CC_ParkedOrder:预埋单。预埋单是指预埋在CTP服务端,需要非交易时间报入,开市后自动报往交易所。

5、限价单

LIMIT普通限价单:下单后,在指定的时间范围内(本节有效、当日有效等),等待报单的数量全部成交。

FAK(Fill And kill):报单被交易所接收后,交易所会扫描市场行情,在当时行情下能立即成交多少手即参与撮合成交多少手,剩余数量立即全部撤销。

FOK(Fill Or Kill):报单被交易所接收后,交易所会扫描市场行情,如果在当时的市场行情下报单可以立即全部成交,则报单会参与撮合成交,否则立即全部撤销。

三、报单

1、报单

报单是指将买卖期货合约指令通过API函数发送到CTP柜台,CTP柜台收到后会对该笔订单进行一系列的检查,检查通过后再发送到交易所。

CTP的整个报单过程不需要编写报单流控逻辑,因为CTP没有报单频率限制,但有查询频率限制;易盛交易API查询没频率限制,报单有频率限制。

调用函数ReqOrderInsert报单后,如果在CTP端校验通不过,则客户端会回调函数OnRspOrderInsert和OnErrRtnOrderInsert;如果CTP端校验通过则先回调一次OnRtnOrder,CTP再将报单报往交易所;如果交易所校验没通过,返回错误给CTP,客户端会回调OnRtnOrder;如果交易所校验通过,则会再次回调OnRtnOrder。

virtual int ReqOrderInsert(CThostFtdcInputOrderField *pInputOrder, int nRequestID) = 0;

CThostFtdcInputOrderField用于填入报单参数,nRequestID用于填订单请求的编号。

BrokerID:经纪公司代码

InvestorID:投资者代码

ExchangeID:交易所代码,CFFEX、CZCE、DCE、INE、SHFE

InstrumentID:合约代码

OrderPriceType:报单价格类型

Direction:买卖方向

LimitPrice:价格

VolumeTotalOriginal:数量

CombOffsetFlag:组合开平标志,THOST_FTDC_OF_Open是开仓,THOST_FTDC_OF_Close是平仓/平昨,THOST_FTDC_OF_CloseToday是平今。

CombHedgeFlag:组合投机套保标志

ContingentCondition:触发条件,通常为THOST_FTDC_CC_Immediately,即报单立即有效。THOST_FTDC_CC_Touch和THOST_FTDC_CC_TouchProfit是止损止盈单,需要交易所支持才能填。THOST_FTDC_CC_ParkedOrder是预埋单。

TimeCondition:有效期类型,THOST_FTDC_TC_GFD指当日有效,报单会挂在交易所直到成交或收盘自动撤销。THOST_FTDC_TC_IOCIOC是立即完成否则撤销

VolumeCondition:成交量类型

MinVolume:最小成交量。

ForceCloseReason:强平原因

限价GFD单:

CThostFtdcInputOrderField orderfield = {0};
strcpy(orderfield.BrokerID, "9999");
strcpy(orderfield.InvestorID, "000001");  
strcpy(orderfield.ExchangeID, “SHFE”);
strcpy(orderfield.InstrumentID, "au1912");  
orderfield.OrderPriceType = THOST_FTDC_OPT_LimitPrice;
orderfield.Direction = THOST_FTDC_D_Sell;
orderfield.LimitPrice = 400.0;
orderfield.VolumeTotalOriginal = 10;    
orderfield.ContingentCondition = THOST_FTDC_CC_Immediately;  
orderfield.CombOffsetFlag[0] = THOST_FTDC_OF_Open;
orderfield.CombHedgeFlag[0] = THOST_FTDC_HF_Speculation;    
orderfield.TimeCondition = THOST_FTDC_TC_GFD ;
orderfield.VolumeCondition = THOST_FTDC_VC_AV;    
orderfield.ForceCloseReason = THOST_FTDC_FCC_NotForceClose;  
int ret = g_pTradeapi->ReqOrderInsert(&orderfield, 0);

限价FOK单:

CThostFtdcInputOrderField orderfield ={0};
strcpy(orderfield.BrokerID, "9999");
strcpy(orderfield.InvestorID, "000001");
strcpy(orderfield.ExchangeID, “SHFE”);
strcpy(orderfield.InstrumentID, "au1912");  
orderfield.OrderPriceType = THOST_FTDC_OPT_LimitPrice;
orderfield.Direction = THOST_FTDC_D_Sell;
orderfield.LimitPrice = 400.0;
orderfield.VolumeTotalOriginal = 10;    
orderfield.ContingentCondition = THOST_FTDC_CC_Immediately;  
orderfield.CombOffsetFlag[0] = THOST_FTDC_OF_Open;
orderfield.CombHedgeFlag[0] = THOST_FTDC_HF_Speculation;    
orderfield.TimeCondition = THOST_FTDC_TC_IOC;
orderfield.VolumeCondition = THOST_FTDC_VC_CV;    
orderfield.ForceCloseReason = THOST_FTDC_FCC_NotForceClose;  
int ret = g_pTradeapi->ReqOrderInsert(&orderfield, 0);

2、订单索引

报单请求和报单回报通常使用下列字段确定一笔订单。

FrontID:前置编号

SessionID:会话编号

OrderRef:报单引用

ExchangeID:交易所代码

TraderID:交易所交易员代码

OrderLocalID:CTP本地报单编号

OrderSysID:交易所订单编号

(1)FrontID + SessionID + OrderRef

FrontID是CTP后台前置编号, SessionID是会话链接的编号,登录成功回报中会返回FrontID和SessionID,本次会话连接中不变。

OrderRef返回客户报单请求时填写的对应字段,如果没填,CTP会自动递增地为字段赋值。因此,每次报单时可以用FrontID + SessionID + OrderRef组成一个key在本地标识存入唯一的一笔报单,当有报单回报返回时,可以根据回报中三个字段找出原始的请求报单,再用回报中的状态来更新原始请求报单的当前状态。撤单时可以用三个字段填入到请求撤单对应的字段进行撤单。

当客户报单有成交时,CTP会推送OnRtnTrade成交回报,成交回报中没有FrontID 和SessionID字段,只有OrderRef字段。

(2)ExchangeID + TraderID + OrderLocalID

OrderLocalID是CTP的订单号,客户无法改变。OrderLocalID在ExchangeID、TraderID两个字段固定时单调递增,每次回报返回给客户。

3)ExchangeID + OrderSysID

OrderSysID是报单报入到交易所时交易所给订单编的唯一编号。报单请求首次到达CTP,风控通过后返回第1个OnRtnOrder回报,此时还没有报入到交易所,所以回报中OrderSysID为空。撤单时可以使用OrderSysID指定订单。

开发中订单索引维护有两种方案:

(1)报单时用FrontID + SessionID + OrderRef维护报单,当第2个OnRtnOder回来后,找到原始报单,将OrderSysID填入到本地报单中,后续使用ExchangeID + OrderSysID维护订单。

(2)本地维护OrderRef字段,当前交易日内不管多少链接都一直单调递增,每次根据OrderRef就可以确定唯一报单。但多策略多链接交易可能存在问题,会涉及到多个API链接间OrderRef字段的互相同步。

3、正确回报

报单请求后,如果CTP检查通过则返回正确回报,回调只有OnRtnOrder函数(如有成交则会单独回调OnRtnTrade函数)。回调参数类型为CThostFtdcOrderField。

OrderStatus:报单状态

OrderSubmitStatus:报单提交状态

StatusMsg:状态信息

VolumeTotalOriginal:即原始报单数量

VolumeTraded:今成交数量,订单累计成交量

VolumeTotal:剩余数量,订单剩余未成交数量

OrderStatus订单状态如下:

THOST_FTDC_OST_AllTraded:全部成交

THOST_FTDC_OST_PartTradedQueueing:部分成交还在队列中THOST_FTDC_OST_PartTradedNotQueueing:部分成交不在队列中

THOST_FTDC_OST_NoTradeQueueing:未成交还在队列中

THOST_FTDC_OST_NoTradeNotQueueing:未成交不在队列中

THOST_FTDC_OST_Canceled:撤单

THOST_FTDC_OST_Unknown:未知

THOST_FTDC_OST_NotTouched:尚未触发

THOST_FTDC_OST_Touched:已触发

4、CTP拒单

如果报单被CTP直接拒单,会回调OnRspOrderInsert和OnErrRtnOrderInsert函数。

OnRspOrderInsert是当前报单者收到的回调,OnErrRtnOrderInsert是账户下所有会话链接都会收到的回调。

5、交易所拒单

报单通过CTP柜台风控检查报往交易所后,被交易所拒单,只回调函数OnRtnOrder,订单会被动撤单。

回报OnRtnOrder中的OrderStatus为THOST_FTDC_OST_Canceled撤单,OrderSubmitStatus为THOST_FTDC_OSS_InsertRejected报单已经被拒绝,即说明订单被交易所拒单(处于被动撤单状态),StatusMsg字段有具体的交易所拒单原因。

6、成交回报

报单回报是指每次报单状态有更新CTP发回给API用户的消息,成交回报是指每次报单有成交时CTP发回给用户的成交通知消息。如果有成交必然对应报单状态变化,所以成交回报前会先有报单回报。

CThostFtdcTradeField字段如下:

ExchangeID:交易所代码

TradeID:成交编号

Direction:买卖方向

TradeID:交易所对每一笔成交的编号,因为除郑商所外的交易所对成交时互为对手方的两笔成交编号是一样的,所以还需要加上Direction字段。

OrderRef:报单引用

OrderSysID:交易所报单编号

TraderID:交易所交易员代码

OrderLocalID:CTP本地报单编号

InstrumentID:合约代码

Direction:买卖方向

OffsetFlag:开平标志

Price:成交价格

Volume:成交数量

四、撤单

1、撤单

调用ReqOrderAction后,如果在CTP端校验通过,则会回调OnRtnOrder并提交撤单指令到交易所;如果在CTP端校验不通过,则会回调OnRspOrderAction和OnErrRtnOrderAction。如果交易所校验通过,则通过OnRtnOrder返回撤单回报;如果交易所校验不通过,则通过OnRtnOrder和OnErrRtnOrderAction返回交易所撤单拒绝回报。

virtual int ReqOrderAction(CThostFtdcInputOrderActionField * pInputOrderAction, int nRequestID) = 0;

CTP报单回报返回的OrderSysID是右对齐的,撤单填写时必须和CTP返回的一致。OrderSysID有效位为12个字节,撤单时要右对齐填写。

如果报单时OrderRef为客户自己赋值,撤单时也要同样赋值。如果报单时填空,则CTP会自动赋值,OrderRef也是右对齐的。撤单时也要原样右对齐填写。

2、错误回报

如果撤单被CTP或交易所拒单,会回调OnRspOrderAction或OnErrRtnOrderAction函数,打印回调函数中的参数pRspInfo就可以得知被拒原因。

3、正确回报

如果撤单请求通过CTP检查,返回的第1个OnRtnOrder为报单在CTP中的现状态,和上一次收到的OnRtnOrder一致。返回的第2个OnRtnOrder表明报单已经成功撤销,撤单回报中OrderSubmitStatus为THOST_FTDC_OSS_Accepted,OrderStatus为THOST_FTDC_OST_Canceled。

五、CTP查询

1、资金查询

virtual int ReqQryTradingAccount(CThostFtdcQryTradingAccountField *pQryTradingAccount,int nRequestID) = 0;virtual void OnRspQryTradingAccount(CThostFtdcTradingAccountField *pTradingAccount, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);

2、持仓查询

virtual int ReqQryInvestorPosition(CThostFtdcQryInvestorPositionField *pQryInvestorPosition, int nRequestID) = 0;

CThostFtdcQryInvestorPositionField无必填字段,选填字段InstrumentID,如果只想查某个合约持仓,可以只填nstrumentID字段;如果不填任何字段,则查询当前账户的所有持仓记录。

CThostFtdcQryInvestorPositionField qrypositionfield = {0};pTradeApi->ReqQryInvestorPosition(&qrypositionfield, 0);

持仓查询响应函数:

void CFtdcTradeSpi::OnRspQryInvestorPosition(CThostFtdcInvestorPositionField *pInvestorPosition, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)

账户下持仓数据不会一次全部返回,而是分批返回,开发者需要根据多空方向分别做汇总计算。

返回结果在第一个参数中pInvestorPosition中,参数类型为CThostFtdcInvestorPositionField,有6个字段可以区分唯一一条持仓记录,作为持仓记录键值(Key)。

InstrumentID:合约代码

BrokerID:经纪公司代码

InvestorID:投资者代码

PosiDirection:持仓多空方向,PosiDirection是枚举值,'2'表示多头持仓;'3'表示空头持仓,同一合约的不同方向的持仓在CTP是通过不同的记录来返回的。

HedgeFlag:投机套保标志

PositionDate:持仓日期,‘1’表示当前交易日持仓;‘2’表示是历史仓(昨仓)。

上期所、能源中心将今仓和昨仓分为两条记录,根据PositionDate可以区分出今仓和昨仓,根据PosiDirection区分空头和多头持仓。

其它期货交易所的今仓昨仓在一条记录,根据PosiDirection区分空头和多头持仓。

Position:当前键值下的总持仓,随着客户开仓平仓而变动

TodayPosition:当前键值下的今日新持仓数量,随着客户开仓平今而变动

YdPosition:当前键值下的昨仓,是一个静态值,为当前交易日开始时合约的历史仓位,不会随着客户平昨仓而减小;当前实际昨仓为Position-TodayPosition。

LongFrozen:多头冻结

ShortFrozen:空头冻结

冻结是指已报单但未成交的数量,对于多头持仓,多头冻结是指新开多头未成交的数量,空头冻结是指平多头仓位报单未成交的数量;空头持仓与之相反。

3、委托查询

virtual int ReqQryOrder(CThostFtdcQryOrderField *pQryOrder, int nRequestID) = 0;virtual void OnRspQryOrder(CThostFtdcOrderField *pOrder, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);

4、成交查询

virtual int ReqQryTrade(CThostFtdcQryTradeField *pQryTrade, int nRequestID) = 0;virtual void OnRspQryTrade(CThostFtdcTradeField *pTrade, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/69180.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VoIP之RTP/RTCP协议

在VoIP领域中,一般使用RTP作为媒体的传输协议。RTP(real-time transport protocol)由rfc3550定义(其中RFC1889已经过期)。 RTP提供了一种适用于应用在端到端之间传输音频、视频等实时数据的网络传输方式。RTP没有资源预留机制,不确保实时服务…

TTDP、TRDP协议

1、TTDP即列车拓扑发现协议。该协议允许网络交换机在网络拓扑结构发生改变后自动与其他网络设备进行协商,并将根据新的列车车厢的指令为网络设备分配一个IP地址。 2、TRDP 列车实时数据协议规定了TRDP-PD过程数据和TRDP-MD消息数据两种主要的通信模式,两…

通讯协议汇总

UART UART(Universal Asynchronous Receiver/Transmitter)是一种通用串行数据总线,用于异步通信。该总线双向通信,可以实现全双工传输和接收。 物理拓扑 帧结构/数据传输形式# 起始位:先发一个逻辑0,表示传输字符的开始&#xf…

十六、停止等待协议

文章目录 1、为什么要有停止等待协议2、研究停等协议的前提3、应用停等协议的两种情况3.1 无差错的情况3.2 有差错的情况3.2.1 数据帧丢失或检测到帧出错3.2.2 ACK丢失3.2.3 ACK迟到 4、停等协议的性能分析THE END 1、为什么要有停止等待协议 \qquad 除了比特出差错&#xff0c…

获取实时股票行情通达信接口

获取实时股票行情通达信接口

今天给大家带来搜题公众号搭建教程(附赠搜题接口 还支持语音图片搜题)

今天给大家带来搜题公众号搭建教程(附赠搜题接口 还支持语音搜题) 下面带大家搭建搜题公众号 首先我们需要的材料: 1.有自己的微信公众号(已经注册好的,直接登录自己公众号即可) 注册公众号教程&#xff1a…

google搜索技巧——程序员推荐

文章目录 前言谷歌搜索语法指令用引号来查询一个确切的单词或短语OR查询排除特定网站标题搜索将搜索结果限制到特定网站查看某个地区内的相关信息将结果限制为特定的文件格式 小结 前言 在昨天使用Google搜索一个异常问题的时候,不经意间发现有如下的提示 参考如上…

Google 几种常见的高级搜索技巧

1、完全匹配搜素:“使用双引号” 2、模糊匹配:使用*代替 3、排除搜素:使用-排除 4、在特定的网站内搜索:使用 site:来搜索 5、特定文件类型搜索:使用filetype: 来搜索 6、限定在url中进行搜索:i…

百度、谷歌等搜索引擎高效搜索方法 —— 更快速搜索到你想要内容

一、常用搜索方法 1、限定标题 intitle 又被称为去广告搜索法,intitle命令,即in title(在标题里)返回的的结果是网页的标题包含该关键词。一般情况下搜索的关键词都会在标题里出现,使用intitle命令一般是在特殊需求下…

巴比特 | 元宇宙每日必读:传苹果将在6月开发者大会上发布混合现实头显,售价约三千美元,分析师预计今年出货量约为20万至30万部...

摘要:据腾讯科技报道,知情人士透露称,苹果公司预计将在6月份举行的开发者大会上发布其备受期待的混合现实头显,然而这款产品依然处于试验阶段,强推不成熟产品上市有违苹果的传统和规则。许多投资者质疑:消费…

iOS之适配苹果Universal Links 和升级友盟的QQ和微信分享艰难之路

安逸的日子总是那么短暂,刚上完线,唏嘘人生是那么短暂而又漫长,刚准备进入安逸圈,结果晴天霹雳 这特么是啥 ,我没动啥代码哇,瞬间感觉蛋蛋有微微的疼痛,经过测试只有新系统(iOS13.5)的微信才会出现这个 这肯定是友盟整什么幺蛾子了,打开文档一看 瞬间明白了什么 ,我现在用的…

Android 版灵动岛插件上线;iPhone 15或将改名,并改用USB-C接口;​Swift 5.7 发布|极客头条

「极客头条」—— 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧。 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews) 一分钟速览新闻点&…

毕业论文季,你需要一个黑科技

1、风来了,两极分化严重 ChatGPT 是一种基于大型语言模型,由 OpenAI 开发,ChatGPT 的发展得益于深度学习算法的发展和硬件设备的提升。 ChatGPT深度学习模型Python语言机器学习和自然语言处理算法。 继00年的电商、15年的短视频之后&#…

新手程序员要不要学英语?

点击上方“中兴开发者社区”,关注我们 每天读一篇一线开发者原创好文 作为在中国工作的程序员,不懂得英语似乎也不妨碍找到好工作,升职加薪。但程序员这个工种则稍有不同,因为程序,尤其是高级语言,基本上都…

程序员去哪里找国外朋友来进行学习英语?

程序员有必要学习英语么?答案是肯定的!大部分优秀的计算机相关的资源(视频,文章等等)都是英文的,所以英语学习对一名优秀的程序员来说也是一门必修课. 如何能找到一名或者多么的国外朋友进行英语的学习,相信效果会更好.不过在和国外人交流之前你要拥有最基本的英语水平.这里我…

用中文编程,就不用学英语?我保证你会更头疼!

首先大概的看一下中文编码: 你以为会写中文写编程就简单了吗?这就像你以为会写汉字就会写出好文章一样。编程是和机器沟通,因此要用机器的语言而不是人类的语言。 最早的程序就是0和1的数字,不是中文也不是英文。以前的程序员&…

英文不好到底能不能学会编程?

很多初学编程的小伙伴都会问,“我英语差能学编程吗?”。 首先,对于初学编程,或者一般的应用开发,并不需要多高深的英语水平,想要学会编程,简单的初高中英语水平足够了。 现在的程序开发环境又…

英语不好,能不能学会编程?

编程的人都会问: 我英文差能学会编程吗?? 学会编程不须要多浅近的英语水平,想要学会编程,简略的英语水平足够了。当初的程序开发环境又很敌对,基本上关上之后不须要怎么配置,间接写代码就行&a…

就大学生对网络舆情态度的调查

【新生研讨课】 ** 就大学生对网络舆情态度的调查 ** 成员:王诗雅,徐江源,孙静波,彭雨扬 当今社会,网络舆情非常严重,键盘侠层出不穷,网络暴力随处可见,令人痛心!&a…

给谷歌 浏览器安装Chrome-Charset 插件解决数据输出乱码问题

1.下载 插件地址:https://github.com/jinliming2/Chrome-Charset 2.点击如图 小图标 找到更多工具->扩展程序,点击如下图 选项 后选择你 下载好 的 插件 就好了 (一定要 解压 ), 3.使用如图(安装好 后就…