예제 #1
0
 public UnderlyingTicker(
     MamdaOptionChain chain,
     bool printStrikes)
 {
     myChain        = chain;
     myPrintStrikes = printStrikes;
 }
예제 #2
0
 public void onOptionChainGap(
     MamdaSubscription subscription,
     MamdaOptionChainListener listener,
     MamaMsg msg,
     MamdaOptionChain chain)
 {
     printChain(chain);
 }
예제 #3
0
 public OptionContractTicker(MamdaOptionContract contract,
                             MamdaOptionChain chain,
                             OptionChainDisplay display)
 {
     myContract = contract;
     myChain    = chain;
     myDisplay  = display;
 }
예제 #4
0
 public void onOptionSeriesUpdate(
     MamdaSubscription subscription,
     MamdaOptionChainListener listener,
     MamaMsg msg,
     MamdaOptionSeriesUpdate update,
     MamdaOptionChain chain)
 {
     printChain(chain);
 }
예제 #5
0
 public void onOptionChainRecap(
     MamdaSubscription subscription,
     MamdaOptionChainListener listener,
     MamaMsg msg,
     MamdaOptionChain chain)
 {
     myGotRecap = true;
     printChain(chain);
 }
예제 #6
0
            public void onOptionContractCreate(
                MamdaSubscription subscription,
                MamdaOptionChainListener listener,
                MamaMsg msg,
                MamdaOptionContract contract,
                MamdaOptionChain chain)
            {
                // (Optional: create a trade/quote handler for the
                // individual option contract.)
                OptionContractTicker aTicker =
                    new OptionContractTicker(contract, chain, this);

                contract.addQuoteHandler(aTicker);
                contract.addTradeHandler(aTicker);
            }
            public void printChain(MamdaOptionChain chain)
            {
                if (!myGotRecap)
                {
                    return;
                }

                int      i        = 0;
                Iterator callIter = chain.callIterator();
                Iterator putIter  = chain.putIterator();

                Console.WriteLine("Chain: " + chain.getSymbol());

                while (callIter.hasNext() || putIter.hasNext())
                {
                    Console.Write("" + i + " | ");
                    if (callIter.hasNext())
                    {
                        MamdaOptionContract callContract =
                            (MamdaOptionContract)callIter.next();
                        printContract(callContract);
                    }
                    else
                    {
                        Console.Write("          ");
                    }

                    Console.Write(" | ");

                    if (putIter.hasNext())
                    {
                        MamdaOptionContract putContract =
                            (MamdaOptionContract)putIter.next();
                        printContract(putContract);
                    }
                    else
                    {
                    }
                    Console.WriteLine();
                    ++i;
                }
                Console.Out.Flush();
            }
예제 #8
0
        public static void Main(string[] args)
        {
            MamaTransport        baseTransport     = null;
            MamaTransport        optionTransport   = null;
            MamaTransport        dictTransport     = null;
            string               dictTransportName = null;
            MamaQueue            defaultQueue      = null;
            MamaDictionary       dictionary        = null;
            CommandLineProcessor options = new CommandLineProcessor(args);

            if (options.hasLogLevel())
            {
                logLevel_ = options.getLogLevel();
                Mama.enableLogging(logLevel_);
            }

            try
            {
                // Initialize MAMA
                myBridge = new MamaBridge(options.getMiddleware());
                Mama.open();

                // Initialize transports.  We're assuming that options and
                // underlyings might be on different transports.  Note:
                // some companies might use multiple transports for
                // underlyings (e.g., CTA and NASDAQ), which case it would
                // be necessary to create three transports here and be
                // sure to pass the correct transport later.
                baseTransport = new MamaTransport();
                baseTransport.create(options.getTransport(), myBridge);
                optionTransport = baseTransport;
                defaultQueue = Mama.getDefaultEventQueue(myBridge);

                // Fetch and initialize the data dictionary
                MamaSource dictionarySource = new MamaSource();
                dictionarySource.symbolNamespace = options.getDictSource();
                dictTransportName = options.getDictTransport();
                if (null != dictTransportName)
                {
                    dictTransport = new MamaTransport();
                    dictTransport.create(dictTransportName, myBridge);
                }
                else
                {
                    dictTransport = baseTransport;
                }
                dictionarySource.transport = dictTransport;
                dictionary = buildDataDictionary(dictTransport, defaultQueue, dictionarySource);
                MamdaQuoteFields.setDictionary(dictionary, null);
                MamdaTradeFields.setDictionary(dictionary, null);
                MamdaFundamentalFields.setDictionary(dictionary, null);
                MamdaOptionFields.setDictionary(dictionary, null);

                // Create listeners for each chain.  Two subscriptions are
                // necessary.
                foreach (string symbol in options.getSymbolList())
                {
                    // Create chain and listener objects.
                    MamdaTradeListener aBaseTradeListener = new MamdaTradeListener();
                    MamdaQuoteListener aBaseQuoteListener = new MamdaQuoteListener();
                    MamdaOptionChain anOptionChain = new MamdaOptionChain(symbol);
                    anOptionChain.setUnderlyingQuoteListener(aBaseQuoteListener);
                    anOptionChain.setUnderlyingTradeListener(aBaseTradeListener);
                    MamdaOptionChainListener  anOptionListener =
                        new MamdaOptionChainListener(anOptionChain);

                    // Create our handlers (the UnderlyingTicker and
                    // OptionChainDisplay could be a single class).
                    UnderlyingTicker  aBaseTicker =
                        new UnderlyingTicker(anOptionChain, true);
                    OptionChainDisplay  aDisplay =
                        new OptionChainDisplay(anOptionChain);

                    // Create subscriptions for underlying and option chain:
                    MamdaSubscription  aBaseSubscription = new MamdaSubscription();
                    MamdaSubscription  anOptionSubscription =
                        new MamdaSubscription();

                    // Register for underlying quote and trade events.
                    aBaseTradeListener.addHandler(aBaseTicker);
                    aBaseQuoteListener.addHandler(aBaseTicker);
                    aBaseSubscription.addMsgListener(aBaseTradeListener);
                    aBaseSubscription.addMsgListener(aBaseQuoteListener);

                    aBaseSubscription.create(
                        baseTransport,
                        defaultQueue,
                        options.getSource(),
                        symbol,
                        null);
                    mamdaSubscriptions.Add(aBaseSubscription);
                    // Register for underlying option events.
                    anOptionListener.addHandler(aDisplay);

                    // We set the timeout to 1 for this example because we
                    // currently use the timeout feature to determine when
                    // to say that we have received all of the initials.
                    // There will be a separate time interval for this in
                    // the future.
                    anOptionSubscription.setTimeout(1);
                    anOptionSubscription.addMsgListener(anOptionListener);
                    anOptionSubscription.addStaleListener(aDisplay);
                    anOptionSubscription.addErrorListener(aDisplay);
                    anOptionSubscription.setType(mamaSubscriptionType.MAMA_SUBSC_TYPE_GROUP);
                    anOptionSubscription.create(
                        optionTransport,
                        defaultQueue,
                        options.getSource(),
                        symbol,
                        null);
                    optionSubscriptions.Add(anOptionSubscription);
                }

                //Start dispatching on the default event queue
                Mama.start(myBridge);
                GC.KeepAlive(dictionary);

                Console.WriteLine("Press ENTER or Ctrl-C to quit...");
                Console.ReadLine();
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
                Environment.Exit(1);
            }
        }
예제 #9
0
            public void printChain(MamdaOptionChain  chain)
            {
                if (!myGotRecap)
                    return;

                int      i        = 0;
                Iterator callIter = chain.callIterator();
                Iterator putIter  = chain.putIterator();
                Console.WriteLine("Chain: " + chain.getSymbol());

                while (callIter.hasNext() || putIter.hasNext())
                {
                    Console.Write("" + i + " | ");
                    if (callIter.hasNext())
                    {
                        MamdaOptionContract callContract =
                            (MamdaOptionContract)callIter.next();
                        printContract(callContract);
                    }
                    else
                    {
                        Console.Write("          ");
                    }

                    Console.Write(" | ");

                    if (putIter.hasNext())
                    {
                        MamdaOptionContract putContract =
                            (MamdaOptionContract)putIter.next();
                        printContract(putContract);
                    }
                    else
                    {
                    }
                    Console.WriteLine();
                    ++i;
                }
                Console.Out.Flush();
            }
예제 #10
0
            public OptionContractTicker(MamdaOptionContract contract,
										MamdaOptionChain    chain,
										OptionChainDisplay  display)
            {
                myContract            = contract;
                myChain               = chain;
                myDisplay             = display;
            }
예제 #11
0
            public void onOptionContractCreate(
				MamdaSubscription         subscription,
				MamdaOptionChainListener  listener,
				MamaMsg                   msg,
				MamdaOptionContract       contract,
				MamdaOptionChain          chain)
            {
                // (Optional: create a trade/quote handler for the
                // individual option contract.)
                OptionContractTicker aTicker =
                    new OptionContractTicker(contract, chain, this);
                contract.addQuoteHandler(aTicker);
                contract.addTradeHandler(aTicker);
            }
예제 #12
0
            public void onOptionSeriesUpdate(
				MamdaSubscription         subscription,
				MamdaOptionChainListener  listener,
				MamaMsg                   msg,
				MamdaOptionSeriesUpdate   update,
				MamdaOptionChain          chain)
            {
                printChain(chain);
            }
예제 #13
0
            public void onOptionChainRecap(
				MamdaSubscription         subscription,
				MamdaOptionChainListener  listener,
				MamaMsg                   msg,
				MamdaOptionChain          chain)
            {
                myGotRecap = true;
                printChain(chain);
            }
예제 #14
0
            public void onOptionChainGap(
				MamdaSubscription         subscription,
				MamdaOptionChainListener  listener,
				MamaMsg                   msg,
				MamdaOptionChain          chain)
            {
                printChain(chain);
            }
예제 #15
0
            bool myGotRecap = false; // Updated when we get the first recap.

            #endregion Fields

            #region Constructors

            public OptionChainDisplay(MamdaOptionChain  chain)
            {
                myChain = chain;
            }
예제 #16
0
            bool myGotRecap          = false;     // Updated when we get the first recap.

            public OptionChainDisplay(MamdaOptionChain chain)
            {
                myChain = chain;
            }
예제 #17
0
        public static void Main(string[] args)
        {
            MamaTransport        baseTransport     = null;
            MamaTransport        optionTransport   = null;
            MamaTransport        dictTransport     = null;
            string               dictTransportName = null;
            MamaQueue            defaultQueue      = null;
            MamaDictionary       dictionary        = null;
            CommandLineProcessor options           = new CommandLineProcessor(args);


            if (options.hasLogLevel())
            {
                logLevel_ = options.getLogLevel();
                Mama.enableLogging(logLevel_);
            }

            try
            {
                // Initialize MAMA
                myBridge = new MamaBridge(options.getMiddleware());
                Mama.open();

                // Initialize transports.  We're assuming that options and
                // underlyings might be on different transports.  Note:
                // some companies might use multiple transports for
                // underlyings (e.g., CTA and NASDAQ), which case it would
                // be necessary to create three transports here and be
                // sure to pass the correct transport later.
                baseTransport = new MamaTransport();
                baseTransport.create(options.getTransport(), myBridge);
                optionTransport = baseTransport;
                defaultQueue    = Mama.getDefaultEventQueue(myBridge);

                // Fetch and initialize the data dictionary
                MamaSource dictionarySource = new MamaSource();
                dictionarySource.symbolNamespace = options.getDictSource();
                dictTransportName = options.getDictTransport();
                if (null != dictTransportName)
                {
                    dictTransport = new MamaTransport();
                    dictTransport.create(dictTransportName, myBridge);
                }
                else
                {
                    dictTransport = baseTransport;
                }
                dictionarySource.transport = dictTransport;
                dictionary = buildDataDictionary(dictTransport, defaultQueue, dictionarySource);
                MamdaQuoteFields.setDictionary(dictionary, null);
                MamdaTradeFields.setDictionary(dictionary, null);
                MamdaFundamentalFields.setDictionary(dictionary, null);
                MamdaOptionFields.setDictionary(dictionary, null);

                // Create listeners for each chain.  Two subscriptions are
                // necessary.
                foreach (string symbol in options.getSymbolList())
                {
                    // Create chain and listener objects.
                    MamdaTradeListener aBaseTradeListener = new MamdaTradeListener();
                    MamdaQuoteListener aBaseQuoteListener = new MamdaQuoteListener();
                    MamdaOptionChain   anOptionChain      = new MamdaOptionChain(symbol);
                    anOptionChain.setUnderlyingQuoteListener(aBaseQuoteListener);
                    anOptionChain.setUnderlyingTradeListener(aBaseTradeListener);
                    MamdaOptionChainListener anOptionListener =
                        new MamdaOptionChainListener(anOptionChain);

                    // Create our handlers (the UnderlyingTicker and
                    // OptionChainDisplay could be a single class).
                    UnderlyingTicker aBaseTicker =
                        new UnderlyingTicker(anOptionChain, true);
                    OptionChainDisplay aDisplay =
                        new OptionChainDisplay(anOptionChain);

                    // Create subscriptions for underlying and option chain:
                    MamdaSubscription aBaseSubscription    = new MamdaSubscription();
                    MamdaSubscription anOptionSubscription =
                        new MamdaSubscription();

                    // Register for underlying quote and trade events.
                    aBaseTradeListener.addHandler(aBaseTicker);
                    aBaseQuoteListener.addHandler(aBaseTicker);
                    aBaseSubscription.addMsgListener(aBaseTradeListener);
                    aBaseSubscription.addMsgListener(aBaseQuoteListener);

                    aBaseSubscription.create(
                        baseTransport,
                        defaultQueue,
                        options.getSource(),
                        symbol,
                        null);
                    mamdaSubscriptions.Add(aBaseSubscription);
                    // Register for underlying option events.
                    anOptionListener.addHandler(aDisplay);

                    // We set the timeout to 1 for this example because we
                    // currently use the timeout feature to determine when
                    // to say that we have received all of the initials.
                    // There will be a separate time interval for this in
                    // the future.
                    anOptionSubscription.setTimeout(1);
                    anOptionSubscription.addMsgListener(anOptionListener);
                    anOptionSubscription.addStaleListener(aDisplay);
                    anOptionSubscription.addErrorListener(aDisplay);
                    anOptionSubscription.setType(mamaSubscriptionType.MAMA_SUBSC_TYPE_GROUP);
                    anOptionSubscription.create(
                        optionTransport,
                        defaultQueue,
                        options.getSource(),
                        symbol,
                        null);
                    optionSubscriptions.Add(anOptionSubscription);
                }

                //Start dispatching on the default event queue
                Mama.start(myBridge);
                GC.KeepAlive(dictionary);

                Console.WriteLine("Press ENTER or Ctrl-C to quit...");
                Console.ReadLine();
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
                Environment.Exit(1);
            }
        }