Child pages
  • Photon User Guide
Skip to end of metadata
Go to start of metadata

Overview

Photon is the Marketcetera Automated Trading Platform UI client. Photon is what's know as a fat client, meaning it is a standalone native executable as opposed to a thin client, which is typically made available via a web browser. To use Photon, you must install the Photon component for your platform and architecture. See the installation guide for more information on installing Photon.

Launching Photon

Photon uses the Eclipse Rich Client Platform. If you're familiar with the Eclipse IDE, Photon will look very familiar to you. On Windows, an entry for Photon will have been added to your Start menu or Desktop, as you requested during installation. On Linux, to start Photon:

$ cd marketcetera-2.2.1
$ . ./setEnv.sh
$ cd photon
$ ./photon

On OSX, there is a Photon.app which you can add to your toolbar or Applications folder.

Logging In

Photon can run by itself, however, most of its utility comes from connecting to other components in the Marketcetera Automated Trading Platform stack, like the Deploy Anywhere Routing Engine and one or more Strategy Engines. Upon start, Photon prompts you to log in to the Deploy Anywhere Routing Engine (DARE) in the cloud. This system is available for you to use without charge for your evaluation of Marketcetera.

The default credentials for DARE are user/password. You share this user with all other evaluators. When you install your own DARE appliance later, you can set up your own users.

Once you've entered the credentials to connect to DARE, you can tell if Photon has successfully connected by the status icons at the bottom. The icons will change from

to

(the left light is for the connection to DARE, the right light is for the connection to the Market Data Nexus, more on that later)

After connecting, some views that require a connection to DARE are populated, like the Open Orders View and the Positions View. More on these and other views later.

By default, Photon is configured to connect to DARE appliance running in the cloud. However, if you have licensed a DARE appliance for your own data center, you can configure Photon to connect to that host instead. Select Cancel from the login dialog and then Edit->Preferences. Select Connections in the left pane.

You can enter a new IP address (in place of dare.marketcetera.com) for the IP address of your DARE appliance. Select OK and then File->Reconnect Server to resume the login process. There is also a menubar icon for Reconnect Server, for your convenience. If you are already connected to the server when you select Reconnect Server, your current connection will be closed and a new connection established. This is harmless, though there may be a small delay depending on the amount of trading activity that's occurred today as Photon downloads today's activity from DARE.

In addition to the DARE Server connection, there is also a connection to the Market Data Nexus. By default, Photon is expecting a Market Data Nexus installation on your local host. The Strategy Engine installation by default is configured to also provide a Market Data Nexus instance. The default port is 8998 for the Market Data Nexus.

Perspectives

A Perspective in Photon is a collection of Views that combine to provide a workspace with a specific business function. Perspectives in Photon include Equity, Option, Future, Currency, and Strategy. You can also create your own Perspectives with a workflow that makes sense to you. Modifications to Perspectives, including opening, resizing, moving, or closing Views, will be remembered next time you open Photon.

Views

A View in Photon is one of the dockable and resizeable tabs with a title and a menubar. Views may be maximized, minimized, closed, and moved. In addition to some common Eclipse Views, Photon provides custom Views. Several Views are associated with each Perspective. Additional Views may be opened by selecting Window->Open View:

Console View

The Console View is a standard Eclipse View with some Photon-specific customizations. 

There are three sub-views: Main, Sink Console, and Notifications. The Main Console provides basic information from Photon. The default message level is INFO. This can be changed at Edit->Preferences->Photon.

The Sink Console displays messages from connected Strategy Agents. There aren't any Strategy Agent connections yet, more on that later.

The Notifications Console displays messages from Photon that correspond to pop-up messages, like server disconnect and reconnect messages, for example.

Market Data View

Photon provides market data via the Market Data Nexus for display and P&L calculation. Let's take a look at the display of market data. The Marketcetera Automated Trading Platform divides market data into content types:

  • Top of Book - best bid and offer
  • Latest Tick - most recent trade
  • Marketstat - statistics, including OHLC (open price, high price, low price, and close price)
  • NASDAQ Level 2 (NQDS) - top-of-book for NASDAQ exchange participants
  • NASDAQ TotalView (ITCH) - full order book depth for NASDAQ market participants
  • NYSE OpenBook limit-order book for all NYSE-traded securities
  • Aggregated Depth - generic depth data with order sizes aggregated at each price level
  • Unaggregated Depth - generate depth data no price level aggregation

In Photon, top-of-book, latest tick, and marketstat are displayed in the Market Data View:

To display market data in the Market Data View, enter a symbol in the Market Data View menubar and press the green plus button or press enter. The symbol you enter will be submitted to all the active market data adapters. Each adapter will interpret the symbol according to its nature and return market data accordingly. If more than one market data adapter is active and returning data for the same symbol, the market data displayed will come from the most recently supplied market data event. Note that, in the above image, there are two equities and one future instrument displayed. Market data can be displayed for multiple instruments at the same time.

It is important to note that Marketcetera, Inc. does not itself supply market data. Market data comes to the platform via a market data adapter from an external source, like Thompson Reuters or Lime. You will need an account with one of these providers in order to view market data. More on market data adapters later.

If the market data event displayed in the Market Data View comes from a market data adapter that supports depth-of-book, you can select a row in the Market Data View and open the Market Depth View.

The available depth views are displayed in the right-click menu for a given row in the Market Data View. Selecting one of the available market data depth types will open the Market Depth View.


You can select buy or sell from the right-click menu from either the Market Data or the Market Depth Views. Doing so will open the appropriate Order Ticket View populated with the bid or ask from the selected row depending on whether you selected buy (ask) or sell (bid).

Order Ticket Views

The Order Ticket Views are used to place new orders and cancel replace order requests. There is a specialized Order Ticket View for each supported asset class.

FieldTypeRequiredDefaultEquityOptionFutureCurrencyMessage Field
BrokerDropdownYesAuto SelectYesYesYesYesSpecial1
SideDropdownYes YesYesYesYesSide (54)
QuantityDecimalYes YesYesYesYesOrderQty (38)
SymbolString2Yes YesYesYesYesSymbol (55)
Order TypeDropdownYes YesYesYesYesOrdType (40)
PriceDecimalConditional3 YesYesYesYesPrice (44)
TIFDropdownYesDayYesYesYesYesTimeInForce (59)
AccountStringNo YesYesYesYesAccount (1)
IcebergDecimalNo YesYesYesYesMaxFloor (111)
AlgoDropdownNo YesYesYesYesVaries4
Custom FieldsTableNo YesYesYesYesVaries5
Expiration YearNumber: YYYYFuture NoNoYesNoMaturityMonthYear (200)
Expiration MonthDropdownFuture NoNoYesNoMaturityMonthYear (200)
ExpiryNumber: YYYYMMDDOption NoYesNoNoMaturityMonthYear (200), MaturityDay (205)
StrikeDecimalOption NoYesNoNoStrikePrice (202)
TypeDropdownOption NoYesNoNoPutOrCall (201)
Open/CloseDropdownNo NoYesNoNoOpenClose (77)
CapacityDropdownNo NoYesNoNoOrderCapacity (528)
Near TenorNumber: YYYYMMDDNo NoNoNoYesFutSettDate (64)
Far TenorNumber: YYYYMMDDNo NoNoNoYesSettDate2 (193)
Base CurrencyRadio ButtonYesCCY1NoNoNoYesSpecial6
  1. The list of available brokers is provided by the Order Routing System. An order may be targeted to a specific broker or the default or "auto-selected" broker may be selected.

  2. The symbol entered is provided to the broker as-is. There is no official symbology for instruments that is respected by all brokers, exchanges, and market data providers. Some providers accept numeric codes, others use OSI for options, and others use proprietary symbology. This is exacerbated by symbology of market data providers. In the next major release, the Marketcetera Automated Trading Platform will provide a symbol standardization system that will make this easier to manage. For now, keep in mind that the symbol in the order ticket has to be something understood by the broker to which you send the order.
  3. Price is required for non-market orders
  4. The algo dropdown and table allows you to target an order to a broker-specified algorithm. These algorithms are defined in the Order Routing System configuration. For example, the broker may offer a special VWAP or TWAP algorithm with parameters that specify participation or start and end times. These algorithm specifications are part of the broker configuration provided by Marketcetera, Inc. to subscription customers. For non-subscription customers, you may research and define these algorithms yourself depending on what your broker offers.
  5. The custom fields table allows you to specify FIX fields and values on outgoing orders that are not covered by existing widgets on the order ticket.
  6. Specifies whether to use the left currency as the base or the right. For example, for the symbol, USD/EUR, CCY1 is USD and CCY2 is EUR. You may swap these by setting the radio button value to CCY2.

Each asset class has its own Order Ticket View. The Future Order Ticket View is shown here.

FIX Message Views

Trading History

The FIX Message Views are based on FIX message history provided by DARE. Each FIX message received by DARE from brokers and exchanges contributes to the FIX message history. That can be a lot of messages! The Marketcetera Automated Trading System has the ability to filter the FIX message history to just those orders from the current trading session. By default, this feature is enabled and the session start time is set to 00:00:00, local time. To disable this feature (download all message history) or change the session start time, go to Edit->Preferences->Trading History:

This feature affects all Views that are based on FIX messages except the Positions View and Open Orders View, which obey special rules. If you change the Trading History settings, they will take effect the next time you start Photon or you Reconnect to the Server.

FIX Messages Menu

All FIX Message Views offer the same right-click and toolbar menus. To activate the FIX Messages Menu, right-click on a row in one of the FIX Messages Views.

Delete Report Menu

Selecting this menu item causes the corresponding report to be permanently deleted. You should not do this unless there's a very good reason, like a bad execution report from an exchange or broker. But, really, you shouldn't do this. Feel free to be intimidated by this message if you do:

View FIX Message Details Menu

This selection opens or refreshes the FIX Message Details View.

Replace Order Menu

This selection opens the Order Ticket View appropriate for the instrument in the message and formats all the fields from the message in order to prepare an order cancel replace request. This menu item is enabled for open orders only. Note that fields that cannot change in an order cancel replace replace are disabled.


Cancel Order Menu

This selection sends an order cancel request based on the given message. This menu item is enabled for open orders only. No confirmation is required; the cancel request is immediately sent.

Copy Menu

This selection copies a text version of the given message to the system clipboard.

FIX Messages Toolbar

All FIX Messages Views provide the same widgets in the View toolbar.

Filter Toolbar


Rows can be filtered with a regular expression based on the column names and values. For example, in the FIX Messages View above, both "Symbol=AAPL" and "Symbol~=A*PL" would yield the same results. Note the usage of "~=" instead of "=" to activate the regular expression filter.

FIX messages can be sorted by any of the columns. Columns can be dragged to change the column order. You can change the columns displayed in each FIX Messages View by selecting Edit->Preferences->FIX Columns.


New View Toolbar

Multiple Views of the same type can be opened by selecting the "picture frame" icon. Each View can have different column orders and filter settings.

FIX Message Permissions

All FIX Messages Views rely on FIX Messages as their input, either from the server database or incoming from the message bus. The messages that are visible are based on the current user. If the current used is a superuser, all messages are visible. If the current user is not a superuser, messages for the current user only are visible.

FIX Messages View

 The FIX Messages View shows all FIX messages in the trading history. Messages from previous trading history sessions are not displayed. 

FIX Message Details View

The FIX Message Details View shows a tag-by-tag view of a single FIX message. To activate the FIX Message Detail View, select a FIX message in any of the FIX Message Views and right-click. From the pop-up menu, select View FIX message details.

The message can be copied to the system clipboard, either as a text string or a table. Selecting a different row (left-click or right-click) in any of the FIX Message Views will automatically display the selected message in the FIX Message Details View.

Fills View

The Fills View shows order fills from today's trading session. Like other FIX Message Views, the Fills View supports multiple instances using the picture frame icon and filtering with regular expressions.

Average Price View

The Average Price View shows the average price of all fills from the current session per instrument.

Positions View

The Positions View shows all positions visible to the current user. The Positions View is partially based on FIX Messages and partially on persisted database state. Similarly to the FIX Messages Views, the contents of the Positions View are regulated by the permissions of the current user. If the current user is a superuser, all positions are visible. If the current user is not a superuser, only the current user's positions are visible. Flat and grouped layouts are available. Select the layout with the Positions View Toolbar icons.


Positions View Flat Layout


Positions View Grouped Layouts

Flat Layout

The Positions View default layout is the flat non-grouped view.

Grouped Layouts

The Positions View offers several grouped layouts:

  • Underlying, Account
  • Underlying, Trader
  • Account, Underlying
  • Account, Trader
  • Trader, Underlying
  • Trader, Account

The grouped layouts sort the positions into groupings of underlying (instrument), account, and trader. You select the first two by which to group, the third is selected by default.

Position P&L

Profit and Loss (P&L) information is calculated for positions in the Position View. In addition to (total/current) Position, there is also a column for Incoming Position. The Incoming Position is the position held at the start of the current trading session. Total Position shows the Incoming position plus any position changes from today.

There are 5 P&L columns:

  • Position PL
  • Trading PL
  • Realized PL
  • Unrealized PL
  • Total PL

P&L is calculated based on the active market data feed. The active market data feed must support LATEST_TICK and MARKETSTAT to enable P&L. If the active market data feed does not support these content types, is unable to deliver the content, or the content is unavailable, P&L will be displayed as N/A instead.

Open Orders View

The Open Orders View displays all open orders visible to the current user. As in other FIX Message Views, if the current user is a superuser, all open orders are visible, otherwise, the open orders of only the current user are visible. Open orders are visible regardless of the trading history setting. In other words, open orders from previous trading sessions will always be displayed.

Strategy Views

The Strategy Views present information related to the creation and execution of strategies. Strategies can be executed in a Strategy Engine. There is a Strategy Perspective that opens the standard set of Strategy Views. Strategy Views can be opened in any other perspective as desired by selecting the view from Window->Open View->Other.

Project Explorer View

The Project Explorer View is a standard Eclipse View. It shows strategies available to be deployed in a folder tree.

Use the Project Explorer View to create new strategies or deploy existing ones to be executed. More on creating and deploying strategies later.

Editor View

The Editor View provides a context and syntax-aware development environment for Java and Ruby strategies. Strategies can be created in this editor or in external IDE editors and imported.

Outline View

The Outline View shows the method names and some other information about the strategy in the active Editor View.

Strategy Engines View

The Strategy Engines View allows you to manage connections to external Strategy Engines. A Strategy Engine can run both Java and Ruby strategies. The Strategy Engines View displays all known Strategy Engines. Enabled Engines are connected and live. Disabled Engines are not currently connected.

To create a new Strategy Engine, select the "create" icon from the Strategy Engines View.


The Strategy Engine connection must match an installed Strategy Engine instance. More on installing Strategy Engines elsewhere.

After creating the Strategy Engines, select it in the Strategy Engines View and connect to it.

After you connect to the Strategy Engine, you can deploy, undeploy, start, and stop strategies running on that Strategy Engine. To deploy a strategy to a Strategy Engine, select the strategy in the Project Explorer View. You can deploy one of the sample strategies to start with. Later on, you can create your own.

To deploy a strategy, give the strategy a unique Instance Name. You can deploy several versions of the strategy on the same Strategy Engine, but each strategy must have a unique Instance Name. Choose whether the strategy should route its orders to the server or not. If you choose not to route orders to the server, when you run the strategy, it will create orders but these orders will not be sent. You can use this as a verification step before committing the strategy to running in production. Choose the engine to which to deploy the strategy.

After the strategy is deployed, you can start, stop, and undeploy it from the Strategy Engines View.

Some strategies accept strategy parameters. You can pass a set of key/value pairs to the strategy by selecting Properties from the Strategy Engines View popup menu.

The properties that a strategy expects are particular to that strategy. More on strategy parameters later. When the strategy is ready, start it from the Strategy Engines View popup menu.


Trade Suggestions

 The Trade Suggestions View shows potential trades that a strategy may create. Strategies can send trades directly with no user supervision, or, using the Trade Suggestions View, strategies may suggest trades that are either confirmed or rejected by a user. Rejected trades are discarded, confirmed trades are sent to the server and then to a broker just like a regular trade.

Trade suggestions are assigned a score by the strategy that creates them. The score is simply a value used to create a preference order for the user approving them and represent anything you want (scale of 0 to 1, 1 to 10,000, whatever). We'll get in to strategy coding in more detail later, but here's the snippet that created this trade suggestion:

OrderSingle order = Factory.getInstance().createOrderSingle();
order.setOrderType(OrderType.Limit);
order.setPrice(inBid.getPrice());
order.setQuantity(inBid.getSize());
order.setSide(Side.Buy);
order.setInstrument(inBid.getInstrument());
order.setTimeInForce(TimeInForce.Day);
suggestTrade(order, BigDecimal.ONE,"Suggested Trade");

You can also open the suggestion in the appropriate Order Ticket View for further modification:

  • No labels

4 Comments

  1. Hello,

    Need some help in connecting to default strategy Engine (dare.marketcetera.com).

    So, I did installed MarketCetera2.4.1 application on my Mac. Was able to launch Photon application and able to sell/buy orders by pointing to exchange.marketcetera.com 

    However, would like to connect to default RemoteStrategyAgent.

    Did configured below configurations in Remote Strategy Agent's Connection Details.

    tcp://dare.marketcetera.com:61616

    dare.marketcetera.com

    8999

    And when trying to connect to default Remote Strategy Agent, I am shown up with below error message.

    "com.google.protobuf.ServiceException : Unknown Service"

     

    Can someone help me on how we can connect to default Remote Strategy Agent? 

    Thanks,

    prasad.

    1. Quite simply, there isn't a default remote strategy engine. You're expected to install your own. However, we've been kicking around the idea of installing one, so we might yet do so. In the meantime, since you already installed the client on your Mac, just start the strategy engine with strategyengine.sh. It will connect to the DARE instance automatically.

      For the Strategy Engine's Connection details, use: tcp://localhost:61617 and localhost:8998.

  2. Thanks Colin DuPlantis for the quick response.

    So, I was able to connect to strategy engine from installed photon with your suggestion.

    And do have below two questions.

    1. Currently, I am unable to connect to MarketData feed (File->MarketDataFeed). Here, I am shown up with grey color MarketData icon on my photon toolbar below. 

             Between, what is the difference between ReconnectServer and Reconnect Market Data Feed ? Because, I was able to put orders and see on exchange.marketcetera.com.

              Here, I gave WebService Host as 'exchange.marketcetera.com' and Webservice Port as 7001

         

         2. And a dumb question, Lets say, If i implement strategy on Marketcetera 2.4.1. Is this strategy compatible on version Marketcetera 1.5 ?

     Can you confirm on this?

     

    Thanks Much! 

    Prasad.

  3. Hello All,

    I am completely new to Marketcetera. I have stuck in one problem.

    When I am using default configuration

    tcp://dare.marketcetera.com:61616

    dare.marketcetera.com

    8999

    then it is working fine, but when I am trying to connect from Marketcetera Photon 2.4.3 to localhost ORS 2.1.4 it is not getting connect.

    below is my preferences configuration snapshot.

    when I am trying to connect I am getting below error message.

    I have also configured port 9000 to localhost ORS with proper username and password.

    What is the problem?. Please help me.

     

    Thanks in advance.

    Neeraj