import java.math.BigDecimal;
import org.marketcetera.trade.Equity;
import org.marketcetera.strategy.java.Strategy;
import org.marketcetera.trade.Factory;
import org.marketcetera.trade.OrderSingle;
import org.marketcetera.trade.OrderType;
import org.marketcetera.trade.Side;
import org.marketcetera.trade.TimeInForce;
/**
* Test strategy that suggests trades.
*
* @author <a href="mailto:colin@marketcetera.com">Colin DuPlantis</a>
* @version $Id: SuggestTrades.java 16154 2012-07-14 16:34:05Z colin $
* @since 1.0.0
*/
public class SuggestTrades
extends Strategy
{
/* (non-Javadoc)
* @see org.marketcetera.strategy.java.Strategy#onStart()
*/
@Override
public void onStart()
{
doSuggestion();
}
/* (non-Javadoc)
* @see org.marketcetera.strategy.java.Strategy#onStop()
*/
@Override
public void onStop()
{
doSuggestion();
}
/**
* Executes a single suggestion test based on test parameters.
*/
private void doSuggestion()
{
String orderShouldBeNull = getParameter("orderShouldBeNull");
if(orderShouldBeNull != null) {
suggestTrade(null,
new BigDecimal("100.00"),
"suggestion");
} else {
OrderSingle suggestedOrder = Factory.getInstance().createOrderSingle();
suggestedOrder.setAccount(getParameter("account"));
String orderType = getParameter("orderType");
if(orderType != null) {
suggestedOrder.setOrderType(OrderType.valueOf(orderType));
}
String price = getParameter("price");
if(price != null) {
suggestedOrder.setPrice(new BigDecimal(price));
}
String quantity = getParameter("quantity");
if(quantity != null) {
suggestedOrder.setQuantity(new BigDecimal(quantity));
}
String side = getParameter("side");
if(side != null) {
suggestedOrder.setSide(Side.valueOf(side));
}
String symbol = getParameter("symbol");
if(symbol != null) {
suggestedOrder.setInstrument(new Equity(symbol));
}
String timeInForce = getParameter("timeInForce");
if(timeInForce != null) {
suggestedOrder.setTimeInForce(TimeInForce.valueOf(timeInForce));
}
String scoreString = getParameter("score");
BigDecimal score;
if(scoreString != null) {
score = new BigDecimal(scoreString);
} else {
score = null;
}
if(getParameter("doOrder") != null) {
if(getParameter("sendOrderShouldBeNull") != null) {
send(null);
} else {
send(suggestedOrder);
}
} else {
suggestTrade(suggestedOrder,
score,
getParameter("identifier"));
}
}
}
}