Commit ce215264 authored by Ahmad Nemati's avatar Ahmad Nemati

init

parent bca1fd6c
const fs = require('fs'); const fs = require('fs');
const csv = require('fast-csv'); const csv = require('fast-csv');
let _ = require('lodash') let _ = require('lodash')
let moment = require('moment-timezone')
let ai=require('./ai') let ai = require('./ai')
async function parse(name, configs) {
async function parse(name,configs) {
return new Promise(function (resolve, reject) { return new Promise(function (resolve, reject) {
let arr = [] let arr = []
fs.createReadStream('./work/'+name) fs.createReadStream('./work/' + name)
.pipe(csv.parse({headers: true})) .pipe(csv.parse({headers: true}))
.on('error', error => reject(error)) .on('error', error => reject(error))
.on('data', row => arr.push(row)) .on('data', row => arr.push(row))
.on('end', rowCount => resolve(initData(arr,configs))); .on('end', rowCount => resolve(initData(arr, configs, name)));
}); });
} }
function initData(data,config) { function initData(data, config, name) {
// console.log(data)
data = JSON.stringify(data) data = JSON.stringify(data)
// data.replace(/Trade #/g, 'id').replace(/Profit %/g, 'profitPer')
data = _.replace(data, new RegExp('Trade #', 'g'), 'id') data = _.replace(data, new RegExp('Trade #', 'g'), 'id')
data = _.replace(data, new RegExp('Profit %', 'g'), 'profit') data = _.replace(data, new RegExp('Profit %', 'g'), 'profit')
data = _.replace(data, new RegExp('Run-up %', 'g'), 'runUp') data = _.replace(data, new RegExp('Run-up %', 'g'), 'runUp')
data = _.replace(data, new RegExp('Drawdown %', 'g'), 'drawDown') data = _.replace(data, new RegExp('Drawdown %', 'g'), 'drawDown')
data = _.replace(data, new RegExp('Price', 'g'), 'price') data = _.replace(data, new RegExp('Price', 'g'), 'price')
data = _.replace(data, new RegExp('Date/Time', 'g'), 'date') data = _.replace(data, new RegExp('Date/Time', 'g'), 'date')
// data = _.replace(data, new RegExp('Open_Price', 'g'), 'openPrice')
// data = _.replace(data, new RegExp('Num.', 'g'), 'id')
let t = data
// console.log(data)
data = JSON.parse(data) data = JSON.parse(data)
// console.log(data)
let arr = []
for (let i = 0; i < data.length; i = i + 2) {
if (data[i].runUp === '')
continue
let obj = {}
obj.id=parseInt(data[i].id)
obj.signal=data[i].Signal
if (data[i].Type.includes('Long'))
obj.side = 'LONG'
else
obj.side = 'SHORT'
obj.openPrice = parseFloat(data[i].price)
obj.closePrice=parseFloat(data[i+1].price)
obj.openDate = data[i].date
obj.closeDate=data[i+1].date
obj.profit=parseFloat(data[i].profit)
obj.runUp=parseFloat(data[i].runUp)
obj.drawDown=parseFloat(data[i].drawDown)
obj.drawDown = obj.drawDown * -1
arr.push(obj)
// let arr=
let arr = []
if (t.includes('Open_Time')) {
for (let i = 0; i < data.length; i++) {
// console.log(data[i])
if (data[i].dAgeHiPrfInPrPc_RunUpPc === '')
continue
let obj = {}
obj.id = (i+1)
obj.signal = name
if (data[i].Type.includes('Buy'))
obj.side = 'LONG'
else
obj.side = 'SHORT'
obj.openPrice = parseFloat(data[i].Open_price)
obj.closePrice = parseFloat(data[i].Close_price)
obj.openDate = moment(data[i].Open_Time,'YYYY.MM.DD HH:mm:ss').format('YYYY-MM-DD HH:mm:ss')
obj.closeDate = moment(data[i].Close_Time,'YYYY.MM.DD HH:mm:ss').format('YYYY-MM-DD HH:mm:ss')
obj.profit = parseFloat(data[i].dPrfPipWrtOpPrPc)
obj.runUp = parseFloat(data[i].dAgeHiPrfInPrPc_RunUpPc)
obj.drawDown = parseFloat(data[i].dAgeLoPrfInPrPc_DrawDownPc)
// obj.drawDown = obj.dAgeLoPrfInPrPc_DrawDownPc * -1
arr.push(obj)
// let arr=
}
} else {
for (let i = 0; i < data.length; i = i + 2) {
if (data[i].runUp === '')
continue
let obj = {}
obj.id = parseInt(data[i].id)
obj.signal = data[i].Signal
if (data[i].Type.includes('Long'))
obj.side = 'LONG'
else
obj.side = 'SHORT'
obj.openPrice = parseFloat(data[i].price)
obj.closePrice = parseFloat(data[i + 1].price)
obj.openDate = data[i].date
obj.closeDate = data[i + 1].date
obj.profit = parseFloat(data[i].profit)
obj.runUp = parseFloat(data[i].runUp)
obj.drawDown = parseFloat(data[i].drawDown)
obj.drawDown = obj.drawDown * -1
arr.push(obj)
// let arr=
}
} }
//console.log(arr)
let cz=[]
for (let i=0;i<config.length;i++) let cz = []
{ for (let i = 0; i < config.length; i++) {
cz.push(ai.run(arr,config[i])) cz.push(ai.run(arr, config[i]))
} }
return cz return cz
}
}
module.exports = module.exports =
{ {
parse:parse, parse: parse,
} }
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