import java.math.BigDecimal;
import org.marketcetera.event.AskEvent;
import org.marketcetera.event.BidEvent;
import org.marketcetera.event.TradeEvent;
import org.marketcetera.quickfix.FIXVersion;
import org.marketcetera.strategy.java.Strategy;
import org.marketcetera.trade.BrokerID;
import org.marketcetera.trade.ExecutionReport;
import org.marketcetera.trade.Factory;
import org.marketcetera.trade.OrderSingle;
import quickfix.Message;
/**
* Test strategy that exercises a strategy's ability to retrieve parameters.
*
* @author <a href="mailto:colin@marketcetera.com">Colin DuPlantis</a>
* @version $Id: ParameterStrategy.java 16154 2012-07-14 16:34:05Z colin $
* @since 1.0.0
*/
public class ParameterStrategy
extends Strategy
{
@Override
public void onAsk(AskEvent ask)
{
String askParameter = getParameter("onAsk");
setProperty("onAsk",
askParameter);
}
@Override
public void onBid(BidEvent bid)
{
String bidParameter = getParameter("onBid");
setProperty("onBid",
bidParameter);
String emitSuggestion = getParameter("emitSuggestion");
if(emitSuggestion != null) {
OrderSingle suggestedOrder = Factory.getInstance().createOrderSingle();
suggestTrade(suggestedOrder,
new BigDecimal("1.1"),
"identifier");
}
}
@Override
public void onCallback(Object data)
{
String callbackParameter = getParameter("onCallback");
setProperty("onCallback",
callbackParameter);
}
@Override
public void onExecutionReport(ExecutionReport executionReport)
{
String executionReportParameter = getParameter("onExecutionReport");
setProperty("onExecutionReport",
executionReportParameter);
}
@Override
public void onTrade(TradeEvent trade)
{
String tradeParameter = getParameter("onTrade");
setProperty("onTrade",
tradeParameter);
String emitMessage = getParameter("emitMessage");
if(emitMessage != null) {
Message message = FIXVersion.FIX_SYSTEM.getMessageFactory().newBasicOrder();
sendMessage(message,
new BrokerID("some-broker"));
}
}
@Override
public void onOther(Object data)
{
String otherParameter = getParameter("onOther");
setProperty("onOther",
otherParameter);
}
}