Commit b4718d0a authored by Ahmad Nemati's avatar Ahmad Nemati

init

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