Created
October 17, 2018 09:59
-
-
Save anticlergygang/056bd5fcd42fd486bf414f3cc4bf6db4 to your computer and use it in GitHub Desktop.
npm i all the modules and run it
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}`) | |
| } | |
| }) | |
| req.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}`) | |
| } | |
| }) | |
| req.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}`) | |
| } | |
| }) | |
| req.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}`) | |
| } | |
| }) | |
| req.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}`) | |
| } | |
| }) | |
| req.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}`) | |
| } | |
| }) | |
| req.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}`) | |
| } | |
| }) | |
| req.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}`) | |
| } | |
| }) | |
| req.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}`) | |
| } | |
| }) | |
| req.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}`) | |
| } | |
| }) | |
| req.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}`) | |
| } | |
| }) | |
| req.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}`) | |
| } | |
| }) | |
| req.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}`) | |
| } | |
| }) | |
| req.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}`) | |
| } | |
| }) | |
| req.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}`) | |
| } | |
| }) | |
| req.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}`) | |
| } | |
| }) | |
| req.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}`) | |
| } | |
| }) | |
| req.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}`) | |
| } | |
| }) | |
| req.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}`) | |
| } | |
| }) | |
| req.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, limitPrice) => { | |
| try { | |
| let warnDelay = 0 | |
| let setUpBuy = setInterval(() => { | |
| warnDelay = warnDelay + 500 | |
| binanceAPI({ method: 'GET', endpoint: '/api/v1/ticker/price', parameters: { symbol: market } }).then(priceInfo => { | |
| if (limitPrice === undefined) { | |
| limitPrice = priceInfo.price | |
| } | |
| if (limitPrice >= priceInfo.price) { | |
| let inPrice = limitPrice | |
| let highestPriceSoFar = inPrice | |
| let traillingSell = highestPriceSoFar - percentOf(percent, highestPriceSoFar) | |
| let buyTime = new Date().getTime() | |
| console.log(` | |
| ${moment(buyTime).format('MM/DD/YYYY hh:mm:ss a')} | |
| ${market} bought at ${inPrice} | |
| ${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(` | |
| ${market} trailling sell increased to ${percentChange(inPrice, traillingSell)}% at ${traillingSell.toFixed(8)}`.green) | |
| } else { | |
| console.log(` | |
| ${market} trailling sell increased to ${percentChange(inPrice, traillingSell)}% at ${traillingSell.toFixed(8)}`) | |
| } | |
| } | |
| if (priceInfo.price <= traillingSell && percentChange(inPrice, priceInfo.price) > 0.02) { | |
| console.log(` | |
| ${moment().format('MM/DD/YYYY hh:mm:ss a')} | |
| ${market} sold at ${priceInfo.price} for ${percentChange(inPrice,priceInfo.price)}% profit | |
| trade started ${moment(buyTime).fromNow()}`.greenBG) | |
| sellLimitTrailBuy(market, percent) | |
| clearInterval(priceCheckInterval) | |
| } | |
| }).catch(err => { | |
| clearInterval(setUpBuy) | |
| console.log(err) | |
| }) | |
| }, 500) | |
| clearInterval(setUpBuy) | |
| } else if (warnDelay >= 5000) { | |
| warnDelay = 0 | |
| console.log(` | |
| still waiting for ${market} to reach ${limitPrice} | |
| it is ${percentChange(priceInfo.price, limitPrice)}% away at ${priceInfo.price}`) | |
| } | |
| }).catch(err => { | |
| clearInterval(setUpBuy) | |
| console.log(err) | |
| }) | |
| }, 500) | |
| } catch (err) { | |
| console.log(err) | |
| } | |
| } | |
| let sellLimitTrailBuy = (market, percent, limitPrice) => { | |
| try { | |
| let warnDelay = 0 | |
| let setUpSell = setInterval(() => { | |
| warnDelay = warnDelay + 500 | |
| binanceAPI({ method: 'GET', endpoint: '/api/v1/ticker/price', parameters: { symbol: market } }).then(priceInfo => { | |
| if (limitPrice === undefined) { | |
| limitPrice = priceInfo.price | |
| } | |
| if (limitPrice <= priceInfo.price) { | |
| let inPrice = limitPrice | |
| let lowestPriceSoFar = inPrice | |
| let traillingBuy = +lowestPriceSoFar + percentOf(percent, lowestPriceSoFar) | |
| let sellTime = new Date().getTime() | |
| console.log(` | |
| ${moment(sellTime).format('MM/DD/YYYY hh:mm:ss a')} | |
| ${market} sold at ${inPrice} | |
| ${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(` | |
| ${market} trailling buy decreased to ${percentChange(inPrice, traillingBuy)}% at ${traillingBuy.toFixed(8)}`.green) | |
| } else { | |
| console.log(` | |
| ${market} trailling buy decreased to ${percentChange(inPrice, traillingBuy)}% at ${traillingBuy.toFixed(8)}`) | |
| } | |
| } | |
| if (priceInfo.price >= traillingBuy && percentChange(priceInfo.price, inPrice) > 0.02) { | |
| console.log(` | |
| ${moment().format('MM/DD/YYYY hh:mm:ss a')} | |
| ${market} bought at ${priceInfo.price} for ${percentChange(priceInfo.price,inPrice)}% profit | |
| trade started ${moment(sellTime).fromNow()}`.greenBG) | |
| buyLimitTrailSell(market, percent) | |
| clearInterval(priceCheckInterval) | |
| } | |
| }).catch(err => { | |
| clearInterval(setUpSell) | |
| console.log(err) | |
| }) | |
| }, 500) | |
| clearInterval(setUpSell) | |
| } else if (warnDelay >= 5000) { | |
| warnDelay = 0 | |
| console.log(` | |
| still waiting for ${market} to reach ${limitPrice} | |
| it is ${percentChange(priceInfo.price, limitPrice)}% away at ${priceInfo.price}`) | |
| } | |
| }).catch(err => { | |
| clearInterval(setUpSell) | |
| console.log(err) | |
| }) | |
| }, 500) | |
| } catch (err) { | |
| console.log(err) | |
| } | |
| } | |
| console.clear() | |
| sellLimitTrailBuy('ZRXBTC', .2) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment