Commit a6ab1d29 authored by Ahmad Nemati's avatar Ahmad Nemati

init

parent d247f516
...@@ -6,7 +6,7 @@ let zarib = 'zarib' ...@@ -6,7 +6,7 @@ let zarib = 'zarib'
let base = 'base' let base = 'base'
function run(data, config,risk) { function run(data, config,risk,pfTrade) {
let commision = config.commision let commision = config.commision
let money = config.base let money = config.base
let total = 0 let total = 0
...@@ -21,6 +21,10 @@ function run(data, config,risk) { ...@@ -21,6 +21,10 @@ function run(data, config,risk) {
let lastCom = 0 let lastCom = 0
let lastMoney = 0 let lastMoney = 0
let levels=[] let levels=[]
let dur = getMinDiff(data[0].openDate, data[data.length - 1].closeDate)
let newP=dur/data.length
if (pfTrade>newP)
return null
for (let i = 0; i < data.length; i++) { for (let i = 0; i < data.length; i++) {
if (step === 0) if (step === 0)
...@@ -94,7 +98,7 @@ function run(data, config,risk) { ...@@ -94,7 +98,7 @@ function run(data, config,risk) {
let dur = getMinDiff(data[0].openDate, data[data.length - 1].closeDate)
let totalFinal = total * config.target let totalFinal = total * config.target
let newT = totalFinal / dur let newT = totalFinal / dur
let percentage = maxReserve + totalFinal let percentage = maxReserve + totalFinal
......
...@@ -6,7 +6,7 @@ let moment = require('moment-timezone') ...@@ -6,7 +6,7 @@ let moment = require('moment-timezone')
let ai = require('./ai') let ai = require('./ai')
async function parse(directory,name, configs,risk) { async function parse(directory,name, configs,risk,pfTrade) {
return new Promise(function (resolve, reject) { return new Promise(function (resolve, reject) {
let arr = [] let arr = []
// console.log(name) // console.log(name)
...@@ -14,12 +14,12 @@ async function parse(directory,name, configs,risk) { ...@@ -14,12 +14,12 @@ async function parse(directory,name, configs,risk) {
.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))); .on('end', rowCount => resolve(initData(arr, configs, name,risk,pfTrade)));
}); });
} }
function initData(data, config, name,risk) { function initData(data, config, name,risk,pfTrade) {
data = JSON.stringify(data) data = JSON.stringify(data)
...@@ -106,7 +106,7 @@ function initData(data, config, name,risk) { ...@@ -106,7 +106,7 @@ function initData(data, config, name,risk) {
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)) 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:1000} let obj={sort:'profitPerMonthDrawDown',alocatedReserve:3,alocatedReserveCompound:3,risk:0,start:1000,pfTrade:1}
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]))
......
...@@ -19,7 +19,7 @@ async function run() { ...@@ -19,7 +19,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)) arr.push(csv.parse(directory, files[i], configs.data, configs.risk,configs.pfTrade))
} }
arr = await Promise.all(arr) arr = await Promise.all(arr)
...@@ -35,7 +35,7 @@ async function run() { ...@@ -35,7 +35,7 @@ async function run() {
} }
} }
// console.log(arr2) // console.log(arr2)
arr2=_.without(arr2,undefined,null);
arr2 = _.orderBy(arr2, ['profitPerMonthDrawDown'], ['desc']); arr2 = _.orderBy(arr2, ['profitPerMonthDrawDown'], ['desc']);
let arr20Max = [] let arr20Max = []
let arr1000Compound = [] let arr1000Compound = []
......
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