Commit b3afa61f authored by Ahmad Nemati's avatar Ahmad Nemati

init

parent a4e1231d
...@@ -162,7 +162,8 @@ function run(data, config,risk,pfTrade) { ...@@ -162,7 +162,8 @@ function run(data, config,risk,pfTrade) {
minus: minus, minus: minus,
risk:risk, risk:risk,
levels:newLevelText, levels:newLevelText,
pftrade:newP pftrade:newP,
countOfTrade:data.length
} }
......
...@@ -6,61 +6,63 @@ let moment = require('moment-timezone') ...@@ -6,61 +6,63 @@ let moment = require('moment-timezone')
let ai = require('./ai') let ai = require('./ai')
async function parse(directory,name, configs,risk,pfTrade) { async function parse(directory, name, configs, risk, pfTrade, side) {
return new Promise(function (resolve, reject) { return new Promise(function (resolve, reject) {
let arr = [] let arr = []
// console.log(name) // console.log(name)
fs.createReadStream(directory+'/' + name) fs.createReadStream(directory + '/' + 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, name,risk,pfTrade))); .on('end', rowCount => resolve(initData(arr, configs, name, risk, pfTrade, side)));
}); });
} }
function initData(data, config, name,risk,pfTrade) { function initData(data, config, name, risk, pfTrade, side) {
data = JSON.stringify(data) data = JSON.stringify(data)
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('Open_Price', 'g'), 'openPrice')
// data = _.replace(data, new RegExp('Num.', 'g'), 'id') // data = _.replace(data, new RegExp('Num.', 'g'), 'id')
let t = data let t = data
// console.log(data) // console.log(data)
data = JSON.parse(data) data = JSON.parse(data)
let arr = [] let arr = []
if (t.includes('Open_Time')) { if (t.includes('Open_Time')) {
for (let i = 0; i < data.length; i++) { for (let i = 0; i < data.length; i++) {
if (data.length -1 ===i) if (data.length - 1 === i)
continue continue
// console.log(data[i]) // console.log(data[i])
if (data[i].dAgeHiPrfInPrPc_RunUpPc === '') if (data[i].dAgeHiPrfInPrPc_RunUpPc === '')
continue continue
let obj = {} let obj = {}
obj.id = (i+1) obj.id = (i + 1)
obj.signal = name obj.signal = name
if (data[i].Type.includes('Buy')) if (data[i].Type.includes('Buy'))
obj.side = 'LONG' obj.side = 'LONG'
else else
obj.side = 'SHORT' obj.side = 'SHORT'
if (side === 'long' && obj.side === 'SHORT')
continue
if (side === 'short' && obj.side === 'LONG')
continue
obj.openPrice = parseFloat(data[i].Open_price) obj.openPrice = parseFloat(data[i].Open_price)
obj.closePrice = parseFloat(data[i].Close_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.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.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.profit = parseFloat(data[i].dPrfPipWrtOpPrPc)
obj.runUp = parseFloat(data[i].dAgeHiPrfInPrPc_RunUpPc) obj.runUp = parseFloat(data[i].dAgeHiPrfInPrPc_RunUpPc)
...@@ -103,10 +105,9 @@ function initData(data, config, name,risk,pfTrade) { ...@@ -103,10 +105,9 @@ function initData(data, config, name,risk,pfTrade) {
} }
let cz = [] let cz = []
for (let i = 0; i < config.length; i++) { for (let i = 0; i < config.length; i++) {
cz.push(ai.run(arr, config[i],risk,pfTrade)) cz.push(ai.run(arr, config[i], risk, pfTrade))
} }
return cz return cz
......
...@@ -20,7 +20,7 @@ run() ...@@ -20,7 +20,7 @@ run()
async function run() async function run()
{ {
let obj={sort:'profitPerMonthDrawDown',alocatedReserve:3,alocatedReserveCompound:3,risk:0,start:10000,pfTrade:0.1} let obj={sort:'profitPerMonthDrawDown',alocatedReserve:3,alocatedReserveCompound:3,risk:0,start:10000,pfTrade:0.1,side:'both'}
let all=[] let all=[]
for (let i=0;i<arr.length;i++) for (let i=0;i<arr.length;i++)
all.push(add(arr[i])) all.push(add(arr[i]))
......
...@@ -20,7 +20,7 @@ async function run() { ...@@ -20,7 +20,7 @@ async function run() {
for (let i = 0; i < files.length; i++) for (let i = 0; i < files.length; i++)
if (files[i].includes('.csv')) { if (files[i].includes('.csv')) {
csvFile = files[i] csvFile = files[i]
arr.push(csv.parse(directory, files[i], configs.data, configs.risk, configs.pfTrade)) arr.push(csv.parse(directory, files[i], configs.data, configs.risk, configs.pfTrade,configs.side))
} }
arr = await Promise.all(arr) arr = await Promise.all(arr)
......
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