如何查看服务器配置配置QuickFIX/N

QuickFIX/N入门:二、发送消息及接收消息
QuickFIX/N的发送FIX消息的简单示例:
FIX44.NewOrderSingle order =
FIX44.NewOrderSingle(
ClOrdID("1234"),
Symbol("000001"),
Side(Side.BUY),
TransactTime(DateTime.Now),
OrdType(OrdType.MARKET));
Session.SendToTaget(order, sessionID);
首先,我们需要学习如何使用会话发送指令消息。
QuickFIX会话
发送消息时,我们必须指定QuickFIX会话,QuickFIX根据会话信息判定消息发送目的地。
所有QuickFIX会话的标识是在消息头定义的,通常包括SenderCompID,TargetCompID,BeginString等字段,这些都是在配置文件中指定。
SenderCompID=CONNAMARA
TargetCompID=CBOE
BeginString=FIX4.4
有几个获得会话的方式。一是当会话被创建并缓存它时,我们可以获得SessionID:
private SessionID MySessionID { }
public void OnCreate(SessionID sessionID)
&&& MySessionID = sessionID;
另外,我们可以在响应传入消息时,得到SessionID:
public void OnMessage(FIX42.ExecutionReport execution, SessionID sessionID)
&&& ProcessExecution(execution, sessionID);
或者,先在配置文件当中配置好所有的会话,我们可以从配置文件找到匹配的SessionID:
var mySessionID = new SessionID("FIX4.2", "senderCompID", "targetCompID");
创建和发送消息
创建消息时,我们首选使用指定Fix版本和消息类型的构造函数,填写必选字段:
using QuickF
using QuickFix.F
var order = new QuickFix.FIX44.NewOrderSingle(
&&& new ClOrdID("1234"),
&&& new Symbol("000001"),
&&& new Side(Side.BUY),
&&& new TransactTime(DateTime.Now),
&&& new OrdType(OrdType.LIMIT));
使用信息的字段属性设置字段值:
order.Price = new Price(new decimal(22.4));
order.Account = new Account("");
把上面的内容合并在一起:创建消息,设置其必需的字段,并设置两个附加字段,使用获得的SessionID,我们发送消息示意如下:
var order = new QuickFix.FIX44.NewOrderSingle(
&&& new ClOrdID("1234"),
&&& new Symbol("000001"),
&&& new Side(Side.BUY),
&&& new TransactTime(DateTime.Now),
&&& new OrdType(OrdType.LIMIT));
order.Price = new Price(new decimal(22.4));
order.Account = new Account("");
Session.SendToTarget(order, sessionID);
创建消息及字段的其他实现方式
类型安全的方式
,已经被证明它是最好的方式了,但我们也可以用其他创建消息及字段的方法。
每个消息类型都有一个默认的构造函数:
var order = new QuickFix.FIX44.NewOrderSingle();
order.ClOrdID =&new ClOrdID("1234");
order.Symbol = new Symbol("000001");
order.Side = new Side(Side.BUY);
我们也可以用QuickFIX
C ++及QuickFIX/J风格的get
/ set方法,也是类型安全的:
order.Set(new TransactTime(DateTime.Now));
order.Set(new OrdType(OrdType.LIMIT));
如果不是一个消息属性,可以用SetField设置一个字段的值:
order.SetField(new Account(""));
另外,也可以这么做,先创建一个Message基类的实例,它没有属性,因此都必须使用SetField&方法,但不建议使用这种风格:
var order = new QuickFix.Message();
order.Header.SetField(new MsgType("D"));
order.SetField(new ClOrdID("1234"));
order.SetField(new Symbol("AAPL"));
order.SetField(new Side(Side.BUY));
order.SetField(new TransactTime(DateTime.Now));
order.SetField(new OrdType(OrdType.LIMIT));
在QuickFIX/N接收类型安全和简单类型的消息:
public void OnMessage( QuickFix.FIX44.NewOrderSingle order,SessionID sessionID)
&&& ProcessOrder(order.Price, order.OrderQty, order.Account);
接收类型安全的消息
MessageCracker是一个抽象类,一个助手类,一般在类型安全的各个OnMessage方法中调用,用于解析各个FIX版本的委托消息类型。处理FIX消息时,
Crack方法会根据消息类型,判断其类型类型是否已定义消息类型,如果已定义的消息,将调用其已注册的处理方法来处理消息。
写QuickFIX/N应用时,应用类将继承MessageCracker,对于消息的处理,我们使用的都是指定​​的、强类型的Message和Field类,对于不同的消息类型,我们分别不同的处理方法实现处理逻辑。当消息到达时,
FromApp方法里面调用Crack,根据不同的消息类型,调用相应类型的消息处理方法&:
using QuickF
public class MyApplication : MessageCracker, Application
&&& public void FromApp(Message msg, SessionID sessionID)
&&&&&&& Crack(msg, sessionID);
在重载的onMessage回调方法当中调用Crack&。以下例子演示接收委托及证券信息:
public void OnMessage( QuickFix.FIX44.NewOrderSingle ord,&SessionID sessionID)
&&& ProcessOrder(ord.Price, ord.OrderQty, ord.Account);
public void OnMessage( QuickFix.FIX44.SecurityDefinition secDef,&SessionID sessionID)
&&& GotSecDef(secDef);
消息解析器示例
整合一下,一个类型安全的订单处理的应用是这样的:
public class MyApplication : MessageCracker, Application
&&& public void OnMessage(
&&&&&&& QuickFix.FIX42.NewOrderSingle ord,
&&&&&&& SessionID sessionID)
&&&&&&& ProcessOrder(ord.Price, ord.OrderQty, ord.Account);
&&& protected void ProcessOrder(
&&&&&&& Price price,
&&&&&&& OrderQty quantity,
&&&&&&& Account account)
&&&&&&& //...
&&& #region Application Methods
&&& public void FromApp(Message msg, SessionID sessionID)
&&&&&&& Crack(msg, sessionID);
&&& public void OnCreate(SessionID sessionID) { }
&&& public void OnLogout(SessionID sessionID) { }
&&& public void OnLogon(SessionID sessionID) { }
&&& public void FromAdmin(Message msg, SessionID sessionID)
&&& public void ToAdmin(Message msg, SessionID sessionID)
&&& public void ToApp(Message msg, SessionID sessionID)
&&& #endregion
非类型安全的应用实现
直接对接收到的Message基类消息进行处理,没有了类型安全的类及字段,需要很多额外的逻辑。一般不建议这样做。
public class MyApplication : Application
&&& public void FromApp(Message msg, SessionID sessionID)
&&&&&&& string msgType = msg.Header.GetString(Tags.MsgType);
&&&&&&& if (msgType.Equals(MsgType.EXECUTION_REPORT))
&&&&&&&&& string account = msg.GetString(Tags.Account);
&&&&&&&&& decimal price = msg.GetDecimal(Tags.Price);
&& &// ...same Application callbacks as above
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。QuickFIX/N入门:四、使用消息循环分组 - CSDN博客
QuickFIX/N入门:四、使用消息循环分组
分组(group)&是包含一个无序的字段的集合的命名类型。允许在一个循环组里出现重复的数据字段。&&
QuickFIX/N&实现了在FIX消息中创建和读取的组信息的功能。
1)&创建循环分组
创建一个循环分组很简单:&创建一个分组类的实例,向分组内添加字段,然后把它添加到消息中
var&tcr&=&new&QuickfiFix.FIX44.TradeCaptureReport();
var&sidesGrp1&=&new&QuickFix.FIX44.TradeCaptureReport.NoSidesGroup();
sidesGrp1.Account&=&new&Account(&Silvio&);
sidesGrp1.OrderID&=&new&OrderID(&&);
sidesGrp1.Side&=&new&Side(Side.BUY);
var&sidesGrp2&=&new&QuickFix.FIX44.TradeCaptureReport.NoSidesGroup();
sidesGrp2.Account&=&new&Account(&Sven&);
sidesGrp2.OrderID&=&new&OrderID(&2000&);
sidesGrp2.Side&=&new&Side(Side.BUY);
tcr.AddGroup(sidesGrp1);
tcr.AddGroup(sidesGrp2);
分组可以嵌套,也就是分组内还可以创建子分组:&
var&tcr&=&new&QuickFix.FIX44.TradeCaptureReport();
var&sidesGrp&=&new&QuickFix.FIX44.TradeCaptureReport.NoSidesGroup();
sidesGrp.Side&=&new&Side(Side.BUY);
sidesGrp.Account&=&new&Account(&Piola&);
sidesGrp.OrderID&=&new&OrderID(&&);
var&partyIdsGrp&=&new&QuickFix.FIX44.TradeCaptureReport.NoSidesGroup.NoPartyIDsGroup();
partyIdsGrp.PartyID&=&new&PartyID(&Nesta13&);
sidesGrp.AddGroup(partyIdsGrp);
tcr.AddGroup(sidesGrp);
2)&读取分组的信息
QuickFIX/N提供组字段和组索引两种方式来支持从组内读取标签信息:
var&sidesGrp1&=&new&QuickFix.FIX44.TradeCaptureReport.NoSidesGroup();
sidesGrp1&=&tcr.GetGroup(1,&Tags.NoSides);
var&sidesGrp2&=&new&QuickFix.FIX44.TradeCaptureReport.NoSidesGroup();
sidesGrp2&=&tcr.GetGroup(2,&Tags.NoSides);
组索引从1开始。我们可以使用for语句来循环读取分组的字段值:
var&noSidesGrp&=&new&QuickFix.FIX44.TradeCaptureReport.NoSidesGroup();
for(int&grpIndex&=&1;&grpIndex&=&message.GetInt(Tags.NoSides);&grpIndex&=&1)
&&&&noSidesGrp&=&message.GetGroup(grpIndex,&Tags.NoSides);
作者:jingle lin
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
本文已收录于以下专栏:
相关文章推荐
1、 关于QuickFIX
    QuickFix是一个C++FIX引擎,早期就(2001年)实现FIX协议的FIX引擎,它是免费、开放源码的,主要实现语言是C++,对.NET用户,它提供了.NE...
什么是Fixatdl
 FIXatdl(FIX Algorithmic Trading Definition Language),即Fix 算法交易定义语言,它是一个标准,它允许以简单,自由的方式...
1) 关于数据字典
     通常,为了满足的业务需求,我们需要对接的一般都是已修改过的或自定义的FIX协议。QuickFIX/N 为我们提供了一些强大的方式来处理这个问题,其中最简单的是通过数据字...
在初探Fix(一),我们运行了安装包自带的例子,本篇我们来一起让例子的程序源代码在Eclipse中运行起来,然后在以后的篇幅中,我会结合源代码来详细介绍Fix 协议的在QuickFix的实现...
QuickFix/J 会话QJ的所有消息发送和接收都是基于会话。配置文件中我们会看到两个标签:SenderCompID/TargetCompID,就像字面中传递出的信息一样,其表示的是接收会话的目标方...
QuickFix/j入门程序
Acceptor或者Initiator能够为您维护尽可能多的FIX会话,因而FIX会话标识的唯一性非常重要。在QuickFIX/N中,一个FIX会话的唯一标识是由:BeginString(FIX版本号...
一、     发送消息
QuickFIX/N的发送FIX消息的简单示例:
FIX44.NewOrderSingle order =
new FIX44.NewOrderSingle(
   ...
QuickFix/N简介 
FIX是Financial Information eXchange的简称。FIX是一种专门为实时电子证券交易设计的标准消息协议。该协议由FIX protocol, Lt...
他的最新文章
讲师:宋宝华
讲师:何宇健
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)网站已改版,请使用新地址访问:
quickfixn-master 关于金融证卷系统的fix 协议标准化代码使用的语言为.net。 Finance-Stock software system 券
262万源代码下载-
&文件名称: quickfixn-master& & [
& & & & &&]
&&所属分类:
&&开发工具: C#
&&文件大小: 79089 KB
&&上传时间:
&&下载次数: 0
&&提 供 者:
&详细说明:关于金融证卷系统的fix 协议标准化代码使用的语言为.net。-On the financial securities system of fix standard protocol code language for.Net.
文件列表(点击判断是否您需要的文件,如果是垃圾请在下面评价投诉):
&&quickfixn-master&&................\.gitattributes&&................\.gitignore&&................\.slugignore&&................\AcceptanceTest&&................\..............\ATApplication.cs&&................\..............\ATRunner.cs&&................\..............\AcceptanceTest.csproj&&................\..............\Comparator.rb&&................\..............\ComparatorTestCase.rb&&................\..............\FixParser.rb&&................\..............\FixParserTestCase.rb&&................\..............\Properties&&................\..............\..........\AssemblyInfo.cs&&................\..............\Reflector.rb&&................\..............\ReflectorClient.rb&&................\..............\ReflectorClientTestCase.rb&&................\..............\ReflectorServer.rb&&................\..............\ReflectorServerTestCase.rb&&................\..............\ReflectorTestCase.rb&&................\..............\Runner.rb&&................\..............\RunnerTestCase.rb&&................\..............\SocketServer.rb&&................\..............\SocketServerTestCase.rb&&................\..............\app.config&&................\..............\at.xsl&&................\..............\at_xml_to_nunit_xml.rb&&................\..............\at_xml_to_nunit_xml_test.rb&&................\..............\atfixturerun.rb&&................\..............\atrun&&................\..............\.....\release&&................\..............\.....\.......\Process.obj&&................\..............\.....\.......\ProcessTestCase.obj&&................\..............\.....\.......\getopt.obj&&................\..............\.....\.......\main.obj&&................\..............\.....\.......\vc80.idb&&................\..............\cfg&&................\..............\...\at_40.cfg&&................\..............\...\at_41.cfg&&................\..............\...\at_42.cfg&&................\..............\...\at_42.misc.cfg&&................\..............\...\at_43.cfg&&................\..............\...\at_44.cfg&&................\..............\...\at_44_noreset.cfg&&................\..............\...\at_50.cfg&&................\..............\...\at_50_sp1.cfg&&................\..............\...\at_50_sp2.cfg&&................\..............\debug&&................\..............\.....\at&&................\..............\.....\..\quickfix_net.dll&&................\..............\.....\..\quickfix_net.pdb&&................\..............\.....\..\quickfix_net_messages.dll&&................\..............\.....\..\quickfix_net_messages.pdb&&................\..............\.....\pt&&................\..............\.....\..\quickfix_net.dll&&................\..............\.....\..\quickfix_net.pdb&&................\..............\.....\..\quickfix_net_messages.dll&&................\..............\.....\..\quickfix_net_messages.pdb&&................\..............\definitions&&................\..............\...........\fields.fmt&&................\..............\...........\server&&................\..............\...........\......\Makefile.am&&................\..............\...........\......\fix40&&................\..............\...........\......\.....\10_MsgSeqNumEqual.def&&................\..............\...........\......\.....\10_MsgSeqNumGreater.def&&................\..............\...........\......\.....\10_MsgSeqNumLess.def&&................\..............\...........\......\.....\11a_NewSeqNoGreater.def&&................\..............\...........\......\.....\11b_NewSeqNoEqual.def&&................\..............\...........\......\.....\11c_NewSeqNoLess.def&&................\..............\...........\......\.....\13b_UnsolicitedLogoutMessage.def&&................\..............\...........\......\.....\14a_BadField.def&&................\..............\...........\......\.....\14b_RequiredFieldMissing.def&&................\..............\...........\......\.....\14c_TagNotDefinedForMsgType.def&&................\..............\...........\......\.....\14d_TagSpecifiedWithoutValue.def&&................\..............\...........\......\.....\14e_IncorrectEnumValue.def&&................\..............\...........\......\.....\14f_IncorrectDataFormat.def&&................\..............\...........\......\.....\14g_HeaderBodyTrailerFieldsOutOfOrder.def&&................\..............\...........\......\.....\14h_RepeatedTag.def&&................\..............\...........\......\.....\15_HeaderAndBodyFieldsOrderedDifferently.def&&................\..............\...........\......\.....\19a_PossResendMessageThatHAsAlreadyBeenSent.def&&................\..............\...........\......\.....\19b_PossResendMessageThatHasNotBeenSent.def&&................\..............\...........\......\.....\1a_ValidLogonMsgSeqNumTooHigh.def&&................\..............\...........\......\.....\1a_ValidLogonWithCorrectMsgSeqNum.def&&................\..............\...........\......\.....\1b_DuplicateIdentity.def&&................\..............\...........\......\.....\1c_InvalidSenderCompID.def&&................\..............\...........\......\.....\1c_InvalidTargetCompID.def&&................\..............\...........\......\.....\1d_InvalidLogonBadSendingTime.def&&................\..............\...........\......\.....\1d_InvalidLogonLengthInvalid.def&&................\..............\...........\......\.....\1d_InvalidLogonWrongBeginString.def&&................\..............\...........\......\.....\1e_NotLogonMessage.def&&................\..............\...........\......\.....\20_SimultaneousResendRequest.def&&................\..............\...........\......\.....\2a_MsgSeqNumCorrect.def&&................\..............\...........\......\.....\2b_MsgSeqNumTooHigh.def&&................\..............\...........\......\.....\2c_MsgSeqNumTooLow.def&&................\..............\...........\......\.....\2d_GarbledMessage.def&&................\..............\...........\......\.....\2e_PossDupAlreadyReceived.def&&................\..............\...........\......\.....\2e_PossDupNotReceived.def&&................\..............\...........\......\.....\2f_PossDupOrigSendingTimeTooHigh.def&&................\..............\...........\......\.....\2g_PossDupNoOrigSendingTime.def&&................\..............\...........\......\.....\2i_BeginStringValueUnexpected.def
&输入关键字,在本站262万海量源码库中尽情搜索:}

我要回帖

更多关于 win10如何看电脑配置 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信