package org.knowm.xchange.examples.btcchina.fix; import java.io.IOException; import java.io.InputStream; import java.util.UUID; import java.util.concurrent.TimeUnit; import org.knowm.xchange.btcchina.service.fix.BTCChinaApplication; import org.knowm.xchange.btcchina.service.fix.fix44.BTCChinaMessageFactory; import org.knowm.xchange.currency.CurrencyPair; import org.knowm.xchange.dto.account.AccountInfo; import org.knowm.xchange.dto.marketdata.Ticker; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import quickfix.ConfigError; import quickfix.DoNotSend; import quickfix.FileLogFactory; import quickfix.FileStoreFactory; import quickfix.Initiator; import quickfix.LogFactory; import quickfix.MessageFactory; import quickfix.MessageStoreFactory; import quickfix.SessionID; import quickfix.SessionNotFound; import quickfix.SessionSettings; import quickfix.SocketInitiator; public class BTCChinaClient { private static final Logger log = LoggerFactory.getLogger(BTCChinaClient.class); public static void main(String args[]) throws ConfigError, DoNotSend, IOException, SessionNotFound, InterruptedException { final String accessKey = args[0]; final String secretKey = args[1]; BTCChinaApplication app = new BTCChinaApplication() { @Override public void onLogon(quickfix.SessionID sessionId) { super.onLogon(sessionId); this.requestSnapshot(CurrencyPair.BTC_CNY, sessionId); this.requestSnapshotAndUpdates(CurrencyPair.BTC_CNY, sessionId); } @Override protected void onTicker(Ticker ticker, SessionID id) { log.info("ticker: {}", ticker); } @Override protected void onAccountInfo(String accReqId, AccountInfo accountInfo, SessionID id) { log.info("accReqId: {}, accountInfo: {}", accReqId, accountInfo); }; }; InputStream inputStream = BTCChinaClient.class.getResourceAsStream("client.cfg"); SessionSettings settings = new SessionSettings(inputStream); MessageStoreFactory storeFactory = new FileStoreFactory(settings); LogFactory logFactory = new FileLogFactory(settings); MessageFactory messageFactory = new BTCChinaMessageFactory(); Initiator initiator = new SocketInitiator(app, storeFactory, settings, logFactory, messageFactory); initiator.start(); while (!initiator.isLoggedOn()) { TimeUnit.SECONDS.sleep(1); } log.info("logged on."); SessionID sessionId = initiator.getSessions().get(0); // account info request: U1000 app.requestAccountInfo(accessKey, secretKey, UUID.randomUUID().toString(), sessionId); log.info("account info request sent."); TimeUnit.SECONDS.sleep(30); log.info("exiting..."); } }