/* $License$ */
/**
* <p>
* Defines various trading messages that can be sent to and received from
* the system's trading server. These messages can be created using
* the {@link org.marketcetera.trade.Factory}.
* </p>
* <p>
* The goal of the messages in this package is to enable a user
* to be able to send orders and receive reports without having to worry
* about the actual protocol or if the protocol is FIX, the actual version
* of FIX used by the broker.
* </p>
* <p>
* There are two types of messages that can be exchanged with the trading
* server.
* </p>
* <ol>
* <li>Orders</li>
* <li>Reports</li>
* </ol>
* <p>
* These messages can either be specified in the protocol that is used
* by the broker or they can be specified via various types
* defined in this package.
* </p>
* <h3>Types</h3>
* <p>
* It's recommended that java types defined in this package be used for sending
* and receiving the messages to the system's server. However, since FIX
* is the most prevalent protocol for communicating with the brokers and
* the types in this package support the most common but a limited set
* of features supported by FIX, mechanisms are provided to
* interact with FIX brokers using FIX messages.
* </p>
* <p>
* The types created by the {@link org.marketcetera.trade.Factory factory}
* will implement the {@link org.marketcetera.trade.FIXMessageSupport}
* interface, if they are wrapping a FIX Message.
* While using the API, any message type
* can be queried to find out if it implements the <code>FIXMessageSupport</code>
* interface and if it does, they can obtain a reference to the underlying
* FIX message and manipulate it directly.
* Typically, all the reports wrap a FIX Message, however this may not be
* true if the broker doesn't use FIX for communications,
* which might be rare but not impossible.
* </p>
* <p>
* The downside of using FIX Messages directly is that one ends up depending
* on the exact format of messages expected and provided by the
* broker and one may need to modify the code to be able to
* integrate with a different broker.
* </p>
* <p>
* Whereas the benefit of using java types defined in this package
* is that the system will ensure that those messages can be exchanged with
* any brokerss that the server is integrated with. However
* it may be necessary to use the FIX messages if one wants to use
* FIX features that are not exposed via the types provided in this package.
* </p>
* <p>
* Do note that orders support a
* {@link org.marketcetera.trade.OrderBase#getCustomFields()} attribute that
* can be used to set FIX fields that are not directly supported by the
* order types defined in this package.
* </p>
* <h3>Orders</h3>
* <p>
* The following kinds of orders are supported to trade securities.
* </p>
* <ol>
* <li>{@link org.marketcetera.trade.OrderSingle New Orders}</li>
* <li>{@link org.marketcetera.trade.OrderReplace Replacement Orders}</li>
* <li>{@link org.marketcetera.trade.OrderCancel Cancel Orders}</li>
* <li>{@link org.marketcetera.trade.OrderSingleSuggestion New Order Suggestion}</li>
* </ol>
* <p>
* Users are encouraged to use one of the above-mentioned types of the
* orders as the system will be able to send such orders to any connected
* broker, after translating them to the messaging protocol
* supported by the broker.
* </p>
* <p>
* Since the set of order features exposed via the above-mentioned order
* types is limited, a mechanism to create orders based on raw FIX messages
* is {@link org.marketcetera.trade.Factory#createOrder(quickfix.Message,org.marketcetera.trade.BrokerID) provided}.
* Do note that if this mechanism is used, the order may fail
* if it doesn't exactly match the FIX version used by the
* broker or if it doesn't contain the set of fields that
* the broker requires to be set.
* </p>
* <h3>Reports</h3>
* <p>
* The reports corresponding to the orders sent to the broker
* are wrapped in one of the following types, by the system, to enable
* users to process them without having to concern themselves with the
* exact format of reports provided by the broker.
* </p>
* <ol>
* <li>{@link org.marketcetera.trade.ExecutionReport Execution Reports}</li>
* <li>{@link org.marketcetera.trade.OrderCancelReject Cancellation Rejects}</li>
* </ol>
* <h3>Unique IDs</h3>
* <p>
* Both Orders and Reports are assigned unique IDs within the system. The
* {@link org.marketcetera.trade.Factory} assigns unique OrderIDs to all
* the orders when they are created by it. The reports when initially created
* have their ID set to a null value. An ID is assigned to them by the server
* when they are persisted.
* </p>
*
* @author anshul@marketcetera.com
* @version $Id: package-info.java 16154 2012-07-14 16:34:05Z colin $
* @since 1.0.0
*/
@XmlSchema (namespace = "http://marketcetera.org/types/trade")
package org.marketcetera.trade;
import javax.xml.bind.annotation.XmlSchema;