Commit 7baf508c authored by Ahmad Nemati's avatar Ahmad Nemati

git pull

parent e5d15cf2
let fs = require('fs')
var watch = require('node-watch');
let ai = require('./ai-new')
let db=require('./db')
let db = require('./db')
let path = 'YashilFinal/'
let longSide = 'LONG'
let shortSide = 'SHORT'
......@@ -18,7 +18,6 @@ let balance = 0
const ccxt = require('ccxt')
let info
let accs
var cors = require('cors')
......@@ -27,7 +26,7 @@ let express = require('express');
let moment = require('moment-timezone')
let app = express();
let files=[]
let files = []
var bodyParser = require('body-parser')
......@@ -51,7 +50,7 @@ app.post('/signal', (req, res) => {
res.send('Done')
console.log(req.body)
analyse(req.body)
analyse(req.body)
})
......@@ -60,34 +59,28 @@ app.post('/', (req, res) => {
res.send('Done')
console.log(req.body)
analyse(req.body)
analyse(req.body)
})
async function init() {
files = await fs.readdirSync('YashilFinal')
client.on('error', (err) => console.log('Redis Client Error', err));
await client.connect();
accs=await db.getAllAccounts()
for (let i=0;i<accs.length;i++)
{
let exchange = new ccxt.bybit({
accs = await db.getAllAccounts()
for (let i = 0; i < accs.length; i++) {
let exchange = new ccxt.bybit({
apiKey: accs[i].key,
secret: accs[i].secret,
enableRateLimit: true,
})
if (accs[i].testnet ===1)
if (accs[i].testnet === 1)
exchange.urls['api'] = exchange.urls['test'];
accs[i].exchange=exchange
accs[i].exchange = exchange
}
// info = await fs.readFileSync('info2.json', 'utf8');
// info = JSON.parse(info)
......@@ -98,21 +91,18 @@ async function init() {
//
// })
// exchange.urls['api'] = exchange.urls['test'];
// exchange.urls['api'] = exchange.urls['test'];
// run()
balanceUpdater()
run()
balanceUpdater()
dbEquityUpdater()
}
async function dbEquityUpdater()
{
async function dbEquityUpdater() {
try {
for (let i=0;i<accs.length;i++)
db.updateEquityByid(accs[i].id,accs[i].equity)
}
catch (e)
{
for (let i = 0; i < accs.length; i++)
db.updateEquityByid(accs[i].id, accs[i].equity)
} catch (e) {
}
......@@ -122,23 +112,22 @@ async function dbEquityUpdater()
async function balanceUpdater() {
let arr=[]
let arr = []
try {
for (let i=0;i<accs.length;i++)
arr.push(balanceGetter(accs[i]))
for (let i = 0; i < accs.length; i++)
arr.push(balanceGetter(accs[i]))
await Promise.all(arr)
await Promise.all(arr)
} catch (e) {
console.log(e)
console.log(e)
}
await sleep(60000)
return balanceUpdater()
}
async function balanceGetter(acc)
{
async function balanceGetter(acc) {
try {
let d = await acc.exchange.fetchBalance()
if (parseFloat(d.info.result.USDT.equity) !== parseFloat(acc.equity)) {
......@@ -194,9 +183,9 @@ async function run() {
}
// checker()
// checker()
console.log(datas)
// console.log(datas)
}
......@@ -214,7 +203,7 @@ async function updateVars(name, lastData) {
let data = grabData([lastData])
closer(sig, data[0].closeTime, data[0], allData.id, allData.pair)
closer(sig, data[0].closeTime)
let vars = ai.run(data, allData.avgRunup, allData.avgDrawdown, getVarsFromName(name))
......@@ -226,8 +215,8 @@ async function updateVars(name, lastData) {
sig = allData.id + '_Sell'
else
sig = allData.id + '_Buy'
adder(sig, allData.qty, data[0].closeTime, data[0], allData.pair)
// console.log('adder')
adder(sig, data[0].closeTime)
// console.log('adder')
}
// console.log(name,vars)
updateVarsFromName(name, vars)
......@@ -235,107 +224,109 @@ async function updateVars(name, lastData) {
}
async function closer(sig, date, bigData, id, pair) {
async function closer(sig, date) {
let lastToken = sig + '_2' + date
lastToken = lastToken.replace(/_/g, '').replace(/Lp/g, '').replace(/BTC/g, '').replace(/ /g, '').replace(/btc2/g, '').replace(/btc3/g, '').replace(/btc4/g, '').replace(/&/g, '').replace(/btc/g, '').replace(/:/g, '')
lastToken=removeDot(lastToken)
const [data, delStatus] = await client
.multi()
.get(info.apiKey + '_' + sig)
.del(info.apiKey + '_' + sig)
lastToken = removeDot(lastToken)
let arr = []
for (let i = 0; i < accs.length; i++) {
arr.push(syncAllCloser(accs[i], sig, lastToken))
}
await Promise.all(arr)
.exec();
}
if (delStatus !== 1) {
return
}
async function syncAllCloser(acc, sig, lastToken) {
const [data, delStatus] = await client
.multi()
.get(acc.key + '_' + sig)
.del(acc.key + '_' + sig)
.exec();
if (delStatus !== 1)
return
let d
let newData = JSON.parse(data)
let qty = newData.qty
console.log('try reduce', sig, qty)
console.log('try reduce', acc.name, sig, qty)
if (sig.includes('Buy')) {
try {
d = await exchange.createMarketOrder(pair, 'Sell', qty, 0, {
d = await acc.exchange.createMarketOrder('BTCUSDT', 'Sell', qty, 0, {
reduceOnly: true,
order_link_id: lastToken
})
} catch (e) {
try {
d = await exchange.createMarketOrder(pair, 'Sell', qty, 0, {
d = await acc.exchange.createMarketOrder('BTCUSDT', 'Sell', qty, 0, {
reduceOnly: true,
order_link_id: lastToken
})
} catch (e) {
console.error(e)
console.log('Error ->', sig, qty, 'Sell', 'Reduce true')
console.log('Error ->', acc.name, sig, qty, 'Sell', 'Reduce true')
}
}
} else {
try {
d = await exchange.createMarketOrder(pair, 'Buy', qty, 0, {reduceOnly: true, order_link_id: lastToken})
d = await acc.exchange.createMarketOrder('BTCUSDT', 'Buy', qty, 0, {
reduceOnly: true,
order_link_id: lastToken
})
} catch (e) {
try {
d = await exchange.createMarketOrder(pair, 'Buy', qty, 0, {
d = await acc.exchange.createMarketOrder('BTCUSDT', 'Buy', qty, 0, {
reduceOnly: true,
order_link_id: lastToken
})
} catch (e) {
console.error(e)
console.log('Error ->', sig, qty, 'Buy')
console.log('Error ->', acc.name, sig, qty, 'Buy')
}
}
}
// await sleep(60000)
// d = await exchange.fetchOrder(d.id, d.info.symbol)
// let profit = getCalculateProfit(newData.price, d.average)
// if (newData.side === 'sell')
// profit = profit * -1
//
// let det = 'side:' + newData.side + ' bybit open price:' + newData.price + ' bybit close price:' + d.average
//
// let t = id + ' :' + det + ' bybit profit:' + ' ' + profit + ' yashil profit:' + bigData.profit + ' diff:' + (profit - bigData.profit)
// appendDiffProfitLog(t)
}
async function adder(sig, qty, date, allData, pair) {
async function adder(sig, date) {
let lastToken = sig + '_' + date
if (pair === 'BNBUSDT')
qty = 0.06
else if (pair === 'BTCUSDT')
qty = 0.002
else if (pair === 'ETHUSDT')
qty = 0.01
lastToken = lastToken.replace(/_/g, '').replace(/Lp/g, '').replace(/BTC/g, '').replace(/ /g, '').replace(/btc2/g, '').replace(/btc3/g, '').replace(/btc4/g, '').replace(/&/g, '').replace(/btc/g, '').replace(/:/g, '')
lastToken=removeDot(lastToken)
console.log('Add db and ex :', lastToken)
lastToken = removeDot(lastToken)
let arr=[]
for (let i=0;i<accs.length;i++)
{
if (accs[i].active ===1)
arr.push(syncAdder(accs[i],sig,lastToken))
}
Promise.all(arr)
}
async function syncAdder(acc,sig,lastToken)
{
console.log('Add db and ex :',acc.name, lastToken)
let d
// console.log(pair,qty)
if (sig.includes('Buy')) {
d = await exchange.createMarketOrder(pair, 'Buy', qty, 0, {order_link_id: lastToken})
// console.log('Add Suc With id',sig)
d = await acc.exchange.createMarketOrder('BTCUSDT', 'Buy', acc.qty, 0, {order_link_id: lastToken})
} else {
d = await exchange.createMarketOrder(pair, 'Sell', qty, 0, {order_link_id: lastToken})
// console.log('Add Suc With id',sig)
d = await acc.exchange.createMarketOrder('BTCUSDT', 'Sell', acc.qty, 0, {order_link_id: lastToken})
}
if (typeof d.id !== "undefined") {
console.log('Add Suc With id', d.id, sig)
console.log('Add Suc With id',acc.name, d.id, sig)
const [add] = await client
.multi()
.set(info.apiKey + '_' + sig, JSON.stringify({
.set(acc.kebabCase + '_' + sig, JSON.stringify({
pair: d.info.symbol,
side: d.side,
qty: d.amount,
......@@ -344,8 +335,6 @@ async function adder(sig, qty, date, allData, pair) {
.exec();
}
}
function grabData(data) {
......@@ -455,7 +444,7 @@ function getVarFromUsage(vars, usage) {
async function analyse(body) {
let t = body.split(',')
let obj = {}
if (typeof t[0] ==="undefined")
if (typeof t[0] === "undefined")
return
obj.symbol = t[0]
obj.entry = parseFloat(t[1])
......@@ -465,8 +454,8 @@ async function analyse(body) {
obj.runUp = parseFloat(t[5])
obj.drawDown = parseFloat(t[6])
obj.profit = getPercent(obj.entry, obj.exit)
if (obj.side ==='Short' )
obj.profit=obj.profit*-1
if (obj.side === 'Short')
obj.profit = obj.profit * -1
obj.runUp = getPercent(obj.entry, (obj.runUp + obj.entry))
obj.drawDown = getPercent(obj.entry, (obj.drawDown + obj.entry))
obj.closeTime = moment().utc().format('YYYY.MM.DD HH:mm') + ':00.000'
......@@ -492,7 +481,7 @@ async function analyse(body) {
appendCsv(final, indicator)
indicator = indicator.replace('Kelt', 'btc4').replace('SOTT', 'btc3').replace('Pmax', 'btc2').replace('PPST', 'btc1').replace('.csv', '')
appendCsvtoMain(final,indicator)
appendCsvtoMain(final, indicator)
// updateVars(indicator,final)
}
......@@ -507,21 +496,18 @@ function appendCsv(data, name) {
async function appendCsvtoMain(data, config) {
for (let i = 0; i < files.length; i++) {
if (files[i].startsWith(config + '_')) {
appendtoFile(files[i],data)
appendtoFile(files[i], data)
}
}
}
function appendtoFile(name,data)
{
fs.appendFile('YashilFinal/'+name, data + '\n', function (err) {
function appendtoFile(name, data) {
fs.appendFile('YashilFinal/' + name, data + '\n', function (err) {
if (err) throw err;
});
......@@ -531,15 +517,15 @@ function getPercent(basePrice, value) {
return ((value - basePrice) / basePrice) * 100
}
function removeDot(text)
{
let token=''
for (let i=0;i<text.length;i++)
if (text[i] !=='.' )
token=token+text[i]
function removeDot(text) {
let token = ''
for (let i = 0; i < text.length; i++)
if (text[i] !== '.')
token = token + text[i]
return token
}
function getVarsFromName(config) {
for (let i = 0; i < datas.length; i++)
if (datas[i].name.startsWith(config + '_'))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment