- Square
- FCoin交易手续费统计(感谢满总分享) (2018-08-01 22:40:24)
FCoin交易手续费统计(感谢满总分享) (2018-08-01 22:40:24)
Author:
每日一嫩模, Date: 2018-06-13 22:47:16
Tags:
//2018-6-13 22:19
var Trades = [];
var fees = {"usdt": 0, "btc": 0, "eth": 0, "etc": 0, "ft": 0};
var num = 0;
var table = {
type: "table",
title: "标题",
cols: ["ts", "时间", "买卖", "委托数", "委托价", "成交额", "成交数", "成交均价", "手续费", "来源", "状态", "交易对", "委托类型", "手续费币"],
rows: []
};
var FC_pairs = FC_pairs();
function main() {
/*
symbol 交易对
states 订单状态
submitted 已提交
partial_filled 部分成交
partial_canceled 部分成交已撤销
filled 完全成交
canceled 已撤销
pending_cancel 撤销已提交
before 查询某个页码之前的订单
after 查询某个页码之后的订单
limit 每页的订单数量,默认为 20 条
*/
var Pairs = Object.keys(FC_pairs);//["btcusdt","ltcusdt","ethusdt","ftusdt","ftbtc","etcusdt","bchusdt"];
var States = ["partial_canceled", "filled", "partial_filled"];
var after = new Date().setHours(0, 0, 0, 0);
var end = after + 24 * 3600 * 1000;
var ts0 = new Date().getTime();
Pairs.forEach(function (Symbol) {
var ts = after;
States.forEach(function (State) {
while (true) {
Sleep(1000);
//Log(56,new Date().getTime()-ts0);
ts0 = new Date().getTime();
var ordersHistory = FC_ordersHistory(Symbol, State, "after", ts);
calcFees(ordersHistory, end);
if (ordersHistory.length < 100) {
break;
}
ts = ordersHistory[0].created_at + 1;
}
});
});
Log(fees, after, new Date(after));//new Date().format("M-d h:m:s")
table.title = JSON.stringify(fees);
table.rows = Trades;
// LogStatus("`" + JSON.stringify([table]) + "`" + "\n");
}
function calcFees(ordersHistory, end) {
ordersHistory.forEach(function (v) {
if (v.created_at < end) {
var quote = FC_pairs[v.symbol][v.side === "buy" ? 0 : 1];
if (!fees.hasOwnProperty(quote)) {
fees[quote] = 0;
}
fees[quote] += Number(v.fill_fees);
Trades.push(FC_ordersformat(v).concat([quote]));
}
});
}
function FC_pairs() {
var info;
var sleep = 1000;
try {
info = exchange.IO("api", "GET", "/v2/public/symbols");//
} catch (e) {
Log("FC_pairs()出错重试");
Sleep(sleep);
sleep += sleep;
FC_pairs();
}
if (info.hasOwnProperty("status") && info.status === 429) {
Log("429错误");
Sleep(10000);
FC_pairs();
} else {
info = info.data;
}
var ret = {};
info.forEach(function (v) {
if (!ret.hasOwnProperty(v)) {
ret[v.name] = {};
}
ret[v.name] = [v.base_currency, v.quote_currency];
});
return ret;
}
function FC_ordersHistory(symbol, states, after_before, ts) {
Log(ts, new Date(ts));
var args = "symbol=" + symbol + "&limit=100&states=" + states + "&" + after_before + "=" + ts;
var info;
var sleep = 3000;
try {
info = exchange.IO("api", "GET", "/v2/orders", args);
Log(args);
Log(info.data.length);
} catch (e) {
Log("FC_ordersHistory 出错重试");
Sleep(sleep);
sleep += sleep;
return FC_ordersHistory(symbol, states, after_before, ts);
}
if (info.hasOwnProperty("status") && info.status === 429) {
Log("429错误");
Sleep(10000);
return FC_ordersHistory(symbol, states, after_before, ts);
}
return info.data;
}
function FC_ordersformat(v) {
var ret = [v.created_at, new Date(v.created_at), v.side, Number(v.amount), Number(v.price), Number(v.executed_value), Number(v.filled_amount), _N(Number(v.executed_value) / Number(v.filled_amount), 8), Number(v.fill_fees), v.source, v.state, v.symbol, v.type];
return ret;
}
More