Commit 3263d5ee by rongjun

bug

parent b6ac6f49
......@@ -195,6 +195,10 @@ class biboxApi {
this._request("GET", "/v1/account/balances",{limit: limit || 20, page: page || 1}, callback);
}
coins_info(callback) {
this._publicRequest("/v1/market/open/coins",{}, callback);
}
getTrades(symbol, callback) {
callback(null, null)
}
......
......@@ -4,6 +4,7 @@ const restCurrencies = ["PRA","AAC","AT","RED","BU","QTUM","EOSDAC","HPB","ORME"
const machine = process.env['MACHINE'];
const biboxApi = require('./api_kucoin');
const zlib = require('zlib');
let coinInfoMap = null
const Strategy3MaxAmountMap = {
USDT: 300,
BTC: 0.05,
......@@ -93,6 +94,21 @@ class BiboxCollector extends BaseCollector{
_runMonitor(callback){
let balanceMap = {};
let need = 1;
if(!coinInfoMap){
console.log('start get coin info...');
coinInfoMap = {}
this.api.coins_info((error,result)=>{
if(error){
console.error('get coins info error')
}else {
if(result.data){
for(let d of result.data){
coinInfoMap[d.coin] = d
}
}
}
});
}
this.api.balance(20, 1, (error,result)=>{
if(error){
console.error("get balance by rest error:");
......@@ -145,9 +161,14 @@ class BiboxCollector extends BaseCollector{
}
processAmount(fromCurrency,toCurrency,amount){
//有可能会由于数值过小,传进来的amount被表示为科学计数法法
let tradePrecision = 4;
const coin = coinInfoMap[toCurrency];
if(coin){
tradePrecision = coin['tradePrecision'] || 4;
}
const amountStr = parseFloat(amount).toFixed(10);
const nums = amountStr.split('.');
if(nums.length ===2 && nums[1].length>4){
if(nums.length ===2 && nums[1].length>tradePrecision){
return nums[0]+"."+nums[1].slice(0,4);
}
return amount;
......
......@@ -20,7 +20,7 @@ function returnFakeOrder(symbol, price, amount) {
}
}
function convertToRecordOrder(order) {
function convertToRecordOrder(order, price) {
let status = constants.OrderStatusNew;
if(order.pendingAmount === 0){
status = constants.OrderStatusFilled;
......@@ -34,7 +34,7 @@ function convertToRecordOrder(order) {
}
return {
orderId: order.orderOid + '',
price: order.dealPriceAverage,
price: price,
status: status,
transactTime: order.createdAt,
origQty: order.pendingAmount + order.dealAmount,
......@@ -53,7 +53,7 @@ class Order {
this.api = new biboxApi();
}
_handleFOKSearchResult(orderId, symbol, side, finalCallback, error, result) {
_handleFOKSearchResult(orderId, symbol, side, price, finalCallback, error, result) {
if (error) {
console.error("搜索订单出错");
console.error(error);
......@@ -63,7 +63,7 @@ class Order {
timeout = 2000;
}
setTimeout(() => {
this.api.searchOrder(orderId, symbol, side, this._handleFOKSearchResult.bind(this, orderId, symbol, side, finalCallback));
this.api.searchOrder(orderId, symbol, side, this._handleFOKSearchResult.bind(this, orderId, symbol, side, price, finalCallback));
}, timeout);
return;
}
......@@ -71,20 +71,20 @@ class Order {
if(!order.dealAmount && !order.pendingAmount){
console.error("没有返回amount 和deal amount字段,继续搜索");
console.log(result)
this.api.searchOrder(orderId, symbol, side, this._handleFOKSearchResult.bind(this, orderId, symbol, side, finalCallback));
this.api.searchOrder(orderId, symbol, side, this._handleFOKSearchResult.bind(this, orderId, symbol, side, price, finalCallback));
}else if (order.pendingAmount === 0 || !order.isActive) {
finalCallback(null, convertToRecordOrder(order));
finalCallback(null, convertToRecordOrder(order, price));
} else if (order.dealAmount === 0 || (order.dealAmount > 0 && order.pendingAmount >0)) {
this.api.cancelOrder(orderId, symbol, side, (error, result) => {
// setTimeout(() => {
console.log("尝试取消,准备搜索订单");
this.api.searchOrder(orderId, symbol, side, this._handleFOKSearchResult.bind(this, orderId, symbol, side, finalCallback));
this.api.searchOrder(orderId, symbol, side, this._handleFOKSearchResult.bind(this, orderId, symbol, side, price, finalCallback));
// }, 80)
})
} else {
setTimeout(() => {
console.log("订单尚未完成或取消,再次搜索");
this.api.searchOrder(orderId, symbol, side, this._handleFOKSearchResult.bind(this, orderId, symbol, side, finalCallback));
this.api.searchOrder(orderId, symbol, side, this._handleFOKSearchResult.bind(this, orderId, symbol, side, price, finalCallback));
}, 500);
}
}
......@@ -101,7 +101,7 @@ class Order {
}
const orderId = result.data.orderOid;
setTimeout(()=>{
this.api.searchOrder(orderId, symbol, side, this._handleFOKSearchResult.bind(this, orderId, symbol, side, callback));
this.api.searchOrder(orderId, symbol, side, this._handleFOKSearchResult.bind(this, orderId, symbol, side, price, callback));
},50);
})
}
......@@ -137,7 +137,7 @@ class Order {
api2.searchOrder(orderId, symbol, side, handleSearchResult.bind(this));
return;
}
callback(null, convertToRecordOrder(result.data));
callback(null, convertToRecordOrder(result.data, price));
}
this.api.searchOrder(orderId, symbol, side, handleSearchResult.bind(this));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment