Commit b4718d0a authored by Ahmad Nemati's avatar Ahmad Nemati

init

parent 356467ac
......@@ -8,7 +8,7 @@ let dynamic = 'dynamic'
let elsa = 'elsa'
function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs,maxTradeDays) {
function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, maxTradeDays) {
let type = config.type + ' param:' + config.param + ' base:' + config.base + ' target:' + config.target
let saveData = []
let needPrintData = shouldPrint(detail, data[0].signal + '&' + type)
......@@ -18,9 +18,9 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs,maxT
let money = config.base
let total = 0
let maxDays = 0
let startDays=0
let startDays = 0
let allTotal = 0
let listDays=[]
let listDays = []
let maxReserve = 0
let maxMeta = 0
let allLoss = 0
......@@ -37,6 +37,7 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs,maxT
let lastCom = 0
let lastMoney = 0
let levels = []
let detailLevel = []
let dur
try {
......@@ -56,14 +57,13 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs,maxT
return null
for (let i = 0; i < data.length; i++) {
if (maxDays > maxTradeDays )
if (maxDays > maxTradeDays)
return null
let obj
if (step === 0) {
startDays=data[i].openDate
startDays = data[i].openDate
money = config.base
}
else {
} else {
if (config.type === zarib)
money = lastMoney * config.param
if (config.type === base)
......@@ -96,8 +96,6 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs,maxT
let d = inlineCheck(money, commision, data[i], profit, lastCom, config.target, riskfree)
if (d.reserve < 0 && Math.abs(d.reserve) > Math.abs(maxReserve))
maxReserve = d.reserve
......@@ -154,6 +152,7 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs,maxT
}
if (d.done === true) {
let endDays = getNewMinDiff(startDays, data[i].closeDate)
detailLevel.push({step: step, dur: endDays})
// console.log(typeof endDays)
//console.log(endDays)
if (endDays > maxDays)
......@@ -197,12 +196,11 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs,maxT
if (needPrintData)
saveData.push(obj)
}
let s=0
for (let i=0;i<listDays.length;i++)
{
s=s+listDays[i]
let s = 0
for (let i = 0; i < listDays.length; i++) {
s = s + listDays[i]
}
s=s/(listDays.length)
s = s / (listDays.length)
let newReserv = maxReserve
......@@ -236,11 +234,12 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs,maxT
let newLevelText = ''
for (let i = 0; i < (maxLevel + 1); i++) {
let count = counter(i, levels)
let avgDur=getAvgDur(i,detailLevel)
// newLevel.push({level:i,count:count})
let per = parseFloat((count / allTotal) * 100).toFixed(1)
newLevelText = newLevelText + i + ':' + count + ':' + per + '%' + ','
newLevelText = newLevelText + i + ':' + count + ':' + per + '%' + ','+avgDur+','
if ((i + 2) % 12 === 0) {
newLevelText + newLevelText + '\\n'
......@@ -299,8 +298,8 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs,maxT
avgLevel: maxLevel / total,
maxLevel: maxLevel,
dur: dur,
maxDays:maxDays,
avgDays:s,
maxDays: maxDays,
avgDays: s,
allLoss: allLoss,
totalFinal: oldTotalFinal,
totalPlus: totalPlus,
......@@ -355,6 +354,23 @@ function counter(count, array) {
}
function getAvgDur(step, detailLevel) {
let allDur = 0
let count = 0
for (let i = 0; i < detailLevel.length; i++)
if (detailLevel[i].step === step) {
count++
allDur = allDur + detailLevel[i].dur
}
try {
return allDur / count
} catch (e) {
return 0
}
}
function percentage2(base, per) {
base = parseFloat(base)
......@@ -471,7 +487,6 @@ function getNewMinDiff(s, c) {
return diffInMs / (1000 * 60 * 60 * 24);
}
......
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