Commit ce215264 authored by Ahmad Nemati's avatar Ahmad Nemati

init

parent bca1fd6c
const fs = require('fs');
const csv = require('fast-csv');
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) {
let arr = []
fs.createReadStream('./work/'+name)
fs.createReadStream('./work/' + name)
.pipe(csv.parse({headers: true}))
.on('error', error => reject(error))
.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) {
// console.log(data)
function initData(data, config, name) {
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('Profit %', 'g'), 'profit')
data = _.replace(data, new RegExp('Run-up %', 'g'), 'runUp')
data = _.replace(data, new RegExp('Drawdown %', 'g'), 'drawDown')
data = _.replace(data, new RegExp('Price', 'g'), 'price')
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')
data = JSON.parse(data)
let t = data
// console.log(data)
data = JSON.parse(data)
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
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.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.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++)
{
cz.push(ai.run(arr,config[i]))
let cz = []
for (let i = 0; i < config.length; i++) {
cz.push(ai.run(arr, config[i]))
}
return cz
}
}
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