-
-
Save onthetunnel/4e3382657e464abdf1791f1c9b01e3a7 to your computer and use it in GitHub Desktop.
If you want to get it to work, you need to npm install all of the modules required at the top and change all occurances of process.env. BINANCEAPIKEY and process.env.BINANCESECRET with your apikey and secret. After this just run 'node scalpBot.js "SYMBOL" "PERCENT_TRAIL"'
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| const fs = require('fs') | |
| const https = require('https') | |
| const colors = require('colors') | |
| const moment = require('moment-timezone') | |
| const querystring = require('querystring') | |
| const percentOf = (per, num) => { | |
| return (num / 100) * per | |
| } | |
| const percentChange = (v1, v2) => { | |
| return (((v2 - v1) / Math.abs(v1)) * 100).toFixed(2) | |
| } | |
| const binanceAPI = options => { | |
| return new Promise((resolve, reject) => { | |
| try { | |
| let requestObject = { | |
| host: 'api.binance.com', | |
| port: 443, | |
| method: options.method | |
| } | |
| switch (`${options.method} ${options.endpoint}`) { | |
| case 'GET /api/v1/ping': | |
| { | |
| requestObject.path = options.endpoint | |
| let req = https.request(requestObject, res => { | |
| let data = '' | |
| res.on('data', (chunk) => { | |
| data = data.concat(chunk) | |
| }) | |
| res.on('end', () => { | |
| try { | |
| let jsonRes = JSON.parse(data) | |
| resolve(jsonRes) | |
| } catch (err) { | |
| reject(`binanceRequest err: ${util.inspect(err)}\nbinanceRequest data recieved b4 error: ${data}`) | |
| } | |
| }) | |
| }).on('error', (err) => { | |
| reject(`binanceRequest err: ${util.inspect(err)}\nbinanceRequest data recieved b4 error: ${data}`) | |
| }) | |
| req.end() | |
| } | |
| break | |
| case 'GET /api/v1/time': | |
| { | |
| requestObject.path = options.endpoint | |
| let req = https.request(requestObject, res => { | |
| let data = '' | |
| res.on('data', (chunk) => { | |
| data = data.concat(chunk) | |
| }) | |
| res.on('end', () => { | |
| try { | |
| let jsonRes = JSON.parse(data) | |
| resolve(jsonRes) | |
| } catch (err) { | |
| reject(`binanceRequest err: ${util.inspect(err)}\nbinanceRequest data recieved b4 error: ${data}`) | |
| } | |
| }) | |
| }).on('error', (err) => { | |
| reject(`binanceRequest err: ${util.inspect(err)}\nbinanceRequest data recieved b4 error: ${data}`) | |
| }) | |
| req.end() | |
| } | |
| break | |
| case 'GET /api/v1/exchangeInfo': | |
| { | |
| requestObject.path = options.endpoint | |
| let req = https.request(requestObject, res => { | |
| let data = '' | |
| res.on('data', (chunk) => { | |
| data = data.concat(chunk) | |
| }) | |
| res.on('end', () => { | |
| try { | |
| let jsonRes = JSON.parse(data) | |
| resolve(jsonRes) | |
| } catch (err) { | |
| reject(`binanceRequest err: ${util.inspect(err)}\nbinanceRequest data recieved b4 error: ${data}`) | |
| } | |
| }) | |
| }).on('error', (err) => { | |
| reject(`binanceRequest err: ${util.inspect(err)}\nbinanceRequest data recieved b4 error: ${data}`) | |
| }) | |
| req.end() | |
| } | |
| break | |
| case 'GET /api/v1/depth': | |
| { | |
| let query = querystring.stringify(options.parameters) | |
| requestObject.path = `${options.endpoint}?${query}` | |
| requestObject.headers = { | |
| 'X-MBX-APIKEY': process.env.BINANCEAPIKEY | |
| } | |
| let req = https.request(requestObject, res => { | |
| let data = '' | |
| res.on('data', (chunk) => { | |
| data = data.concat(chunk) | |
| }) | |
| res.on('end', () => { | |
| try { | |
| let jsonRes = JSON.parse(data) | |
| resolve(jsonRes) | |
| } catch (err) { | |
| reject(`binanceRequest err: ${util.inspect(err)}\nbinanceRequest data recieved b4 error: ${data}`) | |
| } | |
| }) | |
| }).on('error', (err) => { | |
| reject(`binanceRequest err: ${util.inspect(err)}\nbinanceRequest data recieved b4 error: ${data}`) | |
| }) | |
| req.end() | |
| } | |
| break | |
| case 'GET /api/v1/trades': | |
| { | |
| let query = querystring.stringify(options.parameters) | |
| requestObject.path = `${options.endpoint}?${query}` | |
| requestObject.headers = { | |
| 'X-MBX-APIKEY': process.env.BINANCEAPIKEY | |
| } | |
| let req = https.request(requestObject, res => { | |
| let data = '' | |
| res.on('data', (chunk) => { | |
| data = data.concat(chunk) | |
| }) | |
| res.on('end', () => { | |
| try { | |
| let jsonRes = JSON.parse(data) | |
| resolve(jsonRes) | |
| } catch (err) { | |
| reject(`binanceRequest err: ${util.inspect(err)}\nbinanceRequest data recieved b4 error: ${data}`) | |
| } | |
| }) | |
| }).on('error', (err) => { | |
| reject(`binanceRequest err: ${util.inspect(err)}\nbinanceRequest data recieved b4 error: ${data}`) | |
| }) | |
| req.end() | |
| } | |
| break | |
| case 'GET /api/v1/historicalTrades': | |
| { | |
| let query = querystring.stringify(options.parameters) | |
| requestObject.path = `${options.endpoint}?${query}` | |
| requestObject.headers = { | |
| 'X-MBX-APIKEY': process.env.BINANCEAPIKEY | |
| } | |
| let req = https.request(requestObject, res => { | |
| let data = '' | |
| res.on('data', (chunk) => { | |
| data = data.concat(chunk) | |
| }) | |
| res.on('end', () => { | |
| try { | |
| let jsonRes = JSON.parse(data) | |
| resolve(jsonRes) | |
| } catch (err) { | |
| reject(`binanceRequest err: ${util.inspect(err)}\nbinanceRequest data recieved b4 error: ${data}`) | |
| } | |
| }) | |
| }).on('error', (err) => { | |
| reject(`binanceRequest err: ${util.inspect(err)}\nbinanceRequest data recieved b4 error: ${data}`) | |
| }) | |
| req.end() | |
| } | |
| break | |
| case 'GET /api/v1/aggTrades': | |
| { | |
| let query = querystring.stringify(options.parameters) | |
| requestObject.path = `${options.endpoint}?${query}` | |
| requestObject.headers = { | |
| 'X-MBX-APIKEY': process.env.BINANCEAPIKEY | |
| } | |
| let req = https.request(requestObject, res => { | |
| let data = '' | |
| res.on('data', (chunk) => { | |
| data = data.concat(chunk) | |
| }) | |
| res.on('end', () => { | |
| try { | |
| let jsonRes = JSON.parse(data) | |
| resolve(jsonRes) | |
| } catch (err) { | |
| reject(`binanceRequest err: ${util.inspect(err)}\nbinanceRequest data recieved b4 error: ${data}`) | |
| } | |
| }) | |
| }).on('error', (err) => { | |
| reject(`binanceRequest err: ${util.inspect(err)}\nbinanceRequest data recieved b4 error: ${data}`) | |
| }) | |
| req.end() | |
| } | |
| break | |
| case 'GET /api/v1/klines': | |
| { | |
| let query = querystring.stringify(options.parameters) | |
| requestObject.path = `${options.endpoint}?${query}` | |
| requestObject.headers = { | |
| 'X-MBX-APIKEY': process.env.BINANCEAPIKEY | |
| } | |
| let req = https.request(requestObject, res => { | |
| let data = '' | |
| res.on('data', (chunk) => { | |
| data = data.concat(chunk) | |
| }) | |
| res.on('end', () => { | |
| try { | |
| let jsonRes = JSON.parse(data) | |
| resolve(jsonRes) | |
| } catch (err) { | |
| reject(`binanceRequest err: ${util.inspect(err)}\nbinanceRequest data recieved b4 error: ${data}`) | |
| } | |
| }) | |
| }).on('error', (err) => { | |
| reject(`binanceRequest err: ${util.inspect(err)}\nbinanceRequest data recieved b4 error: ${data}`) | |
| }) | |
| req.end() | |
| } | |
| break | |
| case 'GET /api/v1/ticker/24hr': | |
| { | |
| let query = querystring.stringify(options.parameters) | |
| requestObject.path = `${options.endpoint}?${query}` | |
| requestObject.headers = { | |
| 'X-MBX-APIKEY': process.env.BINANCEAPIKEY | |
| } | |
| let req = https.request(requestObject, res => { | |
| let data = '' | |
| res.on('data', (chunk) => { | |
| data = data.concat(chunk) | |
| }) | |
| res.on('end', () => { | |
| try { | |
| let jsonRes = JSON.parse(data) | |
| resolve(jsonRes) | |
| } catch (err) { | |
| reject(`binanceRequest err: ${util.inspect(err)}\nbinanceRequest data recieved b4 error: ${data}`) | |
| } | |
| }) | |
| }).on('error', (err) => { | |
| reject(`binanceRequest err: ${util.inspect(err)}\nbinanceRequest data recieved b4 error: ${data}`) | |
| }) | |
| req.end() | |
| } | |
| break | |
| case 'GET /api/v1/ticker/price': | |
| { | |
| let query = querystring.stringify(options.parameters) | |
| requestObject.path = `${options.endpoint}?${query}` | |
| requestObject.headers = { | |
| 'X-MBX-APIKEY': process.env.BINANCEAPIKEY | |
| } | |
| let req = https.request(requestObject, res => { | |
| let data = '' | |
| res.on('data', (chunk) => { | |
| data = data.concat(chunk) | |
| }) | |
| res.on('end', () => { | |
| try { | |
| let jsonRes = JSON.parse(data) | |
| resolve(jsonRes) | |
| } catch (err) { | |
| reject(`binanceRequest err: ${util.inspect(err)}\nbinanceRequest data recieved b4 error: ${data}`) | |
| } | |
| }) | |
| }).on('error', (err) => { | |
| reject(`binanceRequest err: ${util.inspect(err)}\nbinanceRequest data recieved b4 error: ${data}`) | |
| }) | |
| req.end() | |
| } | |
| break | |
| case 'GET /api/v1/ticker/bookTicker': | |
| { | |
| let query = querystring.stringify(options.parameters) | |
| requestObject.path = `${options.endpoint}?${query}` | |
| requestObject.headers = { | |
| 'X-MBX-APIKEY': process.env.BINANCEAPIKEY | |
| } | |
| let req = https.request(requestObject, res => { | |
| let data = '' | |
| res.on('data', (chunk) => { | |
| data = data.concat(chunk) | |
| }) | |
| res.on('end', () => { | |
| try { | |
| let jsonRes = JSON.parse(data) | |
| resolve(jsonRes) | |
| } catch (err) { | |
| reject(`binanceRequest err: ${util.inspect(err)}\nbinanceRequest data recieved b4 error: ${data}`) | |
| } | |
| }) | |
| }).on('error', (err) => { | |
| reject(`binanceRequest err: ${util.inspect(err)}\nbinanceRequest data recieved b4 error: ${data}`) | |
| }) | |
| req.end() | |
| } | |
| break | |
| case 'GET /api/v3/order': | |
| { | |
| let query = querystring.stringify(options.parameters) | |
| requestObject.path = `${options.endpoint}?${query}&signature=${crypto.createHmac('sha256', process.env.BINANCESECRET).update(query).digest('hex')}` | |
| requestObject.headers = { | |
| 'X-MBX-APIKEY': process.env.BINANCEAPIKEY | |
| } | |
| let req = https.request(requestObject, res => { | |
| let data = '' | |
| res.on('data', (chunk) => { | |
| data = data.concat(chunk) | |
| }) | |
| res.on('end', () => { | |
| try { | |
| let jsonRes = JSON.parse(data) | |
| resolve(jsonRes) | |
| } catch (err) { | |
| reject(`binanceRequest err: ${util.inspect(err)}\nbinanceRequest data recieved b4 error: ${data}`) | |
| } | |
| }) | |
| }).on('error', (err) => { | |
| reject(`binanceRequest err: ${util.inspect(err)}\nbinanceRequest data recieved b4 error: ${data}`) | |
| }) | |
| req.end() | |
| } | |
| break | |
| case 'POST /api/v3/order': | |
| { | |
| let query = querystring.stringify(options.parameters) | |
| requestObject.path = `${options.endpoint}?${query}&signature=${crypto.createHmac('sha256', process.env.BINANCESECRET).update(query).digest('hex')}` | |
| requestObject.headers = { | |
| 'X-MBX-APIKEY': process.env.BINANCEAPIKEY | |
| } | |
| let req = https.request(requestObject, res => { | |
| let data = '' | |
| res.on('data', (chunk) => { | |
| data = data.concat(chunk) | |
| }) | |
| res.on('end', () => { | |
| try { | |
| let jsonRes = JSON.parse(data) | |
| resolve(jsonRes) | |
| } catch (err) { | |
| reject(`binanceRequest err: ${util.inspect(err)}\nbinanceRequest data recieved b4 error: ${data}`) | |
| } | |
| }) | |
| }).on('error', (err) => { | |
| reject(`binanceRequest err: ${util.inspect(err)}\nbinanceRequest data recieved b4 error: ${data}`) | |
| }) | |
| req.end() | |
| } | |
| break | |
| case 'GET /api/v3/openOrders': | |
| { | |
| let query = querystring.stringify(options.parameters) | |
| requestObject.path = `${options.endpoint}?${query}&signature=${crypto.createHmac('sha256', process.env.BINANCESECRET).update(query).digest('hex')}` | |
| requestObject.headers = { | |
| 'X-MBX-APIKEY': process.env.BINANCEAPIKEY | |
| } | |
| let req = https.request(requestObject, res => { | |
| let data = '' | |
| res.on('data', (chunk) => { | |
| data = data.concat(chunk) | |
| }) | |
| res.on('end', () => { | |
| try { | |
| let jsonRes = JSON.parse(data) | |
| resolve(jsonRes) | |
| } catch (err) { | |
| reject(`binanceRequest err: ${util.inspect(err)}\nbinanceRequest data recieved b4 error: ${data}`) | |
| } | |
| }) | |
| }).on('error', (err) => { | |
| reject(`binanceRequest err: ${util.inspect(err)}\nbinanceRequest data recieved b4 error: ${data}`) | |
| }) | |
| req.end() | |
| } | |
| break | |
| case 'GET /api/v3/allOrders': | |
| { | |
| let query = querystring.stringify(options.parameters) | |
| requestObject.path = `${options.endpoint}?${query}&signature=${crypto.createHmac('sha256', process.env.BINANCESECRET).update(query).digest('hex')}` | |
| requestObject.headers = { | |
| 'X-MBX-APIKEY': process.env.BINANCEAPIKEY | |
| } | |
| let req = https.request(requestObject, res => { | |
| let data = '' | |
| res.on('data', (chunk) => { | |
| data = data.concat(chunk) | |
| }) | |
| res.on('end', () => { | |
| try { | |
| let jsonRes = JSON.parse(data) | |
| resolve(jsonRes) | |
| } catch (err) { | |
| reject(`binanceRequest err: ${util.inspect(err)}\nbinanceRequest data recieved b4 error: ${data}`) | |
| } | |
| }) | |
| }).on('error', (err) => { | |
| reject(`binanceRequest err: ${util.inspect(err)}\nbinanceRequest data recieved b4 error: ${data}`) | |
| }) | |
| req.end() | |
| } | |
| break | |
| case 'GET /api/v3/account': | |
| { | |
| let query = querystring.stringify(options.parameters) | |
| requestObject.path = `${options.endpoint}?${query}&signature=${crypto.createHmac('sha256', process.env.BINANCESECRET).update(query).digest('hex')}` | |
| requestObject.headers = { | |
| 'X-MBX-APIKEY': process.env.BINANCEAPIKEY | |
| } | |
| let req = https.request(requestObject, res => { | |
| let data = '' | |
| res.on('data', (chunk) => { | |
| data = data.concat(chunk) | |
| }) | |
| res.on('end', () => { | |
| try { | |
| let jsonRes = JSON.parse(data) | |
| resolve(jsonRes) | |
| } catch (err) { | |
| reject(`binanceRequest err: ${util.inspect(err)}\nbinanceRequest data recieved b4 error: ${data}`) | |
| } | |
| }) | |
| }).on('error', (err) => { | |
| reject(`binanceRequest err: ${util.inspect(err)}\nbinanceRequest data recieved b4 error: ${data}`) | |
| }) | |
| req.end() | |
| } | |
| break | |
| case 'GET /api/v3/myTrades': | |
| { | |
| let query = querystring.stringify(options.parameters) | |
| requestObject.path = `${options.endpoint}?${query}&signature=${crypto.createHmac('sha256', process.env.BINANCESECRET).update(query).digest('hex')}` | |
| requestObject.headers = { | |
| 'X-MBX-APIKEY': process.env.BINANCEAPIKEY | |
| } | |
| let req = https.request(requestObject, res => { | |
| let data = '' | |
| res.on('data', (chunk) => { | |
| data = data.concat(chunk) | |
| }) | |
| res.on('end', () => { | |
| try { | |
| let jsonRes = JSON.parse(data) | |
| resolve(jsonRes) | |
| } catch (err) { | |
| reject(`binanceRequest err: ${util.inspect(err)}\nbinanceRequest data recieved b4 error: ${data}`) | |
| } | |
| }) | |
| }).on('error', (err) => { | |
| reject(`binanceRequest err: ${util.inspect(err)}\nbinanceRequest data recieved b4 error: ${data}`) | |
| }) | |
| req.end() | |
| } | |
| break | |
| case 'POST /api/v3/order/test': | |
| { | |
| let query = querystring.stringify(options.parameters) | |
| requestObject.path = `${options.endpoint}?${query}&signature=${crypto.createHmac('sha256', process.env.BINANCESECRET).update(query).digest('hex')}` | |
| requestObject.headers = { | |
| 'X-MBX-APIKEY': process.env.BINANCEAPIKEY | |
| } | |
| let req = https.request(requestObject, res => { | |
| let data = '' | |
| res.on('data', (chunk) => { | |
| data = data.concat(chunk) | |
| }) | |
| res.on('end', () => { | |
| try { | |
| let jsonRes = JSON.parse(data) | |
| resolve(jsonRes) | |
| } catch (err) { | |
| reject(`binanceRequest err: ${util.inspect(err)}\nbinanceRequest data recieved b4 error: ${data}`) | |
| } | |
| }) | |
| }).on('error', (err) => { | |
| reject(`binanceRequest err: ${util.inspect(err)}\nbinanceRequest data recieved b4 error: ${data}`) | |
| }) | |
| req.end() | |
| } | |
| break | |
| case 'DELETE /api/v3/order': | |
| { | |
| let query = querystring.stringify(options.parameters) | |
| requestObject.path = `${options.endpoint}?${query}&signature=${crypto.createHmac('sha256', process.env.BINANCESECRET).update(query).digest('hex')}` | |
| requestObject.headers = { | |
| 'X-MBX-APIKEY': process.env.BINANCEAPIKEY | |
| } | |
| let req = https.request(requestObject, res => { | |
| let data = '' | |
| res.on('data', (chunk) => { | |
| data = data.concat(chunk) | |
| }) | |
| res.on('end', () => { | |
| try { | |
| let jsonRes = JSON.parse(data) | |
| resolve(jsonRes) | |
| } catch (err) { | |
| reject(`binanceRequest err: ${util.inspect(err)}\nbinanceRequest data recieved b4 error: ${data}`) | |
| } | |
| }) | |
| }).on('error', (err) => { | |
| reject(`binanceRequest err: ${util.inspect(err)}\nbinanceRequest data recieved b4 error: ${data}`) | |
| }) | |
| req.end() | |
| } | |
| break | |
| default: | |
| { | |
| console.log(`${options.method} ${options.endpoint}`) | |
| } | |
| } | |
| } catch (error) { | |
| reject(error) | |
| } | |
| }) | |
| } | |
| let buyLimitTrailSell = (market, percent) => { | |
| try { | |
| binanceAPI({ method: 'GET', endpoint: '/api/v1/ticker/price', parameters: { symbol: market } }).then(priceInfo => { | |
| let inPrice = priceInfo.price | |
| let highestPriceSoFar = inPrice | |
| let traillingSell = highestPriceSoFar - percentOf(percent, highestPriceSoFar) | |
| let buyTime = new Date().getTime() | |
| console.log(`\n${moment(buyTime).format('MM/DD/YYYY hh:mm:ss a')}\n${market} bought at ${inPrice}\n${market} trailling sell set to ${percentChange(inPrice, traillingSell)}% at ${traillingSell.toFixed(8)}`.redBG) | |
| let priceCheckInterval = setInterval(() => { | |
| binanceAPI({ method: 'GET', endpoint: '/api/v1/ticker/price', parameters: { symbol: market } }).then(priceInfo => { | |
| if (priceInfo.price > highestPriceSoFar) { | |
| highestPriceSoFar = priceInfo.price | |
| traillingSell = (highestPriceSoFar - percentOf(percent, highestPriceSoFar)) | |
| if (percentChange(inPrice, traillingSell) > 0) { | |
| console.log(`\n${market} trailling sell increased to ${percentChange(inPrice, traillingSell)}% at ${traillingSell.toFixed(8)}`.green) | |
| } else { | |
| console.log(`\n${market} trailling sell increased to ${percentChange(inPrice, traillingSell)}% at ${traillingSell.toFixed(8)}`) | |
| } | |
| } | |
| if (priceInfo.price <= traillingSell && percentChange(inPrice, priceInfo.price) >= 0.02) { | |
| console.log(`\n${moment().format('MM/DD/YYYY hh:mm:ss a')}\n${market} sold at ${priceInfo.price} for ${percentChange(inPrice,priceInfo.price)}% `.greenBG + 'profit'.rainbow.whiteBG + `\ntrade started ${moment(buyTime).fromNow()}`.greenBG) | |
| sellLimitTrailBuy(market, percent) | |
| clearInterval(priceCheckInterval) | |
| } | |
| }).catch(err => { | |
| console.log(err) | |
| }) | |
| }, 500) | |
| }).catch(err => { | |
| clearInterval(setUpBuy) | |
| console.log(err) | |
| }) | |
| } catch (err) { | |
| console.log(err) | |
| } | |
| } | |
| let sellLimitTrailBuy = (market, percent) => { | |
| try { | |
| binanceAPI({ method: 'GET', endpoint: '/api/v1/ticker/price', parameters: { symbol: market } }).then(priceInfo => { | |
| let inPrice = priceInfo.price | |
| let lowestPriceSoFar = inPrice | |
| let traillingBuy = +lowestPriceSoFar + percentOf(percent, lowestPriceSoFar) | |
| let sellTime = new Date().getTime() | |
| console.log(`\n${moment(sellTime).format('MM/DD/YYYY hh:mm:ss a')}\n${market} sold at ${inPrice}\n${market} trailling buy set to ${percentChange(inPrice,traillingBuy)}% at ${traillingBuy.toFixed(8)}`.redBG) | |
| let priceCheckInterval = setInterval(() => { | |
| binanceAPI({ method: 'GET', endpoint: '/api/v1/ticker/price', parameters: { symbol: market } }).then(priceInfo => { | |
| if (priceInfo.price < lowestPriceSoFar) { | |
| lowestPriceSoFar = priceInfo.price | |
| traillingBuy = +lowestPriceSoFar + percentOf(percent, lowestPriceSoFar) | |
| if (traillingBuy < inPrice) { | |
| console.log(`\n${market} trailling buy decreased to ${percentChange(inPrice, traillingBuy)}% at ${traillingBuy.toFixed(8)}`.green) | |
| } else { | |
| console.log(`\n${market} trailling buy decreased to ${percentChange(inPrice, traillingBuy)}% at ${traillingBuy.toFixed(8)}`) | |
| } | |
| } | |
| if (priceInfo.price >= traillingBuy && percentChange(priceInfo.price, inPrice) >= 0.02) { | |
| console.log(`\n${moment().format('MM/DD/YYYY hh:mm:ss a')}\n${market} bought at ${priceInfo.price} for ${percentChange(priceInfo.price,inPrice)}% `.greenBG + 'profit'.rainbow.whiteBG + `\ntrade started ${moment(sellTime).fromNow()}`.greenBG) | |
| buyLimitTrailSell(market, percent) | |
| clearInterval(priceCheckInterval) | |
| } | |
| }).catch(err => { | |
| console.log(err) | |
| }) | |
| }, 500) | |
| }).catch(err => { | |
| clearInterval(setUpSell) | |
| console.log(err) | |
| }) | |
| } catch (err) { | |
| console.log(err) | |
| } | |
| } | |
| console.clear() | |
| sellLimitTrailBuy(process.argv[2], process.argv[3]) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment