{{Quickfixn}} FW: FpML file

Ashutosh Mishra A.Mishra at ny.tr.mufg.jp
Mon Oct 28 07:05:49 PDT 2013



Thanks & Regards,
Ashutosh Mishra

*********************************************************************************
This communication (including any attachments) is intended only or the use of the individual whom it is addressed and may contain information that is privileged, confidential or legally protected.  If the reader of this message is not the intended recipient, you are hereby notified that any dissemination, distribution or copying of this communication is strictly prohibited. If you have received this communication in error, please notify us immediately by replying to the message.  Please also delete the message and its attachments, if any, from your computer and destroy any hard copies you may have created.  Thank you for your cooperation.
*********************************************************************************

From: Ashutosh Mishra
Sent: Monday, October 28, 2013 10:03 AM
To: 'Mailing list for QuickFIX/n'
Subject: FW: {{Quickfixn}} FpML file

Hi I am still awaiting for a response. I intend to do the following: We are using it simply to connect to TradeWeb Viewer, which is installed on our server, and extract the exection report, sent bt Tradeweb. From that Execution report we need to extract the required fields, whose values need to go to the data base.
Started with the initiator, but am getting error at QuickFix.transport. SocketInitiator. The error is :
Illegal characters in path.
   at System.IO.Path.CheckInvalidPathChars(String path)
   at System.IO.Path.NormalizePath(String path, Boolean fullCheck, Int32 maxPath
Length)
   at System.IO.Path.GetFullPathInternal(String path)
   at System.IO.Path.GetFullPath(String path)
   at System.Xml.XmlResolver.ResolveUri(Uri baseUri, String relativeUri)
   at System.Xml.XmlUrlResolver.ResolveUri(Uri baseUri, String relativeUri)
   at System.Xml.XmlTextReaderImpl..ctor(String url, XmlNameTable nt)
   at System.Xml.XmlDocument.Load(String filename)
   at QuickFix.DataDictionary.DataDictionary.Load(String path)
   at QuickFix.SessionFactory.createDataDictionary(SessionID sessionID, Dictiona
ry settings, String settingsKey, String beginString)
   at QuickFix.SessionFactory.ProcessFixDataDictionary(SessionID sessionID, Dict
ionary settings, DataDictionaryProvider provider)
   at QuickFix.SessionFactory.Create(SessionID sessionID, Dictionary settings)
   at QuickFix.AbstractInitiator..ctor(IApplication app, IMessageStoreFactory st
oreFactory, SessionSettings settings, ILogFactory logFactory, IMessageFactory me
ssageFactory)
   at QuickFix.Transport.SocketInitiator..ctor(IApplication application, IMessag
eStoreFactory storeFactory, SessionSettings settings, ILogFactory logFactory)



Thanks & Regards,
Ashutosh Mishra

*********************************************************************************
This communication (including any attachments) is intended only or the use of the individual whom it is addressed and may contain information that is privileged, confidential or legally protected.  If the reader of this message is not the intended recipient, you are hereby notified that any dissemination, distribution or copying of this communication is strictly prohibited. If you have received this communication in error, please notify us immediately by replying to the message.  Please also delete the message and its attachments, if any, from your computer and destroy any hard copies you may have created.  Thank you for your cooperation.
*********************************************************************************

From: Ashutosh Mishra
Sent: Friday, October 25, 2013 1:19 PM
To: 'quickfixn-subscribe at lists.quickfixn.com'
Subject: {{Quickfixn}} FpML file

Hi Walter,
                 I tried everything but am still stuck with the same error: "Illegal characters in path. at System.IO.Path...."
Here is all my code and configuration files:

@@@@@Initiator@@@@
# default settings for sessions
[DEFAULT]
FileStorePath="C:\Tradeweb_Application_Ver_1.0.1\QuickFixFiles"
FileLogPath="C:\Tradeweb_Application_Ver_1.0.1\QuickFixFiles\log"
ConnectionType=initiator
ReconnectInterval=60
StartTime=12:30:00
EndTime=21:30:00
SocketConnectPort=900
SocketConnectHost=127.0.0.1
ResetOnLogon=Y

# session definition
[SESSION]
# inherit FileStorePath, FileLogPath, ConnectionType,
# ReconnectInterval and SenderCompID from default
BeginString=FIX.4.4
SenderCompID=JTR
TargetCompID=TRADEWEB
# overide default setting for RecconnectInterval
ReconnectInterval=30
HeartBtInt=30
DataDictionary="C:\Tradeweb_Application_Ver_1.0.1\QuickFixFiles\FIX44.xml"
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@


@@@@@@@Program.cs@@@@@@
using System;
using System.IO;
using System.Xml;
using System.Xml.Schema;
using System.Xml.XPath;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Data.Sql;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using System.Data;
using System.Xml.Linq;
using System.Xml.Serialization;
using QuickFix;
using QuickFix.Fields;
using System.Threading;


namespace MutbTradeweb_Application_Ver_1._0._1
{
   public class Program
   {
       static void Main(string[] args)
       {
           try
           {

               QuickFix.SessionSettings settings = new QuickFix.SessionSettings(@"C:\Tradeweb_Application_Ver_1.0.1\TradeWebClientInitiator.cfg");
               TradeClientApp application = new TradeClientApp();
               QuickFix.IMessageStoreFactory storeFactory = new QuickFix.FileStoreFactory(settings);
               QuickFix.ILogFactory logFactory = new QuickFix.ScreenLogFactory(settings);
               QuickFix.Transport.SocketInitiator initiator = new QuickFix.Transport.SocketInitiator(application, storeFactory, settings, logFactory);
               initiator.Start();
               application.Run();
               Thread.Sleep(3000);
               //SessionID sessionID = (SessionID)l;
               //QuickFix.FIX44.NewOrderSingle order = new QuickFix.FIX44.NewOrderSingle(new ClOrdID("DLF"),
               //     new HandlInst(HandlInst.MANUAL_ORDER), new Symbol("DLF"), new Side(Side.BUY),
               //     new TransactTime(DateTime.Now), new OrdType(OrdType.LIMIT));
               //order.Set(new OrderQty(45));
               //order.Set(new Price(25));
               //Session.SendToTarget(order, sessionID);
               Console.ReadLine();
               initiator.Stop();
           }
           catch (Exception e)
           {
               Console.WriteLine(e.Message);
               Console.WriteLine(e.StackTrace);
           }
           Environment.Exit(1);
       }
    }
}
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

@@@@@@TradeClientApp.cs@@@@@@@@@@@@@@@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using QuickFix;
using QuickFix.Fields;
namespace MutbTradeweb_Application_Ver_1._0._1
{
    public class TradeClientApp : QuickFix.MessageCracker, QuickFix.IApplication
    {
        Session _session = null;

       //rivate string userName, password;
        //private SessionID settings;

        // This variable is a kludge for developer test purposes.  Don't do this on a production application.
        public IInitiator MyInitiator = null;

        #region IApplication interface overrides
        public void OnCreate(SessionID sessionID)
        {
            _session = Session.LookupSession(sessionID);
        }
        public void OnLogon(SessionID sessionID)
        {
            //Console.WriteLine("Logon - " + sessionID.ToString());
        }
        public void OnLogout(SessionID sessionID)
        {
            //Console.WriteLine("Logout - " + sessionID.ToString());
        }


        public void FromAdmin(QuickFix.Message value, SessionID sessionID)
        {
            var logon = (QuickFix.FIX44.Logon)value;
            if (logon != null)
            {
                string userName = logon.Username.getValue();
                //string expectedPassword = GetUserPassword[userName];
                string expectedPassword = "abc";
                string suppliedPassword = logon.Password.getValue();
                if (expectedPassword != suppliedPassword)
                throw new RejectLogon("Wrong Password");
            }

        }
        public void ToAdmin(QuickFix.Message value, QuickFix.SessionID sessionID)
        {
            if (value.Header.GetField(Tags.MsgType) == MsgType.LOGON)
            {
                if (!string.IsNullOrEmpty("a1234") && !string.IsNullOrEmpty("abc"))
                {
                    var logon = (QuickFix.FIX44.Logon)value;
                    logon.Set(new EncryptMethod(0));
                    logon.Set(new HeartBtInt(30));
                    logon.Set(new Password("acbd"));
                    logon.Set(new ResetSeqNumFlag(true));
                }

            }

        }
        public void FromApp(QuickFix.Message value, SessionID session)
        {

            if (value is QuickFix.FIX44.ExecutionReport)
            {

                Price price = new Price();
                value.GetField(price);

                ClOrdID clOrdID = new ClOrdID();
                value.GetField(clOrdID);


            }

            Console.WriteLine("Got message from App" + value.ToString());

        }
        //public void FromApp(Message message, SessionID sessionID)
        //{
        //    Console.WriteLine("IN:  " + message.ToString());
        //    try
        //    {
        //        Crack(message, sessionID);
        //    }
        //    catch (Exception ex)
        //    {
        //        Console.WriteLine("==Cracker exception==");
        //        Console.WriteLine(ex.ToString());
        //        Console.WriteLine(ex.StackTrace);
        //    }
        //}

        public void ToApp(Message message, SessionID sessionID)
        {
            try
            {
                bool possDupFlag = false;
                if (message.Header.IsSetField(QuickFix.Fields.Tags.PossDupFlag))
                {
                    possDupFlag = QuickFix.Fields.Converters.BoolConverter.Convert(
                        message.Header.GetField(QuickFix.Fields.Tags.PossDupFlag)); /// FIXME
                }
                if (possDupFlag)
                    throw new DoNotSend();
            }
            catch (FieldNotFoundException)
            { }


            Console.WriteLine();
            Console.WriteLine("OUT: " + message.ToString());
        }
        #endregion

        #region MessageCracker handlers
        public void OnMessage(QuickFix.FIX44.ExecutionReport m, SessionID s)
        {
            Console.WriteLine("Received execution report");
        }

        public void OnMessage(QuickFix.FIX44.OrderCancelReject m, SessionID s)
        {
            Console.WriteLine("Received order cancel reject");
        }
        #endregion

        public void Run()
        {
            while (true)
            {
                try
                {
                    char action = QueryAction();
                   if (action == '1')
                        QueryEnterOrder();
                    else if (action == '2')
                        QueryCancelOrder();
                    else if (action == '3')
                        QueryReplaceOrder();
                    else if (action == '4')
                        QueryMarketDataRequest();
                    else if (action == 'g')
                    {
                        if (this.MyInitiator.IsStopped)
                        {
                            Console.WriteLine("Restarting initiator...");
                            this.MyInitiator.Start();
                        }
                        else
                            Console.WriteLine("Already started.");
                    }
                    else if (action == 'x')
                    {
                        if (this.MyInitiator.IsStopped)
                            Console.WriteLine("Already stopped.");
                        else
                        {
                            Console.WriteLine("Stopping initiator...");
                            this.MyInitiator.Stop();
                        }
                    }
                    else if (action == 'q' || action == 'Q')
                        break;
                }
                catch (System.Exception e)
                {
                    Console.WriteLine("Message Not Sent: " + e.Message);
                    Console.WriteLine("StackTrace: " + e.StackTrace);
                }
            }
            Console.WriteLine("Program shutdown.");
        }

        private void SendMessage(Message m)
        {
            if (_session != null)
                _session.Send(m);
            else
            {
                // This probably won't ever happen.
                Console.WriteLine("Can't send message: session not created.");
            }
        }


        private char QueryAction()
        {
            // Commands 'g' and 'x' are intentionally hidden.
            Console.Write("\n"
                + "1) Enter Order\n"
                + "2) Cancel Order\n"
                + "3) Replace Order\n"
                + "4) Market data test\n"
                + "Q) Quit\n"
                + "Action: "
            );


            HashSet<string> validActions = new HashSet<string>("1,2,3,4,q,Q,g,x".Split(','));


            string cmd = Console.ReadLine().Trim();
            if (cmd.Length != 1 || validActions.Contains(cmd) == false)
                throw new System.Exception("Invalid action");


            return cmd.ToCharArray()[0];
        }


        private void QueryEnterOrder()
        {
            Console.WriteLine("\nNewOrderSingle");


            QuickFix.FIX44.NewOrderSingle m = QueryNewOrderSingle44();


            if (m != null && QueryConfirm("Send order"))
            {
                m.Header.GetField(Tags.BeginString);
                SendMessage(m);
            }
        }


        private void QueryCancelOrder()
        {
            Console.WriteLine("\nOrderCancelRequest");


            QuickFix.FIX44.OrderCancelRequest m = QueryOrderCancelRequest44();


            if (m != null && QueryConfirm("Cancel order"))
                SendMessage(m);
        }


        private void QueryReplaceOrder()
        {
            Console.WriteLine("\nCancelReplaceRequest");


            QuickFix.FIX44.OrderCancelReplaceRequest m = QueryCancelReplaceRequest44();


            if (m != null && QueryConfirm("Send replace"))
                SendMessage(m);
        }


        private void QueryMarketDataRequest()
        {
            Console.WriteLine("\nMarketDataRequest");


            QuickFix.FIX44.MarketDataRequest m = QueryMarketDataRequest44();


            if (m != null && QueryConfirm("Send market data request"))
                SendMessage(m);
        }


        private bool QueryConfirm(string query)
        {
            Console.WriteLine();
            Console.WriteLine(query + "?: ");
            string line = Console.ReadLine().Trim();
            return (line[0].Equals('y') || line[0].Equals('Y'));
        }


        #region Message creation functions
        private QuickFix.FIX44.NewOrderSingle QueryNewOrderSingle44()
        {
            QuickFix.Fields.OrdType ordType = null;


            QuickFix.FIX44.NewOrderSingle newOrderSingle = new QuickFix.FIX44.NewOrderSingle(
                QueryClOrdID(),
                QuerySymbol(),
                QuerySide(),
                new TransactTime(DateTime.Now),
                ordType = QueryOrdType());


            newOrderSingle.Set(new HandlInst('1'));
            newOrderSingle.Set(QueryOrderQty());
            newOrderSingle.Set(QueryTimeInForce());
            if (ordType.getValue() == OrdType.LIMIT || ordType.getValue() == OrdType.STOP_LIMIT)
                newOrderSingle.Set(QueryPrice());
            if (ordType.getValue() == OrdType.STOP || ordType.getValue() == OrdType.STOP_LIMIT)
                newOrderSingle.Set(QueryStopPx());


            return newOrderSingle;
        }


        private QuickFix.FIX44.OrderCancelRequest QueryOrderCancelRequest44()
        {
            QuickFix.FIX44.OrderCancelRequest orderCancelRequest = new QuickFix.FIX44.OrderCancelRequest(
                QueryOrigClOrdID(),
                QueryClOrdID(),
                QuerySymbol(),
                QuerySide(),
                new TransactTime(DateTime.Now));


            orderCancelRequest.Set(QueryOrderQty());
            return orderCancelRequest;
        }


        private QuickFix.FIX44.OrderCancelReplaceRequest QueryCancelReplaceRequest44()
        {
            QuickFix.FIX44.OrderCancelReplaceRequest ocrr = new QuickFix.FIX44.OrderCancelReplaceRequest(
                QueryOrigClOrdID(),
                QueryClOrdID(),
                QuerySymbol(),
                QuerySide(),
                new TransactTime(DateTime.Now),
                QueryOrdType());


            ocrr.Set(new HandlInst('1'));
            if (QueryConfirm("New price"))
                ocrr.Set(QueryPrice());
            if (QueryConfirm("New quantity"))
                ocrr.Set(QueryOrderQty());


            return ocrr;
        }


        private QuickFix.FIX44.MarketDataRequest QueryMarketDataRequest44()
        {
            MDReqID mdReqID = new MDReqID("MARKETDATAID");
            SubscriptionRequestType subType = new SubscriptionRequestType(SubscriptionRequestType.SNAPSHOT);
            MarketDepth marketDepth = new MarketDepth(0);


            QuickFix.FIX44.MarketDataRequest.NoMDEntryTypesGroup marketDataEntryGroup = new QuickFix.FIX44.MarketDataRequest.NoMDEntryTypesGroup();
            marketDataEntryGroup.Set(new MDEntryType(MDEntryType.BID));


            QuickFix.FIX44.MarketDataRequest.NoRelatedSymGroup symbolGroup = new QuickFix.FIX44.MarketDataRequest.NoRelatedSymGroup();
            symbolGroup.Set(new Symbol("LNUX"));


            QuickFix.FIX44.MarketDataRequest message = new QuickFix.FIX44.MarketDataRequest(mdReqID, subType, marketDepth);
            message.AddGroup(marketDataEntryGroup);
            message.AddGroup(symbolGroup);


            return message;
        }
        #endregion


        #region field query private methods
        private ClOrdID QueryClOrdID()
        {
            Console.WriteLine();
            Console.Write("ClOrdID? ");
            return new ClOrdID(Console.ReadLine().Trim());
        }


        private OrigClOrdID QueryOrigClOrdID()
        {
            Console.WriteLine();
            Console.Write("OrigClOrdID? ");
            return new OrigClOrdID(Console.ReadLine().Trim());
        }


        private Symbol QuerySymbol()
        {
            Console.WriteLine();
            Console.Write("Symbol? ");
            return new Symbol(Console.ReadLine().Trim());
        }


        private Side QuerySide()
        {
            Console.WriteLine();
            Console.WriteLine("1) Buy");
            Console.WriteLine("2) Sell");
            Console.WriteLine("3) Sell Short");
            Console.WriteLine("4) Sell Short Exempt");
            Console.WriteLine("5) Cross");
            Console.WriteLine("6) Cross Short");
            Console.WriteLine("7) Cross Short Exempt");
            Console.Write("Side? ");
            string s = Console.ReadLine().Trim();


            char c = ' ';
            switch (s)
            {
                case "1": c = Side.BUY; break;
                case "2": c = Side.SELL; break;
                case "3": c = Side.SELL_SHORT; break;
                case "4": c = Side.SELL_SHORT_EXEMPT; break;
                case "5": c = Side.CROSS; break;
                case "6": c = Side.CROSS_SHORT; break;
                case "7": c = 'A'; break;
                default: throw new Exception("unsupported input");
            }
            return new Side(c);
        }


        private OrdType QueryOrdType()
        {
            Console.WriteLine();
            Console.WriteLine("1) Market");
            Console.WriteLine("2) Limit");
            Console.WriteLine("3) Stop");
            Console.WriteLine("4) Stop Limit");
            Console.Write("OrdType? ");
            string s = Console.ReadLine().Trim();


            char c = ' ';
            switch (s)
            {
                case "1": c = OrdType.MARKET; break;
                case "2": c = OrdType.LIMIT; break;
                case "3": c = OrdType.STOP; break;
                case "4": c = OrdType.STOP_LIMIT; break;
                default: throw new Exception("unsupported input");
            }
            return new OrdType(c);
        }


        private OrderQty QueryOrderQty()
        {
            Console.WriteLine();
            Console.Write("OrderQty? ");
            return new OrderQty(Convert.ToDecimal(Console.ReadLine().Trim()));
        }


        private TimeInForce QueryTimeInForce()
        {
            Console.WriteLine();
            Console.WriteLine("1) Day");
            Console.WriteLine("2) IOC");
            Console.WriteLine("3) OPG");
            Console.WriteLine("4) GTC");
            Console.WriteLine("5) GTX");
            Console.Write("TimeInForce? ");
            string s = Console.ReadLine().Trim();


            char c = ' ';
            switch (s)
            {
                case "1": c = TimeInForce.DAY; break;
                case "2": c = TimeInForce.IMMEDIATE_OR_CANCEL; break;
                case "3": c = TimeInForce.AT_THE_OPENING; break;
                case "4": c = TimeInForce.GOOD_TILL_CANCEL; break;
                case "5": c = TimeInForce.GOOD_TILL_CROSSING; break;
                default: throw new Exception("unsupported input");
            }
            return new TimeInForce(c);
        }


        private Price QueryPrice()
        {
            Console.WriteLine();
            Console.Write("Price? ");
            return new Price(Convert.ToDecimal(Console.ReadLine().Trim()));
        }


        private StopPx QueryStopPx()
        {
            Console.WriteLine();
            Console.Write("StopPx? ");
            return new StopPx(Convert.ToDecimal(Console.ReadLine().Trim()));
        }


        #endregion
    }

}
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Can you please help me with this?

Thanks & Regards,
Ashutosh Mishra

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.quickfixn.com/pipermail/quickfixn-quickfixn.com/attachments/20131028/7616724d/attachment-0002.htm>


More information about the Quickfixn mailing list