Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const Binance = require('binance-api-node').default
- const binanceclient = Binance();
- const FTXRest = require('./');
- const BitMEXClient = require('./indexBitmex.js');
- const rp = require('request-promise');
- const FTXWs = require('ftx-api-ws');
- const now = require('performance-now');
- var crypto = require('crypto');
- const sleep = ms => new Promise(r => setTimeout(r, ms));
- // FIX account credentials
- const API = require('./api.js');
- let api = new API({key:"", secret:"", subaccount:""});
- var start;
- var end;
- var sendOrderCount = 0;
- var responseCount = 0;
- var FIXconnected = false;
- const ftxws = new FTXWs({
- key: "",
- secret: "",
- subaccount: ""
- });
- const ftx = new FTXRest({
- key: "",
- secret: "",
- subaccount: ""
- });
- var FTXbidPrice = 0;
- var FTXaskPrice = 0;
- var BinanceBTCBid = 0;
- var BinanceBTCAsk = 0;
- async function WSstart() {
- await ftxws.connect();
- ftxws.subscribe('ticker', 'BTC-PERP');
- ftxws.on('BTC-PERP::ticker', function(e) {
- try {
- FTXbidPrice = e.bid
- FTXaskPrice = e.ask;
- } catch (e) {
- console.error('BTC-PERP::ticker ' + e);
- }
- });
- await this.api.ftxFix.connect()
- this.api.ftxFix.on("message", message=>{
- console.log(message.encode())
- });
- }
- WSstart();
- var tradePrice = 0;
- var tradeSize = 0;
- var premiumBuyHisotry = [];
- var premiumSellHistory = [];
- var averageBuyPremium = 0;
- var averageSellPremium = 0;
- function calculatepremiumHistory()
- {
- if(BinanceBTCBid!=0 && FTXbidPrice!=0 && BinanceBTCAsk!=0 && FTXaskPrice!=0)
- {
- var buyPremium = FTXbidPrice - BinanceBTCBid;
- premiumBuyHisotry.push(buyPremium);
- var sellPremium = FTXaskPrice - BinanceBTCAsk;
- premiumSellHistory.push(sellPremium);
- }
- if(premiumBuyHisotry.length>5)
- {
- var tempaverage = 0;
- for(var i = 0; i<premiumBuyHisotry.length ; i++)
- {
- tempaverage = tempaverage+premiumBuyHisotry[i];
- }
- tempaverage = tempaverage/premiumBuyHisotry.length;
- averageBuyPremium = tempaverage;
- premiumBuyHisotry.shift();
- }
- if(premiumSellHistory.length>5)
- {
- var tempaverage = 0;
- for(var i = 0; i<premiumSellHistory.length ; i++)
- {
- tempaverage = tempaverage+premiumSellHistory[i];
- }
- tempaverage = tempaverage/premiumSellHistory.length;
- averageSellPremium = tempaverage;
- premiumSellHistory.shift();
- }
- }
- binanceclient.ws.ticker('BTCUSDT', ticker => {
- try {
- BinanceBTCBid = ticker.bestBid;
- BinanceBTCAsk = ticker.bestAsk;
- calculatepremiumHistory();
- } catch (e) {
- console.log("BTCUSDT " + e);
- }
- });
- binanceclient.ws.trades(['BTCUSDT'], trade => {
- try {
- tradePrice = parseFloat(trade.price);
- tradeSize = parseFloat(trade.quantity);
- if(parseFloat(tradePrice+averageBuyPremium) > FTXaskPrice*(1.001) && tradeSize > 1 && FTXbidPrice !=0 && FTXaskPrice!=0 && averageBuyPremium!=0)
- {
- if (FIXconnected == true)
- {
- console.log("sentFix Order");
- this.api.ftxFix.placeOrder('buy', 'BTC-PERP', FTXaskPrice+5, 0.005, false, true);
- }
- else
- {
- sendOrderFTX('buy', 'BTC-PERP', FTXaskPrice+5, 0.005, false, true);
- }
- }
- if(parseFloat(tradePrice+averageSellPremium) < FTXbidPrice*(0.999) && tradeSize > 1 && FTXbidPrice !=0 && FTXaskPrice!=0 && averageSellPremium!=0)
- {
- if (FIXconnected == true)
- {
- console.log("sentFix Order");
- this.api.ftxFix.placeOrder('sell', 'BTC-PERP', FTXbidPrice-5, 0.005, false, true);
- }
- else
- {
- sendOrderFTX('sell', 'BTC-PERP', FTXbidPrice-5, 0.005, false, true);
- }
- }
- } catch (e) {
- console.log("BTCUSDT " + e);
- }
- });
- async function sendOrderFTX(side, market, price, size, postOnly, ioc) {
- try {
- const data = await ftx.request({
- method: 'POST',
- path: '/orders',
- data: {
- 'market': market,
- 'side': side,
- 'price': price,
- 'order_type': 'limit',
- 'size': size,
- 'postOnly': postOnly,
- 'ioc': ioc
- }
- });
- console.log("Sent Order", side, price, size);
- } catch (err) {
- console.log(side, market, price, size, postOnly, ioc);
- console.log('sendOrderFTX ', err);
- }
- }
- setInterval(async () => {
- FIXconnected = api.ftxFix.connected;
- console.log(api.ftxFix.connected);
- }, 10000);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement