package com.xcong.excoin.processor;
|
|
|
import com.huobi.client.model.Candlestick;
|
import com.xcong.excoin.modules.coin.dao.OrderCoinDealDao;
|
import com.xcong.excoin.trade.ExchangeTrade;
|
import com.xcong.excoin.utils.RedisUtils;
|
import org.apache.commons.collections.CollectionUtils;
|
import org.springframework.stereotype.Service;
|
|
import javax.annotation.Resource;
|
import java.math.BigDecimal;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
|
@Service
|
public class MarketService {
|
// @Autowired
|
// private MongoTemplate mongoTemplate;
|
|
@Resource
|
private OrderCoinDealDao orderCoinDealDao;
|
|
@Resource
|
private RedisUtils redisUtils;
|
|
public List<Candlestick> findAllKLine(String symbol, String peroid) {
|
// Sort sort = new Sort(new Sort.Order(Sort.Direction.DESC,"time"));
|
// Query query = new Query().with(sort).limit(1000);
|
//
|
// return mongoTemplate.find(query,KLine.class,"exchange_kline_"+symbol+"_"+peroid);
|
return null;
|
}
|
|
public List<Candlestick> findAllKLine(String symbol, long fromTime, long toTime, String period) {
|
// Criteria criteria = Criteria.where("time").gte(fromTime).andOperator(Criteria.where("time").lte(toTime));
|
// Sort sort = new Sort(new Sort.Order(Sort.Direction.ASC,"time"));
|
// Query query = new Query(criteria).with(sort);
|
// List<KLine> kLines = mongoTemplate.find(query,KLine.class,"exchange_kline_"+symbol+"_"+ period);
|
// return kLines;
|
String key = "KINE_" + symbol + "_" + period;
|
Object data = redisUtils.get(key);
|
List list = new ArrayList();
|
if (data != null) {
|
list = (List) data;
|
}
|
return list;
|
}
|
//
|
// public ExchangeTrade findFirstTrade(String symbol,long fromTime,long toTime){
|
// Criteria criteria = Criteria.where("time").gte(fromTime).andOperator(Criteria.where("time").lte(toTime));
|
// Sort sort = new Sort(new Sort.Order(Sort.Direction.ASC,"time"));
|
// Query query = new Query(criteria).with(sort);
|
// return mongoTemplate.findOne(query,ExchangeTrade.class,"exchange_trade_"+symbol);
|
// }
|
|
// public ExchangeTrade findLastTrade(String symbol,long fromTime,long toTime){
|
// Criteria criteria = Criteria.where("time").gte(fromTime).andOperator(Criteria.where("time").lte(toTime));
|
// Sort sort = new Sort(new Sort.Order(Sort.Direction.DESC,"time"));
|
// Query query = new Query(criteria).with(sort);
|
// return mongoTemplate.findOne(query,ExchangeTrade.class,"exchange_trade_"+symbol);
|
// }
|
//
|
// public ExchangeTrade findTrade(String symbol, long fromTime, long toTime, Sort.Order order){
|
// Criteria criteria = Criteria.where("time").gte(fromTime).andOperator(Criteria.where("time").lte(toTime));
|
// Sort sort = new Sort(order);
|
// Query query = new Query(criteria).with(sort);
|
// return mongoTemplate.findOne(query,ExchangeTrade.class,"exchange_trade_"+symbol);
|
// }
|
|
public List<ExchangeTrade> findTradeByTimeRange(String symbol, long timeStart, long timeEnd) {
|
// Criteria criteria = Criteria.where("time").gte(timeStart).andOperator(Criteria.where("time").lt(timeEnd));
|
// Sort sort = new Sort(new Sort.Order(Sort.Direction.ASC,"time"));
|
// Query query = new Query(criteria).with(sort);
|
//
|
// return mongoTemplate.find(query,ExchangeTrade.class,"exchange_trade_"+symbol);
|
return orderCoinDealDao.selectOrderCoinDealByTime(symbol, new Date(timeStart), new Date(timeEnd));
|
// return null;
|
}
|
|
public void saveKLine(String symbol, String period, Candlestick kLine) {
|
// 先获取
|
String key = "KINE_" + symbol + "/USDT_" + period;
|
Object data = redisUtils.get(key);
|
List list = new ArrayList();
|
if (data != null) {
|
list = (List) data;
|
}
|
list.add(kLine);
|
redisUtils.set(key, list);
|
// mongoTemplate.insert(kLine,"exchange_kline_"+symbol+"_"+kLine.getPeriod());
|
}
|
|
/**
|
* 查找某时间段内的交易量
|
*
|
* @param symbol
|
* @param timeStart
|
* @param timeEnd
|
* @return
|
*/
|
public BigDecimal findTradeVolume(String symbol, long timeStart, long timeEnd) {
|
// Criteria criteria = Criteria.where("time").gt(timeStart)
|
// .andOperator(Criteria.where("time").lte(timeEnd));
|
// //.andOperator(Criteria.where("volume").gt(0));
|
// Sort sort = new Sort(new Sort.Order(Sort.Direction.ASC,"time"));
|
// Query query = new Query(criteria).with(sort);
|
// List<KLine> kLines = mongoTemplate.find(query,KLine.class,"exchange_kline_"+symbol+"_1min");
|
// BigDecimal totalVolume = BigDecimal.ZERO;
|
// for(KLine kLine:kLines){
|
// totalVolume = totalVolume.add(kLine.getVolume());
|
// }
|
// return totalVolume;
|
List<ExchangeTrade> exchangeTrades = orderCoinDealDao.selectOrderCoinDealByTime(symbol, new Date(timeStart), new Date(timeStart));
|
BigDecimal totalVolume = BigDecimal.ZERO;
|
if (CollectionUtils.isNotEmpty(exchangeTrades)) {
|
for (ExchangeTrade kLine : exchangeTrades) {
|
totalVolume = totalVolume.add(kLine.getBuyTurnover());
|
}
|
}
|
|
return totalVolume;
|
}
|
}
|