· 6 years ago · Jan 20, 2020, 02:48 PM
1global.Promise = require('bluebird');
2const FTXRest = require('./');
3const FTXWs = require('ftx-api-ws');
4const now = require('performance-now');
5const BitMEXClient = require('./indexBitmex');
6var FTXbidPrice = 0;
7
8var FTXaskPrice = 0;
9
10const ftxws = new FTXWs({
11 key: "3kLzV-WdA0y2tDInH9PA9oCmcbJG7KolLIZ75DFg",
12 secret: "dSO5vqNoNCMI_-OsP5rMGrgOnGfU2DdYOR0fNPls",
13 subaccount: "btcarb"
14});
15
16var FTX_KEY = "3kLzV-WdA0y2tDInH9PA9oCmcbJG7KolLIZ75DFg";
17var FTX_SECRET = "dSO5vqNoNCMI_-OsP5rMGrgOnGfU2DdYOR0fNPls";
18var FTX_SUBACCOUNT = "btcarb";
19
20const ftx = new FTXRest({
21 key: "3kLzV-WdA0y2tDInH9PA9oCmcbJG7KolLIZ75DFg",
22 secret: "dSO5vqNoNCMI_-OsP5rMGrgOnGfU2DdYOR0fNPls",
23 subaccount: "btcarb"
24});
25
26const bitmex = new BitMEXClient({
27 testnet: false,
28 apiKeyID: "0nMEd5ag0emj5eBLSe8pNtWg",
29 apiKeySecret: "uLACu8ZZc7gYiDAOBx60yCbsglRMLlbqGwE6vsY4UValF_7Y",
30 maxTableLen: 100,
31});
32
33var api = new API({key:"3kLzV-WdA0y2tDInH9PA9oCmcbJG7KolLIZ75DF", secret:"dSO5vqNoNCMI_-OsP5rMGrgOnGfU2DdYOR0fNPls", subaccount:"btcarb"});
34
35import API from './api';
36import FIXParser, {
37 Field,
38 Fields,
39 Messages,
40 Side,
41 OrderTypes,
42 HandlInst,
43 TimeInForce,
44 EncryptMethod
45} from './fixparser/fixparser.js';
46
47api.ftxFix.connect();
48const sleep = ms => new Promise(r => setTimeout(r, ms));
49sleep(5000);
50
51bitmex.on('error', console.error);
52bitmex.on('open', () => console.log('Connection opened.'));
53bitmex.on('close', () => console.log('Connection closed.'));
54bitmex.on('initialize', () => console.log('Client initialized, data is flowing.'));
55
56bitmex.addStream('XBTUSD', 'trade', data => {
57 try {
58 for (let t = data.length - 1; t >= 0; t--) {
59
60 if(data[t].size >= 20000 && api.ftxFix.connected == true)
61 {
62 for(var i = 0; i<50; i++)
63 {
64 sendOrderFIX("sell", "BTC-PERP", FTXaskPrice+100, 0.01, false, true);
65 sendOrderFIX("buy", "BTC-PERP", FTXbidPrice-100, 0.01, false, true);
66 }
67 }
68 else if ( api.ftxFix.connected == false)
69 {
70 // api.ftxFix.connect();
71 }
72 }
73 } catch (e) {
74
75 console.error('trade ' + e);
76 }
77});
78
79
80async function WSstart() {
81 await ftxws.connect();
82 ftxws.subscribe('ticker', 'BTC-PERP');
83 ftxws.on('BTC-PERP::ticker', function(e) {
84 try {
85 if (e.bidSize < 4) {
86 FTXbidPrice = e.bid - 1;
87 } else {
88 FTXbidPrice = e.bid;
89 }
90 if (e.askSize < 4) {
91 FTXaskPrice = e.ask + 1;
92 } else {
93 FTXaskPrice = e.ask;
94 }
95 } catch (e) {
96 console.error('BTC-PERP::ticker ' + e);
97 }
98 });
99
100
101}
102
103WSstart();
104
105
106
107async function sendOrderFIX(side, market, price, size, postOnly, ioc) {
108 try {
109 const start = now();
110 const result = await api.ftxFix.placeOrder(side, market, price, size, postOnly, ioc);
111 const end = now();
112 console.log("SentOrderFIX took", (end - start).toFixed(5));
113 } catch (err) {
114 console.log('sendOrderFIX ', err);
115 }
116}