| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236 |
- var request_fiddler = {
- url: "https://www.mxc.io/api/member/order",
- headers: {
- Host: "www.mxc.io",
- Connection: "keep-alive",
- "Content-Length": "54",
- "x-mxc-nonce": "1581605390444",
- "x-mxc-sign": "3afff0f76ba2974576d3d54f6cad4ac6",
- Origin: "https://www.mxc.io",
- language: "zh-CN",
- "User-Agent":
- "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36",
- "Content-Type": "application/x-www-form-urlencoded",
- Accept: "*/*",
- "Sec-Fetch-Site": "same-origin",
- "Sec-Fetch-Mode": "cors",
- Referer: "https://www.mxc.io/trade/easy",
- "Accept-Encoding": "gzip, deflate, br",
- "Accept-Language": "zh-CN,zh;q=0.9",
- Cookie:
- "aliyungf_tc=AQAAALLEnBsWvAYABfWyJ96sVR6QwB17; Hm_lvt_bfc2c0a173378480991465c3626cc9b9=1581592076,1581586327; __guid=80454929.3940374504297067500.1581592047298.8274; _ga=GA1.2.1331008568.1581592060; 1d3385c1-4b59-4849-894d-fe519261429e=webim-visitor-X27GKYETXE4XVTP9VJEG; _gid=GA1.2.1232965346.1581776323; monitor_count=2; Hm_lpvt_bfc2c0a173378480991465c3626cc9b9=1581776324; u_id=WEBc358c9d9316ab0b0a0aeb3a60bfdf2d1e60a4857dc42e49644b36f51f5228e43; account=x********%40163.com"
- },
- body: "price=2000&quantity=0.01&symbol=VI_USDT&tradeType=SELL"
- };
- var startTime = "2020-2-15 22:50:30"; // 开始时间
- var stopTime = "2020-2-15 22:50:35"; // 结束时间
- var delaytime = 20; //间隔时间毫秒
- request_fiddler["time"] = "true";
- request_fiddler["rejectUnauthorized"] = "false";
- request_fiddler["method"] = "POST";
- var inputArr = [];
- var order_type;
- var instrument_id;
- var side;
- var match_price;
- var price;
- var size;
- var currentAccountNum;
- var xunhuancishu;
- var xunhuanjiange;
- var myVar;
- var xuhao = 0;
- function xiadan() {
- request(request_fiddler, (error, response, body) => {
- xuhao++;
- if (!error && response.statusCode == 200) {
- if (response.headers["content-encoding"] == "gzip") {
- console.log(xuhao + "有响应,但响应已压缩");
- } else {
- console.log(xuhao + response.body);
- }
- }
- });
- }
- const request = require("request");
- const rp = require("request-promise");
- const log4js = require("log4js");
- const fs = require("fs");
- const config = require("./config");
- const WebSocket = require("ws");
- const isPortReachable = require("is-port-reachable");
- fs.writeFileSync("autoTrade.log", "");
- const logger = log4js.getLogger();
- log4js.configure({
- appenders: {
- out: { type: "stdout" },
- file: { type: "file", filename: "autoTrade.log" }
- },
- categories: {
- default: { appenders: ["out", "file"], level: "debug" }
- }
- });
- let index;
- try {
- index = parseInt(process.argv.slice(2));
- if (!(index >= 0)) {
- throw "";
- }
- logger.info(`${index}号服务器开始运行`);
- } catch (e) {
- logger.error("参数错误,缺少序号");
- return;
- }
- let accounts = divideArray(config.accounts, config.servers.length)[index];
- //logger.info('账号', accounts);
- let challenges = divideArray(config.challenges, config.servers.length)[index];
- //logger.info('challenges', challenges);
- let purchaseAccount =
- config.purchaseAccounts[index % config.purchaseAccounts.length];
- let wsClients = [];
- let ws;
- async function initWs() {
- if (index == 0) {
- const wss = new WebSocket.Server({
- port: 8080
- });
- wss.on("connection", function connection(ws) {
- logger.info("websocket client已连接");
- ws.on("message", function incoming(message) {
- logger.info("received message:", message);
- if (message.startsWith("secretStr:")) {
- wsSend(message);
- if (interval) {
- clearInterval(interval);
- }
- let secretStr = message.replace("secretStr:", "");
- cancel();
- purchase(secretStr);
- }
- });
- wsClients.push(ws);
- });
- process.on("exit", function() {
- try {
- wss.close();
- } catch (e) {}
- });
- } else {
- await new Promise((resolve, reject) => {
- let ii = setInterval(async () => {
- logger.info("等待", config.servers[0]);
- let reachable = await isPortReachable(8080, {
- host: config.servers[0]
- });
- if (reachable) {
- clearInterval(ii);
- resolve();
- }
- }, 500);
- });
- ws = new WebSocket(`ws://${config.servers[0]}:8080`);
- ws.on("open", function open() {
- console.log("websocket已连接");
- });
- ws.on("message", function incoming(message) {
- logger.info("received message:", message);
- if (message.startsWith("secretStr:")) {
- let secretStr = message.replace("secretStr:", "");
- logger.info("收到secretStr", secretStr);
- if (interval) {
- clearInterval(interval);
- }
- cancel();
- purchase(secretStr);
- }
- });
- }
- }
- function wsSend(msg) {
- if (index == 0) {
- wsClients.forEach(client => {
- client.send(msg);
- });
- } else {
- ws.send(msg);
- }
- }
- let reqs = [];
- let count = 0;
- let interval;
- function cancel() {
- for (let req of reqs) {
- req.abort();
- }
- }
- async function start() {
- //await initWs();
- var timmer = setInterval(() => {
- xiadan();
- clearTimeout(check.timer);
- // 计算还剩多少时间开始
- let theDate = new Date(stopTime).getTime();
- let now = new Date().getTime();
- let deta = Math.floor((theDate - now) / 1000);
- //console.log( `距离结束还剩${deta}秒` )
- if (deta <= 0) {
- clearInterval(timmer);
- return;
- }
- }, delaytime);
- }
- var df = require("./date.format");
- var check = () => {
- // 先清除timer
- clearTimeout(check.timer);
- // 计算还剩多少时间开始
- let theDate = new Date(startTime).getTime();
- let now = new Date().getTime();
- let deta = Math.floor((theDate - now) / 1000);
- console.log(`距离发送还剩${deta}秒`);
- if (deta <= 0) {
- start();
- return;
- }
- check.timer = setTimeout(() => {
- check();
- }, 200);
- };
- check();
- function divideArray(arr, size) {
- let newArr = Array.from({ length: size }, () => []);
- for (let i = 0; i < arr.length; i++) {
- newArr[i % size].push(arr[i]);
- }
- return newArr;
- }
|