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

git pull

parent aa04dd56
const Sequelize = require('sequelize');
const sequelize = new Sequelize('ai', 'root', 'mahan7797', {
define: {
charset: 'utf8',
collate: 'utf8_general_ci'
},
host: 'db.zignaly.xyz',
dialect: 'mysql',
logging: false,
operatorsAliases: false
});
const Account = sequelize.define('account', {
name: Sequelize.STRING,
equity: {type: Sequelize.DOUBLE, allowNull: false, defaultValue: 0},
qty: {type: Sequelize.DOUBLE, allowNull: false, defaultValue: 0.001},
active: {type: Sequelize.BOOLEAN, allowNull: false, defaultValue: false},
testnet: {type: Sequelize.BOOLEAN, allowNull: false, defaultValue: false},
key: Sequelize.STRING,
secret: Sequelize.STRING,
});
async function getAllAccounts() {
return await Account.findAll({
raw: true
})
}
sequelize.sync()
module.exports = {
getAllAccounts:getAllAccounts
};
...@@ -32,6 +32,8 @@ ...@@ -32,6 +32,8 @@
"npm": "^8.10.0", "npm": "^8.10.0",
"redis": "^4.1.0", "redis": "^4.1.0",
"request": "^2.88.2", "request": "^2.88.2",
"sequelize": "^6.21.3",
"mysql2": "^1.6.1",
"shelljs": "^0.8.4", "shelljs": "^0.8.4",
"stringify-object": "^4.0.1", "stringify-object": "^4.0.1",
"uniqid": "^5.4.0", "uniqid": "^5.4.0",
......
let db=require('./db')
test()
async function test()
{
let d=await db.getAllAccounts()
console.log(d)
}
\ No newline at end of file
let fs = require('fs') let fs = require('fs')
var watch = require('node-watch'); var watch = require('node-watch');
let ai = require('./ai-new') let ai = require('./ai-new')
let db=require('./db')
let path = 'YashilFinal/' let path = 'YashilFinal/'
let longSide = 'LONG' let longSide = 'LONG'
let shortSide = 'SHORT' let shortSide = 'SHORT'
...@@ -17,8 +18,9 @@ let balance = 0 ...@@ -17,8 +18,9 @@ let balance = 0
const ccxt = require('ccxt') const ccxt = require('ccxt')
let exchange
let info let info
let accs
var cors = require('cors') var cors = require('cors')
const _ = require('lodash') const _ = require('lodash')
let express = require('express'); let express = require('express');
...@@ -63,84 +65,7 @@ app.post('/', (req, res) => { ...@@ -63,84 +65,7 @@ app.post('/', (req, res) => {
}) })
async function analyse(body) {
let t = body.split(',')
let obj = {}
if (typeof t[0] ==="undefined")
return
obj.symbol = t[0]
obj.entry = parseFloat(t[1])
obj.exit = parseFloat(t[2])
obj.side = t[3]
obj.timeframe = t[4]
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
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'
let indicator = ''
for (let i = 7; i < t.length; i++) {
indicator = indicator + t[i]
if (i !== t.length - 1)
indicator = indicator + '&'
}
//Ticket,Open_Time,Type,Symbol,Open_Price,Close_Price,Close_Time,dPrfPipWrtOpPrPc,dAgeHiPrfInPrPc_RunUpPc,dAgeLoPrfInPrPc_DrawDownPc
let final = '0,00:00,'
if (obj.side === 'Long') {
final = final + 'Buy'
obj.side = 'Buy'
} else {
final = final + 'Sell'
obj.side = 'Sell'
}
final = final + ',BTCUSDT,'
final = final + obj.entry + ',' + obj.exit + ',' + obj.closeTime + ',' + obj.profit + ',' + obj.runUp + ',' + obj.drawDown
appendCsv(final, indicator)
indicator = indicator.replace('Kelt', 'btc4').replace('SOTT', 'btc3').replace('Pmax', 'btc2').replace('PPST', 'btc1').replace('.csv', '')
appendCsvtoMain(final,indicator)
// updateVars(indicator,final)
}
function appendCsv(data, name) {
fs.appendFile('temp/' + name + '.csv', data + '\n', function (err) {
if (err) throw err;
});
}
async function appendCsvtoMain(data, config) {
for (let i = 0; i < files.length; i++) {
if (files[i].startsWith(config + '_')) {
appendtoFile(files[i],data)
}
}
}
function appendtoFile(name,data)
{
fs.appendFile('YashilFinal/'+name, data + '\n', function (err) {
if (err) throw err;
});
}
function getPercent(basePrice, value) {
return ((value - basePrice) / basePrice) * 100
}
...@@ -151,6 +76,19 @@ async function init() { ...@@ -151,6 +76,19 @@ async function init() {
client.on('error', (err) => console.log('Redis Client Error', err)); client.on('error', (err) => console.log('Redis Client Error', err));
await client.connect(); await client.connect();
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)
exchange.urls['api'] = exchange.urls['test'];
accs[i].exchange=exchange
}
// info = await fs.readFileSync('info2.json', 'utf8'); // info = await fs.readFileSync('info2.json', 'utf8');
// info = JSON.parse(info) // info = JSON.parse(info)
// exchange = new ccxt.bybit({ // exchange = new ccxt.bybit({
...@@ -162,26 +100,41 @@ async function init() { ...@@ -162,26 +100,41 @@ async function init() {
// exchange.urls['api'] = exchange.urls['test']; // exchange.urls['api'] = exchange.urls['test'];
run() // run()
// balanceUpdater() balanceUpdater()
} }
async function balanceUpdater() { async function balanceUpdater() {
let arr=[]
try { try {
let d = await exchange.fetchBalance() for (let i=0;i<accs.length;i++)
if (d.info.result.USDT.equity !== balance) { arr.push(balanceGetter(accs[i]))
balance = d.info.result.USDT.equity
appendBalanceProfitLog(balance) await Promise.all(arr)
}
} catch (e) { } catch (e) {
console.log(e) console.log(e)
} }
console.log(accs)
await sleep(60000) await sleep(60000)
return balanceUpdater() return balanceUpdater()
} }
async function balanceGetter(acc)
{
try {
let d = await acc.exchange.fetchBalance()
if (parseFloat(d.info.result.USDT.equity) !== parseFloat(acc.equity)) {
acc.equity = parseFloat(d.info.result.USDT.equity)
// appendBalanceProfitLog(balance)
}
} catch (e) {
console.log(e)
}
}
async function run() { async function run() {
...@@ -232,39 +185,6 @@ async function run() { ...@@ -232,39 +185,6 @@ async function run() {
} }
function grabData(data) {
// console.log(data)
let arr = []
for (let i = 0; i < data.length; i++) {
try {
let d = data[i].split(',')
let profit = parseFloat(d[7])
let runUp = parseFloat(d[8])
let drawDown = parseFloat(d[9])
let t = d[6]
t = t.split(':')
let closeTime = t[0] + ':' + t[1]
if (isNaN(profit))
continue
arr.push({profit, runUp, drawDown, closeTime})
} catch (e) {
}
}
return arr
}
async function updateVars(name, lastData) { async function updateVars(name, lastData) {
// lastData = lastFile[lastFile.length - 2] // lastData = lastFile[lastFile.length - 2]
...@@ -298,82 +218,8 @@ async function updateVars(name, lastData) { ...@@ -298,82 +218,8 @@ async function updateVars(name, lastData) {
} }
function getVarFromUsage(vars, usage) {
if (usage === 'fft') {
return vars.countDrop
} else if (usage === 'ddPlusRunCount') {
return vars.drawDownPlusRunUpCount
} else if (usage === 'ProfitZeroProfit') {
return vars.allLossProfit
} else if (usage === 'RunupDrawDownZeroRunupDrawDown') {
return vars.drawDownPlusRunUpPercent
} else if (usage === 'ProfitZeroDrawDown') {
return vars.ProfitZeroDrawDownPercent
} else if (usage === 'fftRunup') {
return vars.countDropRunup
} else if (usage === 'ProfitZeroDrawDownProfit') {
return vars.diffDrawdownProfitAll
} else if (usage === 'ProfitZeroProfitRunup') {
return vars.canCreateRunupPercent
} else if (usage === 'ProfitZeroRunupProfit') {
return vars.VarProfitZeroRunupProfit
} else if (usage === 'ProfitZeroRunupDrawDown') {
return vars.VarProfitZeroRunupDrawDown
} else if (usage === 'RunUpDrawDownZeroProfit') {
return vars.RunUpDrawDownAllLossProfit
} else if (usage === 'RunUpDrawDownZeroDrawDownProfit') {
return vars.RunupDrawDownDiffDrawdownProfitAll
} else if (usage === 'RunUpDrawDownZeroDrawdown') {
return vars.runUpDrawDownZeroDrawDownPercent
} else if (usage === 'RunUpDrawDownZeroRunupProfit') {
return vars.VarDrawDownZeroProfit
} else if (usage === 'RunupZeroRunupDrawDown') {
return vars.VarRunupZeroRunupDrawDown
} else if (usage === 'RunupZeroProfit') {
return vars.VarRunupZeroProfit
} else if (usage === 'RunupZeroProfitDrawDown') {
return vars.VarRunupZeroProfitDrawDown
} else if (usage === 'RunupZeroDrawDown') {
return vars.VarRunupZeroDrawDown
} else if (usage === 'RunupZeroProfitRunup') {
return vars.VarRunupZeroProfitRunup
} else if (usage === 'DrawDownZeroDrawDown') {
return vars.VarDrawDownZeroDrawDown
} else if (usage === 'DrawDownnZeroProfit') {
return vars.VarDrawDownnZeroProfit
} else if (usage === 'DrawDownZeroProfitDrawDown') {
return vars.VarDrawDownZeroProfitDrawDown
} else if (usage === 'DrawDownZeroProfitRunup') {
return vars.VarDrawDownZeroProfitRunup
} else if (usage === 'DrawDownZeroRunupDrawDown') {
return vars.VarDrawDownZeroRunupDrawDown
} else if (usage === 'ProfitDrawDownZeroDrawDown') {
return vars.VarProfitDrawDownZeroDrawDown
} else if (usage === 'ProfitDrawDownZeroProfit') {
return vars.VarProfitDrawDownZeroProfit
} else if (usage === 'ProfitDrawDownZeroProfitDrawDown') {
return vars.VarProfitDrawDownZeroProfitDrawDown
} else if (usage === 'ProfitDrawDownZeroProfitRunup') {
return vars.VarProfitDrawDownZeroProfitRunup
} else if (usage === 'ProfitDrawDownZeroRunupDrawDown') {
return vars.VarProfitDrawDownZeroRunupDrawDown
} else if (usage === 'ProfitRunupZeroDrawDown') {
return vars.VarProfitRunupZeroDrawDown
} else if (usage === 'ProfitRunupZeroProfit') {
return vars.VarProfitRunupZeroProfit
} else if (usage === 'ProfitRunupZeroProfitDrawDown') {
return vars.VarProfitRunupZeroProfitDrawDown
} else if (usage === 'ProfitRunupZeroProfitRunup') {
return vars.VarProfitRunupZeroProfitRunup
} else if (usage === 'ProfitRunupZeroRunupDrawDown') {
return vars.VarProfitRunupZeroRunupDrawDown
}
}
async function closer(sig, date, bigData, id, pair) { async function closer(sig, date, bigData, id, pair) {
let lastToken = sig + '_2' + date let lastToken = sig + '_2' + date
...@@ -486,6 +332,189 @@ async function adder(sig, qty, date, allData, pair) { ...@@ -486,6 +332,189 @@ async function adder(sig, qty, date, allData, pair) {
} }
function grabData(data) {
// console.log(data)
let arr = []
for (let i = 0; i < data.length; i++) {
try {
let d = data[i].split(',')
let profit = parseFloat(d[7])
let runUp = parseFloat(d[8])
let drawDown = parseFloat(d[9])
let t = d[6]
t = t.split(':')
let closeTime = t[0] + ':' + t[1]
if (isNaN(profit))
continue
arr.push({profit, runUp, drawDown, closeTime})
} catch (e) {
}
}
return arr
}
function getVarFromUsage(vars, usage) {
if (usage === 'fft') {
return vars.countDrop
} else if (usage === 'ddPlusRunCount') {
return vars.drawDownPlusRunUpCount
} else if (usage === 'ProfitZeroProfit') {
return vars.allLossProfit
} else if (usage === 'RunupDrawDownZeroRunupDrawDown') {
return vars.drawDownPlusRunUpPercent
} else if (usage === 'ProfitZeroDrawDown') {
return vars.ProfitZeroDrawDownPercent
} else if (usage === 'fftRunup') {
return vars.countDropRunup
} else if (usage === 'ProfitZeroDrawDownProfit') {
return vars.diffDrawdownProfitAll
} else if (usage === 'ProfitZeroProfitRunup') {
return vars.canCreateRunupPercent
} else if (usage === 'ProfitZeroRunupProfit') {
return vars.VarProfitZeroRunupProfit
} else if (usage === 'ProfitZeroRunupDrawDown') {
return vars.VarProfitZeroRunupDrawDown
} else if (usage === 'RunUpDrawDownZeroProfit') {
return vars.RunUpDrawDownAllLossProfit
} else if (usage === 'RunUpDrawDownZeroDrawDownProfit') {
return vars.RunupDrawDownDiffDrawdownProfitAll
} else if (usage === 'RunUpDrawDownZeroDrawdown') {
return vars.runUpDrawDownZeroDrawDownPercent
} else if (usage === 'RunUpDrawDownZeroRunupProfit') {
return vars.VarDrawDownZeroProfit
} else if (usage === 'RunupZeroRunupDrawDown') {
return vars.VarRunupZeroRunupDrawDown
} else if (usage === 'RunupZeroProfit') {
return vars.VarRunupZeroProfit
} else if (usage === 'RunupZeroProfitDrawDown') {
return vars.VarRunupZeroProfitDrawDown
} else if (usage === 'RunupZeroDrawDown') {
return vars.VarRunupZeroDrawDown
} else if (usage === 'RunupZeroProfitRunup') {
return vars.VarRunupZeroProfitRunup
} else if (usage === 'DrawDownZeroDrawDown') {
return vars.VarDrawDownZeroDrawDown
} else if (usage === 'DrawDownnZeroProfit') {
return vars.VarDrawDownnZeroProfit
} else if (usage === 'DrawDownZeroProfitDrawDown') {
return vars.VarDrawDownZeroProfitDrawDown
} else if (usage === 'DrawDownZeroProfitRunup') {
return vars.VarDrawDownZeroProfitRunup
} else if (usage === 'DrawDownZeroRunupDrawDown') {
return vars.VarDrawDownZeroRunupDrawDown
} else if (usage === 'ProfitDrawDownZeroDrawDown') {
return vars.VarProfitDrawDownZeroDrawDown
} else if (usage === 'ProfitDrawDownZeroProfit') {
return vars.VarProfitDrawDownZeroProfit
} else if (usage === 'ProfitDrawDownZeroProfitDrawDown') {
return vars.VarProfitDrawDownZeroProfitDrawDown
} else if (usage === 'ProfitDrawDownZeroProfitRunup') {
return vars.VarProfitDrawDownZeroProfitRunup
} else if (usage === 'ProfitDrawDownZeroRunupDrawDown') {
return vars.VarProfitDrawDownZeroRunupDrawDown
} else if (usage === 'ProfitRunupZeroDrawDown') {
return vars.VarProfitRunupZeroDrawDown
} else if (usage === 'ProfitRunupZeroProfit') {
return vars.VarProfitRunupZeroProfit
} else if (usage === 'ProfitRunupZeroProfitDrawDown') {
return vars.VarProfitRunupZeroProfitDrawDown
} else if (usage === 'ProfitRunupZeroProfitRunup') {
return vars.VarProfitRunupZeroProfitRunup
} else if (usage === 'ProfitRunupZeroRunupDrawDown') {
return vars.VarProfitRunupZeroRunupDrawDown
}
}
async function analyse(body) {
let t = body.split(',')
let obj = {}
if (typeof t[0] ==="undefined")
return
obj.symbol = t[0]
obj.entry = parseFloat(t[1])
obj.exit = parseFloat(t[2])
obj.side = t[3]
obj.timeframe = t[4]
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
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'
let indicator = ''
for (let i = 7; i < t.length; i++) {
indicator = indicator + t[i]
if (i !== t.length - 1)
indicator = indicator + '&'
}
//Ticket,Open_Time,Type,Symbol,Open_Price,Close_Price,Close_Time,dPrfPipWrtOpPrPc,dAgeHiPrfInPrPc_RunUpPc,dAgeLoPrfInPrPc_DrawDownPc
let final = '0,00:00,'
if (obj.side === 'Long') {
final = final + 'Buy'
obj.side = 'Buy'
} else {
final = final + 'Sell'
obj.side = 'Sell'
}
final = final + ',BTCUSDT,'
final = final + obj.entry + ',' + obj.exit + ',' + obj.closeTime + ',' + obj.profit + ',' + obj.runUp + ',' + obj.drawDown
appendCsv(final, indicator)
indicator = indicator.replace('Kelt', 'btc4').replace('SOTT', 'btc3').replace('Pmax', 'btc2').replace('PPST', 'btc1').replace('.csv', '')
appendCsvtoMain(final,indicator)
// updateVars(indicator,final)
}
function appendCsv(data, name) {
fs.appendFile('temp/' + name + '.csv', data + '\n', function (err) {
if (err) throw err;
});
}
async function appendCsvtoMain(data, config) {
for (let i = 0; i < files.length; i++) {
if (files[i].startsWith(config + '_')) {
appendtoFile(files[i],data)
}
}
}
function appendtoFile(name,data)
{
fs.appendFile('YashilFinal/'+name, data + '\n', function (err) {
if (err) throw err;
});
}
function getPercent(basePrice, value) {
return ((value - basePrice) / basePrice) * 100
}
function removeDot(text) function removeDot(text)
{ {
let token='' let token=''
......
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