package com.activequant.interfaces.blackbox; import com.activequant.domainmodel.trade.event.OrderEvent; import com.activequant.domainmodel.trade.order.Order; import com.activequant.interfaces.utils.IEventSource; import com.activequant.messages.AQMessages; import com.activequant.messages.AQMessages.BaseMessage; /** * The black box interface holds all methods relevant for using a trading * service such as BrokerAQ. * * The blackbox is a facade behind which various services are orchestrated. * * This is, what was the AlgoEnvironment before. * * Currently not implemented: market state events. * * @author GhostRider * */ public interface IBlackBox { /** * all quotes arrive on this event. * * @return */ IEventSource<AQMessages.MarketDataSnapshot> quoteEvent(); /** * all ticks arrive on this event. * * @return */ IEventSource<AQMessages.Tick> tickEvent(); /** * all OHLC data arrives on this event. * * @return */ IEventSource<AQMessages.OHLC> ohlcEvent(); /** * market data subscription responses arrive here. * * @return */ IEventSource<AQMessages.MDSubscribeResponse> subscriptionResponseEvent(); /** * All order related events, such as order submitted, order rejected or * order done arrive here. * * @return */ IEventSource<OrderEvent> orderEvents(); /** * All acccount related messages arrive here. * * @return */ IEventSource<AQMessages.AccountDataMessage> accountDataEvent(); /** * Some servers send out server time, this arrives here. * * @return */ IEventSource<AQMessages.ServerTime> serverTimeEvent(); /** * Position/Portfolio messages arrive here. * * @return */ IEventSource<AQMessages.PositionReport> positionEvent(); /** * This method is called once the black box has connected the socket. * * @return */ IEventSource<String> connected(); /** * Called when the black box has been disconnected * * @return */ IEventSource<String> disconnected(); /** * Called when the black box is ready, for example once the black box * container has successfully logged in. * * @return */ IEventSource<String> ready(); /** * All messages that are being sent to the server have to pushed through * this method. * * @param bm */ void send(BaseMessage bm); }