/* ===========================================================
* TradeManager : a application to trade strategies for the Java(tm) platform
* ===========================================================
*
* (C) Copyright 2011-2011, by Simon Allen and Contributors.
*
* Project Info: org.trade
*
* This library is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation; either version 2.1 of the License, or
* (at your option) any later version.
*
* This library is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
* License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
* USA.
*
* [Java is a trademark or registered trademark of Oracle, Inc.
* in the United States and other countries.]
*
* (C) Copyright 2011-2011, by Simon Allen and Contributors.
*
* Original Author: Simon Allen;
* Contributor(s): -;
*
* Changes
* -------
*
*/
package org.trade.broker.client;
import java.util.concurrent.ConcurrentHashMap;
import org.trade.broker.BrokerModelException;
import org.trade.persistent.dao.Contract;
import org.trade.persistent.dao.Tradestrategy;
public class ClientSocket {
private static final ConcurrentHashMap<Integer, Broker> m_backTestBroker = new ConcurrentHashMap<Integer, Broker>();
private ClientWrapper m_client = null;
public ClientSocket(ClientWrapper client) {
m_client = client;
}
/**
* Method reqHistoricalData.
*
* @param reqId
* int
* @param ibContract
* com.ib.client.Contract
* @param endDateTime
* String
* @param durationStr
* String
* @param barSizeSetting
* String
* @param whatToShow
* String
* @param useRTH
* int
* @param formatDateInteger
* int
* @throws BrokerModelException
*/
public void reqHistoricalData(int reqId, Tradestrategy tradestrategy, String endDateTime, String durationStr,
String barSizeSetting, String whatToShow, int useRTH, int formatDateInteger) throws BrokerModelException {
try {
if (null != endDateTime) {
YahooBroker yahooBroker = new YahooBroker(reqId, tradestrategy.getContract(), endDateTime, durationStr,
barSizeSetting, m_client);
m_backTestBroker.put(reqId, yahooBroker);
yahooBroker.execute();
} else {
if (tradestrategy.getTrade()) {
DBBroker backTestBroker = new DBBroker(tradestrategy.getStrategyData(),
tradestrategy.getIdTradeStrategy(), m_client);
m_backTestBroker.put(reqId, backTestBroker);
backTestBroker.execute();
}
m_client.historicalData(reqId, "finished- at yyyyMMdd HH:mm:ss", 0, 0, 0, 0, 0, 0, 0, false);
}
} catch (Exception ex) {
throw new BrokerModelException(0, 6000, "Error initializing BackTestBroker Msg: " + ex.getMessage());
}
}
/**
* Method removeBackTestBroker.
*
* @param idTradestrategy
* Integer
*/
public void removeBackTestBroker(Integer idTradestrategy) {
synchronized (m_backTestBroker) {
Broker worker = m_backTestBroker.get(idTradestrategy);
if (null != worker) {
if (worker.isDone() || worker.isCancelled()) {
m_backTestBroker.remove(idTradestrategy);
}
}
}
}
/**
* Method getBackTestBroker.
*
* @param idTradestrategy
* Integer
*
* @return BackTestBroker
*/
public Broker getBackTestBroker(Integer idTradestrategy) {
return m_backTestBroker.get(idTradestrategy);
}
/**
* Method getBackTestBroker.
*
* @param reqId
* int
* @param contract
* Contract
* @param barSize
* int
* @param whatToShow
* String
* @param useRTH
* boolean
*/
public void reqRealTimeBars(int reqId, Contract contract, int barSize, String whatToShow, boolean useRTH) {
}
}