Commit 8e583ece authored by Ahmad Nemati's avatar Ahmad Nemati

git pu

parent 49655c01
...@@ -12,36 +12,33 @@ let timeFrame = 0 ...@@ -12,36 +12,33 @@ let timeFrame = 0
let avgRunup = 0 let avgRunup = 0
let avgDrawdown = 0 let avgDrawdown = 0
let avgProfit = 0 let avgProfit = 0
let startt=30 let startt = 30
// //
function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, maxTradeDays, targetPercentage, candlesData, fft, ProfitZeroProfit, fftRunup, ProfitZeroProfitRunup, ProfitZeroDrawDownProfit, ProfitZeroDrawDown, ddPlusRunCount, RunupDrawDownZeroRunupDrawDown,ProfitZeroRunupProfit,ProfitZeroRunupDrawDown,RunUpDrawDownZeroProfit,RunUpDrawDownZeroDrawDownProfit,RunUpDrawDownZeroDrawdown,RunUpDrawDownZeroRunupProfit,RunupZeroRunupDrawDown,RunupZeroProfit,RunupZeroProfitDrawDown,RunupZeroDrawDown,RunupZeroProfitRunup, DrawDownZeroDrawDown,DrawDownnZeroProfit,DrawDownZeroProfitDrawDown,DrawDownZeroProfitRunup,DrawDownZeroRunupDrawDown,ProfitDrawDownZeroDrawDown,ProfitDrawDownZeroProfit,ProfitDrawDownZeroProfitDrawDown,ProfitDrawDownZeroProfitRunup,ProfitDrawDownZeroRunupDrawDown function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, maxTradeDays, targetPercentage, candlesData, fft, ProfitZeroProfit, fftRunup, ProfitZeroProfitRunup, ProfitZeroDrawDownProfit, ProfitZeroDrawDown, ddPlusRunCount, RunupDrawDownZeroRunupDrawDown, ProfitZeroRunupProfit, ProfitZeroRunupDrawDown, RunUpDrawDownZeroProfit, RunUpDrawDownZeroDrawDownProfit, RunUpDrawDownZeroDrawdown, RunUpDrawDownZeroRunupProfit, RunupZeroRunupDrawDown, RunupZeroProfit, RunupZeroProfitDrawDown, RunupZeroDrawDown, RunupZeroProfitRunup, DrawDownZeroDrawDown, DrawDownnZeroProfit, DrawDownZeroProfitDrawDown, DrawDownZeroProfitRunup, DrawDownZeroRunupDrawDown, ProfitDrawDownZeroDrawDown, ProfitDrawDownZeroProfit, ProfitDrawDownZeroProfitDrawDown, ProfitDrawDownZeroProfitRunup, ProfitDrawDownZeroRunupDrawDown
,ProfitRunupZeroDrawDown,ProfitRunupZeroProfit,ProfitRunupZeroProfitDrawDown,ProfitRunupZeroProfitRunup,ProfitRunupZeroRunupDrawDown, usage) { , ProfitRunupZeroDrawDown, ProfitRunupZeroProfit, ProfitRunupZeroProfitDrawDown, ProfitRunupZeroProfitRunup, ProfitRunupZeroRunupDrawDown, usage) {
let data2=[] let data2 = []
for (let i=0;i<data.length;i++) for (let i = 0; i < data.length; i++) {
{ let ft = data[i].openDate.split('-')
let ft=data[i].openDate.split('-') let y = parseFloat(ft[0])
let y=parseFloat(ft[0]) let m = parseFloat(ft[1])
let m=parseFloat(ft[1])
if (y < 2017) if (y < 2017)
continue continue
if (y>2017) { if (y > 2017) {
data2.push(data[i]) data2.push(data[i])
continue continue
} }
if ( y ===2017) if (y === 2017) {
{ if (m < 9)
if (m<9)
continue continue
else else
data2.push(data[i]) data2.push(data[i])
} }
} }
data=data2 data = data2
let type = config.type + ' param:' + config.param + ' base:' + config.base + ' target:' + config.target + ' targetPercentage:' + targetPercentage.enable let type = config.type + ' param:' + config.param + ' base:' + config.base + ' target:' + config.target + ' targetPercentage:' + targetPercentage.enable
...@@ -61,117 +58,63 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max ...@@ -61,117 +58,63 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
type = type + ' ' + usage + ' ' + ddPlusRunCount type = type + ' ' + usage + ' ' + ddPlusRunCount
} else if (usage === 'RunupDrawDownZeroRunupDrawDown') { } else if (usage === 'RunupDrawDownZeroRunupDrawDown') {
type = type + ' ' + usage + ' ' + RunupDrawDownZeroRunupDrawDown type = type + ' ' + usage + ' ' + RunupDrawDownZeroRunupDrawDown
} } else if (usage === 'ProfitZeroRunupProfit') {
else if (usage === 'ProfitZeroRunupProfit') {
type = type + ' ' + usage + ' ' + ProfitZeroRunupProfit type = type + ' ' + usage + ' ' + ProfitZeroRunupProfit
} } else if (usage === 'ProfitZeroRunupDrawDown') {
else if (usage === 'ProfitZeroRunupDrawDown') {
type = type + ' ' + usage + ' ' + ProfitZeroRunupDrawDown type = type + ' ' + usage + ' ' + ProfitZeroRunupDrawDown
} } else if (usage === 'RunUpDrawDownZeroProfit') {
else if (usage === 'RunUpDrawDownZeroProfit') {
type = type + ' ' + usage + ' ' + RunUpDrawDownZeroProfit type = type + ' ' + usage + ' ' + RunUpDrawDownZeroProfit
} } else if (usage === 'RunUpDrawDownZeroDrawDownProfit') {
else if (usage === 'RunUpDrawDownZeroDrawDownProfit') {
type = type + ' ' + usage + ' ' + RunUpDrawDownZeroDrawDownProfit type = type + ' ' + usage + ' ' + RunUpDrawDownZeroDrawDownProfit
} } else if (usage === 'RunUpDrawDownZeroDrawdown') {
else if (usage === 'RunUpDrawDownZeroDrawdown') {
type = type + ' ' + usage + ' ' + RunUpDrawDownZeroDrawdown type = type + ' ' + usage + ' ' + RunUpDrawDownZeroDrawdown
} } else if (usage === 'RunUpDrawDownZeroRunupProfit') {
else if (usage === 'RunUpDrawDownZeroRunupProfit') {
type = type + ' ' + usage + ' ' + RunUpDrawDownZeroRunupProfit type = type + ' ' + usage + ' ' + RunUpDrawDownZeroRunupProfit
} } else if (usage === 'RunupZeroRunupDrawDown') {
else if (usage === 'RunupZeroRunupDrawDown') {
type = type + ' ' + usage + ' ' + RunupZeroRunupDrawDown type = type + ' ' + usage + ' ' + RunupZeroRunupDrawDown
} } else if (usage === 'RunupZeroProfit') {
else if (usage === 'RunupZeroProfit') {
type = type + ' ' + usage + ' ' + RunupZeroProfit type = type + ' ' + usage + ' ' + RunupZeroProfit
} } else if (usage === 'RunupZeroProfitDrawDown') {
else if (usage === 'RunupZeroProfitDrawDown') {
type = type + ' ' + usage + ' ' + RunupZeroProfitDrawDown type = type + ' ' + usage + ' ' + RunupZeroProfitDrawDown
} } else if (usage === 'RunupZeroDrawDown') {
else if (usage === 'RunupZeroDrawDown') {
type = type + ' ' + usage + ' ' + RunupZeroDrawDown type = type + ' ' + usage + ' ' + RunupZeroDrawDown
} } else if (usage === 'RunupZeroProfitRunup') {
else if (usage === 'RunupZeroProfitRunup') {
type = type + ' ' + usage + ' ' + RunupZeroProfitRunup type = type + ' ' + usage + ' ' + RunupZeroProfitRunup
} } else if (usage === 'RunupZeroProfitRunup') {
else if (usage === 'RunupZeroProfitRunup') {
type = type + ' ' + usage + ' ' + RunupZeroProfitRunup type = type + ' ' + usage + ' ' + RunupZeroProfitRunup
} } else if (usage === 'DrawDownZeroDrawDown') {
else if (usage === 'DrawDownZeroDrawDown') {
type = type + ' ' + usage + ' ' + DrawDownZeroDrawDown type = type + ' ' + usage + ' ' + DrawDownZeroDrawDown
} } else if (usage === 'DrawDownnZeroProfit') {
else if (usage === 'DrawDownnZeroProfit') {
type = type + ' ' + usage + ' ' + DrawDownnZeroProfit type = type + ' ' + usage + ' ' + DrawDownnZeroProfit
} } else if (usage === 'DrawDownZeroProfitDrawDown') {
else if (usage === 'DrawDownZeroProfitDrawDown') {
type = type + ' ' + usage + ' ' + DrawDownZeroProfitDrawDown type = type + ' ' + usage + ' ' + DrawDownZeroProfitDrawDown
} } else if (usage === 'DrawDownZeroProfitRunup') {
else if (usage === 'DrawDownZeroProfitRunup') {
type = type + ' ' + usage + ' ' + DrawDownZeroProfitRunup type = type + ' ' + usage + ' ' + DrawDownZeroProfitRunup
} } else if (usage === 'DrawDownZeroRunupDrawDown') {
else if (usage === 'DrawDownZeroRunupDrawDown') {
type = type + ' ' + usage + ' ' + DrawDownZeroRunupDrawDown type = type + ' ' + usage + ' ' + DrawDownZeroRunupDrawDown
} } else if (usage === 'ProfitDrawDownZeroDrawDown') {
else if (usage === 'ProfitDrawDownZeroDrawDown') {
type = type + ' ' + usage + ' ' + ProfitDrawDownZeroDrawDown type = type + ' ' + usage + ' ' + ProfitDrawDownZeroDrawDown
} } else if (usage === 'ProfitDrawDownZeroProfit') {
else if (usage === 'ProfitDrawDownZeroProfit') {
type = type + ' ' + usage + ' ' + ProfitDrawDownZeroProfit type = type + ' ' + usage + ' ' + ProfitDrawDownZeroProfit
} } else if (usage === 'ProfitDrawDownZeroProfitDrawDown') {
else if (usage === 'ProfitDrawDownZeroProfitDrawDown') {
type = type + ' ' + usage + ' ' + ProfitDrawDownZeroProfitDrawDown type = type + ' ' + usage + ' ' + ProfitDrawDownZeroProfitDrawDown
} } else if (usage === 'ProfitDrawDownZeroProfitRunup') {
else if (usage === 'ProfitDrawDownZeroProfitRunup') {
type = type + ' ' + usage + ' ' + ProfitDrawDownZeroProfitRunup type = type + ' ' + usage + ' ' + ProfitDrawDownZeroProfitRunup
} } else if (usage === 'ProfitDrawDownZeroRunupDrawDown') {
else if (usage === 'ProfitDrawDownZeroRunupDrawDown') {
type = type + ' ' + usage + ' ' + ProfitDrawDownZeroRunupDrawDown type = type + ' ' + usage + ' ' + ProfitDrawDownZeroRunupDrawDown
} } else if (usage === 'ProfitRunupZeroDrawDown') {
else if (usage === 'ProfitRunupZeroDrawDown') {
type = type + ' ' + usage + ' ' + ProfitRunupZeroDrawDown type = type + ' ' + usage + ' ' + ProfitRunupZeroDrawDown
} } else if (usage === 'ProfitRunupZeroProfit') {
else if (usage === 'ProfitRunupZeroProfit') {
type = type + ' ' + usage + ' ' + ProfitRunupZeroProfit type = type + ' ' + usage + ' ' + ProfitRunupZeroProfit
} } else if (usage === 'ProfitRunupZeroProfitDrawDown') {
else if (usage === 'ProfitRunupZeroProfitDrawDown') {
type = type + ' ' + usage + ' ' + ProfitRunupZeroProfitDrawDown type = type + ' ' + usage + ' ' + ProfitRunupZeroProfitDrawDown
} } else if (usage === 'ProfitRunupZeroProfitRunup') {
else if (usage === 'ProfitRunupZeroProfitRunup') {
type = type + ' ' + usage + ' ' + ProfitRunupZeroProfitRunup type = type + ' ' + usage + ' ' + ProfitRunupZeroProfitRunup
} } else if (usage === 'ProfitRunupZeroRunupDrawDown') {
else if (usage === 'ProfitRunupZeroRunupDrawDown') {
type = type + ' ' + usage + ' ' + ProfitRunupZeroRunupDrawDown type = type + ' ' + usage + ' ' + ProfitRunupZeroRunupDrawDown
} }
let saveData = [] let saveData = []
candles = candlesData candles = candlesData
timeFrame = candles[1].t - candles[0].t timeFrame = candles[1].t - candles[0].t
...@@ -186,22 +129,22 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max ...@@ -186,22 +129,22 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
let maxDays = 0 let maxDays = 0
let startDays = 0 let startDays = 0
let allTotal = 0 let allTotal = 0
let targetDone=0 let targetDone = 0
let targetDonePer=0 let targetDonePer = 0
let lossDone=0 let lossDone = 0
let allDone=0 let allDone = 0
let allDonePer=0 let allDonePer = 0
let allLongDone=0 let allLongDone = 0
let allLongDonePer=0 let allLongDonePer = 0
let lossLongDone=0 let lossLongDone = 0
let lossLongDonePer=0 let lossLongDonePer = 0
let allShortDone=0 let allShortDone = 0
let allShortDonePer=0 let allShortDonePer = 0
let lossShortDone=0 let lossShortDone = 0
let lossShortDonePer=0 let lossShortDonePer = 0
let lossDonePer=0 let lossDonePer = 0
let lossPlusDone=0 let lossPlusDone = 0
let lossPlusDonePer=0 let lossPlusDonePer = 0
let listDays = [] let listDays = []
let maxReserve = 0 let maxReserve = 0
let maxMeta = 0 let maxMeta = 0
...@@ -213,7 +156,7 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max ...@@ -213,7 +156,7 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
let realProfit = 0 let realProfit = 0
let dateString = '' let dateString = ''
let runupString = '' let runupString = ''
let profitLossString='' let profitLossString = ''
let sideString = '' let sideString = ''
// console.log(data) // console.log(data)
...@@ -237,9 +180,9 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max ...@@ -237,9 +180,9 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
let RunUpDrawDownAllLossProfit = 0 let RunUpDrawDownAllLossProfit = 0
let drawDownPlusRunUpCount = 0 let drawDownPlusRunUpCount = 0
let drawDownPlusRunUpPercent = 0 let drawDownPlusRunUpPercent = 0
let VarProfitZeroRunupProfit=0 let VarProfitZeroRunupProfit = 0
let VarDrawDownZeroProfit=0 let VarDrawDownZeroProfit = 0
let VarProfitZeroRunupDrawDown=0 let VarProfitZeroRunupDrawDown = 0
let countDropRunup = 0 let countDropRunup = 0
let ProfitZeroDrawDownPercent = 0 let ProfitZeroDrawDownPercent = 0
...@@ -249,37 +192,32 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max ...@@ -249,37 +192,32 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
let diffDrawdownProfitAll = 0 let diffDrawdownProfitAll = 0
let RunupDrawDownDiffDrawdownProfitAll = 0 let RunupDrawDownDiffDrawdownProfitAll = 0
let VarRunupZeroDrawDown=0 let VarRunupZeroDrawDown = 0
let VarRunupZeroProfit=0 let VarRunupZeroProfit = 0
let VarRunupZeroProfitDrawDown=0 let VarRunupZeroProfitDrawDown = 0
let VarRunupZeroProfitRunup=0 let VarRunupZeroProfitRunup = 0
let VarRunupZeroRunupDrawDown=0 let VarRunupZeroRunupDrawDown = 0
let VarDrawDownZeroDrawDown=0
let VarDrawDownnZeroProfit=0
let VarDrawDownZeroProfitDrawDown=0
let VarDrawDownZeroProfitRunup=0
let VarDrawDownZeroRunupDrawDown=0
let VarProfitDrawDownZeroDrawDown=0
let VarProfitDrawDownZeroProfit=0
let VarProfitDrawDownZeroProfitDrawDown=0
let VarProfitDrawDownZeroProfitRunup=0
let VarProfitDrawDownZeroRunupDrawDown=0
let VarDrawDownZeroDrawDown = 0
let VarDrawDownnZeroProfit = 0
let VarDrawDownZeroProfitDrawDown = 0
let VarDrawDownZeroProfitRunup = 0
let VarDrawDownZeroRunupDrawDown = 0
let VarProfitDrawDownZeroDrawDown = 0
let VarProfitDrawDownZeroProfit = 0
let VarProfitDrawDownZeroProfitDrawDown = 0
let VarProfitDrawDownZeroProfitRunup = 0
let VarProfitDrawDownZeroRunupDrawDown = 0
let VarProfitRunupZeroDrawDown=0
let VarProfitRunupZeroProfit=0
let VarProfitRunupZeroProfitDrawDown=0
let VarProfitRunupZeroProfitRunup=0
let VarProfitRunupZeroRunupDrawDown=0
let VarProfitRunupZeroDrawDown = 0
let VarProfitRunupZeroProfit = 0
let VarProfitRunupZeroProfitDrawDown = 0
let VarProfitRunupZeroProfitRunup = 0
let VarProfitRunupZeroRunupDrawDown = 0
let dur let dur
...@@ -311,7 +249,7 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max ...@@ -311,7 +249,7 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
for (let i = 0; i < data.length; i++) { for (let i = 0; i < data.length; i++) {
if (allDonePer<-70) if (allDonePer < -70)
return null return null
if (maxDays > maxTradeDays) if (maxDays > maxTradeDays)
return null return null
...@@ -357,178 +295,132 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max ...@@ -357,178 +295,132 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
runBefore = false runBefore = false
else else
runBefore = true runBefore = true
} } else if (usage === 'ProfitZeroRunupProfit') {
else if (usage === 'ProfitZeroRunupProfit') {
if (VarProfitZeroRunupProfit > ProfitZeroRunupProfit) if (VarProfitZeroRunupProfit > ProfitZeroRunupProfit)
runBefore = false runBefore = false
else else
runBefore = true runBefore = true
} } else if (usage === 'ProfitZeroRunupDrawDown') {
else if (usage === 'ProfitZeroRunupDrawDown') {
if (VarProfitZeroRunupDrawDown > ProfitZeroRunupDrawDown) if (VarProfitZeroRunupDrawDown > ProfitZeroRunupDrawDown)
runBefore = false runBefore = false
else else
runBefore = true runBefore = true
} } else if (usage === 'RunUpDrawDownZeroProfit') {
else if (usage === 'RunUpDrawDownZeroProfit') {
if (RunUpDrawDownAllLossProfit > RunUpDrawDownZeroProfit) if (RunUpDrawDownAllLossProfit > RunUpDrawDownZeroProfit)
runBefore = false runBefore = false
else else
runBefore = true runBefore = true
} } else if (usage === 'RunUpDrawDownZeroDrawDownProfit') {
else if (usage === 'RunUpDrawDownZeroDrawDownProfit') {
if (RunupDrawDownDiffDrawdownProfitAll > RunUpDrawDownZeroDrawDownProfit) if (RunupDrawDownDiffDrawdownProfitAll > RunUpDrawDownZeroDrawDownProfit)
runBefore = false runBefore = false
else else
runBefore = true runBefore = true
} } else if (usage === 'RunUpDrawDownZeroDrawdown') {
else if (usage === 'RunUpDrawDownZeroDrawdown') {
if (runUpDrawDownZeroDrawDownPercent > RunUpDrawDownZeroDrawdown) if (runUpDrawDownZeroDrawDownPercent > RunUpDrawDownZeroDrawdown)
runBefore = false runBefore = false
else else
runBefore = true runBefore = true
} } else if (usage === 'RunUpDrawDownZeroRunupProfit') {
else if (usage === 'RunUpDrawDownZeroRunupProfit') {
if (VarDrawDownZeroProfit > RunUpDrawDownZeroRunupProfit) if (VarDrawDownZeroProfit > RunUpDrawDownZeroRunupProfit)
runBefore = false runBefore = false
else else
runBefore = true runBefore = true
} } else if (usage === 'RunupZeroRunupDrawDown') {
else if (usage === 'RunupZeroRunupDrawDown') {
if (VarRunupZeroRunupDrawDown > RunupZeroRunupDrawDown) if (VarRunupZeroRunupDrawDown > RunupZeroRunupDrawDown)
runBefore = false runBefore = false
else else
runBefore = true runBefore = true
} } else if (usage === 'RunupZeroProfit') {
else if (usage === 'RunupZeroProfit') {
if (VarRunupZeroProfit > RunupZeroProfit) if (VarRunupZeroProfit > RunupZeroProfit)
runBefore = false runBefore = false
else else
runBefore = true runBefore = true
} } else if (usage === 'RunupZeroProfitDrawDown') {
else if (usage === 'RunupZeroProfitDrawDown') {
if (VarRunupZeroProfitDrawDown > RunupZeroProfitDrawDown) if (VarRunupZeroProfitDrawDown > RunupZeroProfitDrawDown)
runBefore = false runBefore = false
else else
runBefore = true runBefore = true
} } else if (usage === 'RunupZeroDrawDown') {
else if (usage === 'RunupZeroDrawDown') {
if (VarRunupZeroDrawDown > RunupZeroDrawDown) if (VarRunupZeroDrawDown > RunupZeroDrawDown)
runBefore = false runBefore = false
else else
runBefore = true runBefore = true
} } else if (usage === 'RunupZeroProfitRunup') {
else if (usage === 'RunupZeroProfitRunup') {
if (VarRunupZeroProfitRunup > RunupZeroProfitRunup) if (VarRunupZeroProfitRunup > RunupZeroProfitRunup)
runBefore = false runBefore = false
else else
runBefore = true runBefore = true
} } else if (usage === 'DrawDownZeroDrawDown') {
else if (usage === 'DrawDownZeroDrawDown') {
if (VarDrawDownZeroDrawDown > DrawDownZeroDrawDown) if (VarDrawDownZeroDrawDown > DrawDownZeroDrawDown)
runBefore = false runBefore = false
else else
runBefore = true runBefore = true
} } else if (usage === 'DrawDownnZeroProfit') {
else if (usage === 'DrawDownnZeroProfit') {
if (VarDrawDownnZeroProfit > DrawDownnZeroProfit) if (VarDrawDownnZeroProfit > DrawDownnZeroProfit)
runBefore = false runBefore = false
else else
runBefore = true runBefore = true
} } else if (usage === 'DrawDownZeroProfitDrawDown') {
else if (usage === 'DrawDownZeroProfitDrawDown') {
if (VarDrawDownZeroProfitDrawDown > DrawDownZeroProfitDrawDown) if (VarDrawDownZeroProfitDrawDown > DrawDownZeroProfitDrawDown)
runBefore = false runBefore = false
else else
runBefore = true runBefore = true
} } else if (usage === 'DrawDownZeroProfitRunup') {
else if (usage === 'DrawDownZeroProfitRunup') {
if (VarDrawDownZeroProfitRunup > DrawDownZeroProfitRunup) if (VarDrawDownZeroProfitRunup > DrawDownZeroProfitRunup)
runBefore = false runBefore = false
else else
runBefore = true runBefore = true
} } else if (usage === 'DrawDownZeroRunupDrawDown') {
else if (usage === 'DrawDownZeroRunupDrawDown') {
if (VarDrawDownZeroRunupDrawDown > DrawDownZeroRunupDrawDown) if (VarDrawDownZeroRunupDrawDown > DrawDownZeroRunupDrawDown)
runBefore = false runBefore = false
else else
runBefore = true runBefore = true
} } else if (usage === 'ProfitDrawDownZeroDrawDown') {
else if (usage === 'ProfitDrawDownZeroDrawDown') {
if (VarProfitDrawDownZeroDrawDown > ProfitDrawDownZeroDrawDown) if (VarProfitDrawDownZeroDrawDown > ProfitDrawDownZeroDrawDown)
runBefore = false runBefore = false
else else
runBefore = true runBefore = true
} } else if (usage === 'ProfitDrawDownZeroProfit') {
else if (usage === 'ProfitDrawDownZeroProfit') {
if (VarProfitDrawDownZeroProfit > ProfitDrawDownZeroProfit) if (VarProfitDrawDownZeroProfit > ProfitDrawDownZeroProfit)
runBefore = false runBefore = false
else else
runBefore = true runBefore = true
} } else if (usage === 'ProfitDrawDownZeroProfitDrawDown') {
else if (usage === 'ProfitDrawDownZeroProfitDrawDown') {
if (VarProfitDrawDownZeroProfitDrawDown > ProfitDrawDownZeroProfitDrawDown) if (VarProfitDrawDownZeroProfitDrawDown > ProfitDrawDownZeroProfitDrawDown)
runBefore = false runBefore = false
else else
runBefore = true runBefore = true
} } else if (usage === 'ProfitDrawDownZeroProfitRunup') {
else if (usage === 'ProfitDrawDownZeroProfitRunup') {
if (VarProfitDrawDownZeroProfitRunup > ProfitDrawDownZeroProfitRunup) if (VarProfitDrawDownZeroProfitRunup > ProfitDrawDownZeroProfitRunup)
runBefore = false runBefore = false
else else
runBefore = true runBefore = true
} } else if (usage === 'ProfitDrawDownZeroRunupDrawDown') {
else if (usage === 'ProfitDrawDownZeroRunupDrawDown') {
if (VarProfitDrawDownZeroRunupDrawDown > ProfitDrawDownZeroRunupDrawDown) if (VarProfitDrawDownZeroRunupDrawDown > ProfitDrawDownZeroRunupDrawDown)
runBefore = false runBefore = false
else else
runBefore = true runBefore = true
} } else if (usage === 'ProfitRunupZeroDrawDown') {
else if (usage === 'ProfitRunupZeroDrawDown') {
if (VarProfitRunupZeroDrawDown > ProfitRunupZeroDrawDown) if (VarProfitRunupZeroDrawDown > ProfitRunupZeroDrawDown)
runBefore = false runBefore = false
else else
runBefore = true runBefore = true
} } else if (usage === 'ProfitRunupZeroProfit') {
else if (usage === 'ProfitRunupZeroProfit') {
if (VarProfitRunupZeroProfit > ProfitRunupZeroProfit) if (VarProfitRunupZeroProfit > ProfitRunupZeroProfit)
runBefore = false runBefore = false
else else
runBefore = true runBefore = true
} } else if (usage === 'ProfitRunupZeroProfitDrawDown') {
else if (usage === 'ProfitRunupZeroProfitDrawDown') {
if (VarProfitRunupZeroProfitDrawDown > ProfitRunupZeroProfitDrawDown) if (VarProfitRunupZeroProfitDrawDown > ProfitRunupZeroProfitDrawDown)
runBefore = false runBefore = false
else else
runBefore = true runBefore = true
} } else if (usage === 'ProfitRunupZeroProfitRunup') {
else if (usage === 'ProfitRunupZeroProfitRunup') {
if (VarProfitRunupZeroProfitRunup > ProfitRunupZeroProfitRunup) if (VarProfitRunupZeroProfitRunup > ProfitRunupZeroProfitRunup)
runBefore = false runBefore = false
else else
runBefore = true runBefore = true
} } else if (usage === 'ProfitRunupZeroRunupDrawDown') {
else if (usage === 'ProfitRunupZeroRunupDrawDown') {
if (VarProfitRunupZeroRunupDrawDown > ProfitRunupZeroRunupDrawDown) if (VarProfitRunupZeroRunupDrawDown > ProfitRunupZeroRunupDrawDown)
runBefore = false runBefore = false
else else
...@@ -536,48 +428,25 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max ...@@ -536,48 +428,25 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
} }
// //
} }
if ((data[i].profit + data[i].runUp) < 0) { if ((data[i].profit + data[i].runUp) < 0) {
VarProfitRunupZeroRunupDrawDown = VarProfitRunupZeroRunupDrawDown + (data[i].runUp + data[i].drawDown) VarProfitRunupZeroRunupDrawDown = VarProfitRunupZeroRunupDrawDown + (data[i].runUp + data[i].drawDown)
VarProfitRunupZeroProfit = VarProfitRunupZeroProfit + data[i].profit VarProfitRunupZeroProfit = VarProfitRunupZeroProfit + data[i].profit
VarProfitRunupZeroProfitDrawDown = VarProfitRunupZeroProfitDrawDown + (data[i].drawDown - data[i].profit) VarProfitRunupZeroProfitDrawDown = VarProfitRunupZeroProfitDrawDown + (data[i].drawDown - data[i].profit)
VarProfitRunupZeroDrawDown = VarProfitRunupZeroDrawDown + data[i].drawDown VarProfitRunupZeroDrawDown = VarProfitRunupZeroDrawDown + data[i].drawDown
VarProfitRunupZeroProfitRunup=VarProfitRunupZeroProfitRunup+(data[i].runUp + data[i].profit) VarProfitRunupZeroProfitRunup = VarProfitRunupZeroProfitRunup + (data[i].runUp + data[i].profit)
} else { } else {
VarProfitRunupZeroDrawDown=0 VarProfitRunupZeroDrawDown = 0
VarProfitRunupZeroProfit=0 VarProfitRunupZeroProfit = 0
VarProfitRunupZeroProfitDrawDown=0 VarProfitRunupZeroProfitDrawDown = 0
VarProfitRunupZeroProfitRunup=0 VarProfitRunupZeroProfitRunup = 0
VarProfitRunupZeroRunupDrawDown=0 VarProfitRunupZeroRunupDrawDown = 0
} }
if ((data[i].profit + data[i].drawDown) < 0) { if ((data[i].profit + data[i].drawDown) < 0) {
...@@ -585,14 +454,14 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max ...@@ -585,14 +454,14 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
VarProfitDrawDownZeroProfit = VarProfitDrawDownZeroProfit + data[i].profit VarProfitDrawDownZeroProfit = VarProfitDrawDownZeroProfit + data[i].profit
VarProfitDrawDownZeroProfitDrawDown = VarProfitDrawDownZeroProfitDrawDown + (data[i].drawDown - data[i].profit) VarProfitDrawDownZeroProfitDrawDown = VarProfitDrawDownZeroProfitDrawDown + (data[i].drawDown - data[i].profit)
VarProfitDrawDownZeroDrawDown = VarProfitDrawDownZeroDrawDown + data[i].drawDown VarProfitDrawDownZeroDrawDown = VarProfitDrawDownZeroDrawDown + data[i].drawDown
VarProfitDrawDownZeroProfitRunup=VarProfitDrawDownZeroProfitRunup+(data[i].runUp + data[i].profit) VarProfitDrawDownZeroProfitRunup = VarProfitDrawDownZeroProfitRunup + (data[i].runUp + data[i].profit)
} else { } else {
VarProfitDrawDownZeroDrawDown=0 VarProfitDrawDownZeroDrawDown = 0
VarProfitDrawDownZeroProfit=0 VarProfitDrawDownZeroProfit = 0
VarProfitDrawDownZeroProfitDrawDown=0 VarProfitDrawDownZeroProfitDrawDown = 0
VarProfitDrawDownZeroProfitRunup=0 VarProfitDrawDownZeroProfitRunup = 0
VarProfitDrawDownZeroRunupDrawDown=0 VarProfitDrawDownZeroRunupDrawDown = 0
} }
...@@ -601,14 +470,14 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max ...@@ -601,14 +470,14 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
VarDrawDownnZeroProfit = VarDrawDownnZeroProfit + data[i].profit VarDrawDownnZeroProfit = VarDrawDownnZeroProfit + data[i].profit
VarDrawDownZeroProfitDrawDown = VarDrawDownZeroProfitDrawDown + (data[i].drawDown - data[i].profit) VarDrawDownZeroProfitDrawDown = VarDrawDownZeroProfitDrawDown + (data[i].drawDown - data[i].profit)
VarDrawDownZeroDrawDown = VarDrawDownZeroDrawDown + data[i].drawDown VarDrawDownZeroDrawDown = VarDrawDownZeroDrawDown + data[i].drawDown
VarDrawDownZeroProfitRunup=VarDrawDownZeroProfitRunup+(data[i].runUp + data[i].profit) VarDrawDownZeroProfitRunup = VarDrawDownZeroProfitRunup + (data[i].runUp + data[i].profit)
} else { } else {
VarDrawDownZeroDrawDown=0 VarDrawDownZeroDrawDown = 0
VarDrawDownnZeroProfit=0 VarDrawDownnZeroProfit = 0
VarDrawDownZeroProfitDrawDown=0 VarDrawDownZeroProfitDrawDown = 0
VarDrawDownZeroProfitRunup=0 VarDrawDownZeroProfitRunup = 0
VarDrawDownZeroRunupDrawDown=0 VarDrawDownZeroRunupDrawDown = 0
//zero //zero
} }
...@@ -620,14 +489,14 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max ...@@ -620,14 +489,14 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
VarRunupZeroProfit = VarRunupZeroProfit + data[i].profit VarRunupZeroProfit = VarRunupZeroProfit + data[i].profit
VarRunupZeroProfitDrawDown = VarRunupZeroProfitDrawDown + (data[i].drawDown - data[i].profit) VarRunupZeroProfitDrawDown = VarRunupZeroProfitDrawDown + (data[i].drawDown - data[i].profit)
VarRunupZeroDrawDown = VarRunupZeroDrawDown + data[i].drawDown VarRunupZeroDrawDown = VarRunupZeroDrawDown + data[i].drawDown
VarRunupZeroProfitRunup=VarRunupZeroProfitRunup+(data[i].runUp + data[i].profit) VarRunupZeroProfitRunup = VarRunupZeroProfitRunup + (data[i].runUp + data[i].profit)
} else { } else {
VarRunupZeroRunupDrawDown=0 VarRunupZeroRunupDrawDown = 0
VarRunupZeroProfit=0 VarRunupZeroProfit = 0
VarRunupZeroProfitDrawDown=0 VarRunupZeroProfitDrawDown = 0
VarRunupZeroDrawDown=0 VarRunupZeroDrawDown = 0
VarRunupZeroProfitRunup=0 VarRunupZeroProfitRunup = 0
//zero //zero
} }
...@@ -637,14 +506,14 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max ...@@ -637,14 +506,14 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
RunUpDrawDownAllLossProfit = RunUpDrawDownAllLossProfit + data[i].profit RunUpDrawDownAllLossProfit = RunUpDrawDownAllLossProfit + data[i].profit
RunupDrawDownDiffDrawdownProfitAll = RunupDrawDownDiffDrawdownProfitAll + (data[i].drawDown - data[i].profit) RunupDrawDownDiffDrawdownProfitAll = RunupDrawDownDiffDrawdownProfitAll + (data[i].drawDown - data[i].profit)
runUpDrawDownZeroDrawDownPercent = runUpDrawDownZeroDrawDownPercent + data[i].drawDown runUpDrawDownZeroDrawDownPercent = runUpDrawDownZeroDrawDownPercent + data[i].drawDown
VarDrawDownZeroProfit=VarDrawDownZeroProfit+(data[i].runUp + data[i].profit) VarDrawDownZeroProfit = VarDrawDownZeroProfit + (data[i].runUp + data[i].profit)
} else { } else {
drawDownPlusRunUpCount = 0 drawDownPlusRunUpCount = 0
drawDownPlusRunUpPercent = 0 drawDownPlusRunUpPercent = 0
RunUpDrawDownAllLossProfit=0 RunUpDrawDownAllLossProfit = 0
RunupDrawDownDiffDrawdownProfitAll=0 RunupDrawDownDiffDrawdownProfitAll = 0
runUpDrawDownZeroDrawDownPercent=0 runUpDrawDownZeroDrawDownPercent = 0
VarDrawDownZeroProfit=0 VarDrawDownZeroProfit = 0
} }
...@@ -652,13 +521,13 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max ...@@ -652,13 +521,13 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
allLossProfit = allLossProfit + data[i].profit allLossProfit = allLossProfit + data[i].profit
diffDrawdownProfitAll = diffDrawdownProfitAll + (data[i].drawDown - data[i].profit) diffDrawdownProfitAll = diffDrawdownProfitAll + (data[i].drawDown - data[i].profit)
ProfitZeroDrawDownPercent = ProfitZeroDrawDownPercent + data[i].drawDown ProfitZeroDrawDownPercent = ProfitZeroDrawDownPercent + data[i].drawDown
VarProfitZeroRunupProfit=VarProfitZeroRunupProfit+(data[i].runUp + data[i].profit) VarProfitZeroRunupProfit = VarProfitZeroRunupProfit + (data[i].runUp + data[i].profit)
VarProfitZeroRunupDrawDown=VarProfitZeroRunupDrawDown+(data[i].runUp + data[i].drawDown) VarProfitZeroRunupDrawDown = VarProfitZeroRunupDrawDown + (data[i].runUp + data[i].drawDown)
countDrop++ countDrop++
} else { } else {
allLossProfit = 0 allLossProfit = 0
VarProfitZeroRunupProfit=0 VarProfitZeroRunupProfit = 0
VarProfitZeroRunupDrawDown=0 VarProfitZeroRunupDrawDown = 0
diffDrawdownProfitAll = 0 diffDrawdownProfitAll = 0
countDrop = 0 countDrop = 0
ProfitZeroDrawDownPercent = 0 ProfitZeroDrawDownPercent = 0
...@@ -696,8 +565,7 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max ...@@ -696,8 +565,7 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
if (data[i].side === 'LONG') { if (data[i].side === 'LONG') {
allLongDone++ allLongDone++
} } else {
else {
allShortDone++ allShortDone++
} }
if (step === 0) { if (step === 0) {
...@@ -772,8 +640,8 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max ...@@ -772,8 +640,8 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
obj = d obj = d
obj.signal = data[i] obj.signal = data[i]
obj.avgRunup=avgRunup obj.avgRunup = avgRunup
obj.avgDrawdown=avgDrawdown obj.avgDrawdown = avgDrawdown
// obj.signal.openTimeStamp = data[i].unixOpen // obj.signal.openTimeStamp = data[i].unixOpen
...@@ -859,14 +727,14 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max ...@@ -859,14 +727,14 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
lastMoney = 0 lastMoney = 0
allTotal++ allTotal++
targetDone++ targetDone++
allDonePer=allDonePer+config.target allDonePer = allDonePer + config.target
targetDonePer=targetDonePer+config.target targetDonePer = targetDonePer + config.target
if (data[i].side === 'LONG') if (data[i].side === 'LONG')
allLongDonePer=allLongDonePer+config.target allLongDonePer = allLongDonePer + config.target
else else
allShortDonePer=allShortDonePer+config.target allShortDonePer = allShortDonePer + config.target
if (!d.riskFree) if (!d.riskFree)
total++ total++
...@@ -875,36 +743,32 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max ...@@ -875,36 +743,32 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
profitLossString = profitLossString + data[i].profit + '_' profitLossString = profitLossString + data[i].profit + '_'
lossDone++ lossDone++
lossDonePer=lossDonePer+data[i].profit-0.1 lossDonePer = lossDonePer + data[i].profit - 0.1
allDonePer=allDonePer+data[i].profit-0.1 allDonePer = allDonePer + data[i].profit - 0.1
if (data[i].side === 'LONG') { if (data[i].side === 'LONG') {
allLongDonePer = allLongDonePer + data[i].profit - 0.1 allLongDonePer = allLongDonePer + data[i].profit - 0.1
if (data[i].profit<=0.1) if (data[i].profit <= 0.1) {
{
lossLongDone++ lossLongDone++
lossLongDonePer=lossLongDonePer+(data[i].profit+-0.1) lossLongDonePer = lossLongDonePer + (data[i].profit + -0.1)
} }
} } else {
else {
allShortDonePer = allShortDonePer + data[i].profit - 0.1 allShortDonePer = allShortDonePer + data[i].profit - 0.1
if (data[i].profit<=0.1) if (data[i].profit <= 0.1) {
{
lossShortDone++ lossShortDone++
lossShortDonePer=lossShortDonePer+(data[i].profit+-0.1) lossShortDonePer = lossShortDonePer + (data[i].profit + -0.1)
} }
} }
if (data[i].profit>0.1) if (data[i].profit > 0.1) {
{
lossPlusDone++ lossPlusDone++
lossPlusDonePer=lossPlusDonePer+(data[i].profit+-0.1) lossPlusDonePer = lossPlusDonePer + (data[i].profit + -0.1)
} }
// unixMid = data[i].unixClose // unixMid = data[i].unixClose
// step++ // step++
step=0 step = 0
profit = profit + d.profit profit = profit + d.profit
lastMoney = d.lastMoney lastMoney = d.lastMoney
lastCom = lastCom + d.com lastCom = lastCom + d.com
...@@ -1050,22 +914,22 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max ...@@ -1050,22 +914,22 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
type: type, type: type,
total: total, total: total,
allTotal: allTotal, allTotal: allTotal,
allDone:allDone, allDone: allDone,
allDonePer:allDonePer, allDonePer: allDonePer,
allLongDone:allLongDone, allLongDone: allLongDone,
allLongDonePer:allLongDonePer, allLongDonePer: allLongDonePer,
allShortDone:allShortDone, allShortDone: allShortDone,
allShortDonePer:allShortDonePer, allShortDonePer: allShortDonePer,
targetDone:targetDone, targetDone: targetDone,
targetDonePer:targetDonePer, targetDonePer: targetDonePer,
lossDone:lossDone, lossDone: lossDone,
lossDonePer:lossDonePer, lossDonePer: lossDonePer,
lossPlusDone:lossPlusDone, lossPlusDone: lossPlusDone,
lossPlusDonePer:lossPlusDonePer, lossPlusDonePer: lossPlusDonePer,
lossLongDone:lossLongDone, lossLongDone: lossLongDone,
lossLongDonePer:lossLongDonePer, lossLongDonePer: lossLongDonePer,
lossShortDone:lossShortDone, lossShortDone: lossShortDone,
lossShortDonePer:lossShortDonePer, lossShortDonePer: lossShortDonePer,
avgLevel: maxLevel / total, avgLevel: maxLevel / total,
maxLevel: maxLevel, maxLevel: maxLevel,
dur: dur, dur: dur,
...@@ -1081,7 +945,7 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max ...@@ -1081,7 +945,7 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
dateString: dateString, dateString: dateString,
runupString: runupString, runupString: runupString,
sideString: sideString, sideString: sideString,
profitLossString:profitLossString, profitLossString: profitLossString,
firstMaxAllocatedMoney: firstMaxAllocatedMoney, firstMaxAllocatedMoney: firstMaxAllocatedMoney,
maxAllocatedMoney: maxAllocatedMoney, maxAllocatedMoney: maxAllocatedMoney,
avgAllocatedMoney: maxAllocatedMoney / total, avgAllocatedMoney: maxAllocatedMoney / total,
...@@ -1106,7 +970,7 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max ...@@ -1106,7 +970,7 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
} }
if (opt.allDonePer <1) if (opt.allDonePer < 1)
return null return null
// if (opt.allDone <60) // if (opt.allDone <60)
...@@ -1123,9 +987,26 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max ...@@ -1123,9 +987,26 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
} }
delete opt.allTotal
delete opt.avgLevel
delete opt.maxDays
delete opt.avgDays
delete opt.maxRuntime
delete opt.allLoss
delete opt.totalFinal
delete opt.totalPlus
delete opt.firstMaxAllocatedMoney
delete opt.maxAllocatedMoney
delete opt.avgAllocatedMoney
delete opt.avgReserve
delete opt.percentage
delete opt.allocatedReserve
delete opt.minus
delete opt.risk
delete opt.levels
return opt
return opt
} }
......
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