Commit fd8b0d66 authored by Ahmad Nemati's avatar Ahmad Nemati

git pu

parent f1daad1f
...@@ -9,9 +9,12 @@ let dynamic = 'dynamic' ...@@ -9,9 +9,12 @@ let dynamic = 'dynamic'
let elsa = 'elsa' let elsa = 'elsa'
let candles = [] let candles = []
let timeFrame = 0 let timeFrame = 0
let avgRunup = 0
let avgDrawdown = 0
let avgProfit = 0
function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, maxTradeDays, targetPercentage, candlesData, fft, fftPercent, fftRunup, fftPercentRunup, fftDiffDrawDownProfit, fftDrawDown, ddPlusRunCount, ddPlusRunPercent, usage) { function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, maxTradeDays, targetPercentage, candlesData, fft, fftPercent, fftRunup, fftPercentRunup, fftDiffDrawDownProfit, fftDrawDown, ddPlusRunCount, ddPlusRunPercent,ProfitZeroRunupProfit,ProfitZeroRunupDrawDown, usage) {
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
if (usage === 'fft') { if (usage === 'fft') {
type = type + ' ' + usage + ' ' + fft type = type + ' ' + usage + ' ' + fft
...@@ -30,6 +33,12 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max ...@@ -30,6 +33,12 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
} else if (usage === 'ddPlusRunPercent') { } else if (usage === 'ddPlusRunPercent') {
type = type + ' ' + usage + ' ' + ddPlusRunPercent type = type + ' ' + usage + ' ' + ddPlusRunPercent
} }
else if (usage === 'ProfitZeroRunupProfit') {
type = type + ' ' + usage + ' ' + ProfitZeroRunupProfit
}
else if (usage === 'ProfitZeroRunupDrawDown') {
type = type + ' ' + usage + ' ' + ProfitZeroRunupDrawDown
}
let saveData = [] let saveData = []
...@@ -78,7 +87,9 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max ...@@ -78,7 +87,9 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
let countDrop = 0 let countDrop = 0
let allLossProfit = 0 let allLossProfit = 0
let drawDownPlusRunUpCount = 0 let drawDownPlusRunUpCount = 0
let drawDownPlusRunUpPercent= 0 let drawDownPlusRunUpPercent = 0
let VarProfitZeroRunupProfit=0
let VarProfitZeroRunupDrawDown=0
let countDropRunup = 0 let countDropRunup = 0
let fftDrawDownPercent = 0 let fftDrawDownPercent = 0
...@@ -103,6 +114,15 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max ...@@ -103,6 +114,15 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
if (pfTrade < newP) if (pfTrade < newP)
return null return null
for (let i = 0; i < data.length; i++) {
avgProfit = avgProfit + data[i].profit
avgDrawdown = avgDrawdown + data[i].drawDown
avgRunup = avgRunup + data[i].runUp
}
avgProfit = avgProfit / data.length
avgRunup = avgRunup / data.length
avgDrawdown = avgDrawdown / data.length
for (let i = 0; i < data.length; i++) { for (let i = 0; i < data.length; i++) {
...@@ -152,24 +172,75 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max ...@@ -152,24 +172,75 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
runBefore = true runBefore = true
} }
else if (usage === 'ProfitZeroRunupProfit') {
if (VarProfitZeroRunupProfit > ProfitZeroRunupProfit)
runBefore = false
else
runBefore = true
}
else if (usage === 'ProfitZeroRunupDrawDown') {
if (VarProfitZeroRunupDrawDown > ProfitZeroRunupDrawDown)
runBefore = false
else
runBefore = true
}
} }
if ((data[i].runUp + data[i].drawDown) < 0) { if ((data[i].runUp + data[i].drawDown) < 0) {
drawDownPlusRunUpCount++ drawDownPlusRunUpCount++
drawDownPlusRunUpPercent=drawDownPlusRunUpPercent+(data[i].runUp + data[i].drawDown) drawDownPlusRunUpPercent = drawDownPlusRunUpPercent + (data[i].runUp + data[i].drawDown)
} else { } else {
drawDownPlusRunUpCount = 0 drawDownPlusRunUpCount = 0
drawDownPlusRunUpPercent=0 drawDownPlusRunUpPercent = 0
}
if ((data[i].profit + data[i].runUp) < 0) {
} else {
//zero
} }
if ((data[i].profit + data[i].drawDown) < 0) {
} else {
//zero
}
if (data[i].drawDown < avgDrawdown) {
} else {
//zero
}
if (data[i].runUp < avgRunup) {
} else {
//zero
}
if (data[i].profit < 0) { if (data[i].profit < 0) {
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)
fftDrawDownPercent = fftDrawDownPercent + data[i].drawDown fftDrawDownPercent = fftDrawDownPercent + data[i].drawDown
VarProfitZeroRunupProfit=VarProfitZeroRunupProfit+(data[i].runUp + data[i].profit)
VarProfitZeroRunupDrawDown=VarProfitZeroRunupDrawDown+(data[i].runUp + data[i].drawDown)
countDrop++ countDrop++
} else { } else {
allLossProfit = 0 allLossProfit = 0
VarProfitZeroRunupProfit=0
VarProfitZeroRunupDrawDown=0
diffDrawdownProfitAll = 0 diffDrawdownProfitAll = 0
countDrop = 0 countDrop = 0
fftDrawDownPercent = 0 fftDrawDownPercent = 0
...@@ -204,8 +275,8 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max ...@@ -204,8 +275,8 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
continue continue
if (step === 0) { if (step === 0) {
dateString = dateString + data[i].openDate.split(' ')[0] + '_' dateString = dateString + data[i].openDate.split(' ')[0] + '_'
runupString=runupString+data[i].runUp + '_' runupString = runupString + data[i].runUp + '_'
sideString=sideString+data[i].side + '_' sideString = sideString + data[i].side + '_'
} }
canCreateRunupPercent = false canCreateRunupPercent = false
runBefore = true runBefore = true
...@@ -510,8 +581,8 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max ...@@ -510,8 +581,8 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
profitPerMonth: Math.abs(profitPerMonth), profitPerMonth: Math.abs(profitPerMonth),
compoundPerMonth: compoundPerMonth, compoundPerMonth: compoundPerMonth,
dateString: dateString, dateString: dateString,
runupString:runupString, runupString: runupString,
sideString:sideString, sideString: sideString,
firstMaxAllocatedMoney: firstMaxAllocatedMoney, firstMaxAllocatedMoney: firstMaxAllocatedMoney,
maxAllocatedMoney: maxAllocatedMoney, maxAllocatedMoney: maxAllocatedMoney,
...@@ -537,8 +608,8 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max ...@@ -537,8 +608,8 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
} }
if (opt.total ===0) if (opt.total === 0)
return null return null
if (needPrintData) { if (needPrintData) {
fs.writeFile('detail/' + opt.platform + '-' + 'param' + config.param + 'base' + config.base + 'target' + config.target + '.json', JSON.stringify(saveData, null, 2), 'utf8', function (err) { fs.writeFile('detail/' + opt.platform + '-' + 'param' + config.param + 'base' + config.base + 'target' + config.target + '.json', JSON.stringify(saveData, null, 2), 'utf8', function (err) {
......
...@@ -31,60 +31,35 @@ async function format(name) { ...@@ -31,60 +31,35 @@ async function format(name) {
// console.log(res.length) // console.log(res.length)
let counter = 0 let counter = 0
let sum=0
let green=0
let red=0
for (let i = 1; i < (res.length ); i++) {
let d = res[i].split(',')
let profit = parseFloat(d[7])
let runup= parseFloat(d[8])
let drawDown=parseFloat(d[9])
console.log(drawDown)
if (profit+drawDown >0)
green++
else
red++
// if (runup>=-1.66)
// green++
// else
// red++
// console.log(runup)
sum=sum+runup
for (let i = 1; i < (res.length - 1); i++) {
// let d = res[i].split(',')
// try {
//
// let runup = parseFloat(d[8])
// if (runup>=15) {
//
// let temp=0
// for (let z=i-5;z<i;z++)
// {
// let d2 = res[z].split(',')
// let inlineRunup=parseFloat(d2[8])
// temp=temp+inlineRunup
//
// }
// if (temp<15) {
// counter++
// console.log('run up:' + runup + ' with 5 inline runup:' + temp)
// }
//
// }
//
//
//
//
//
// } catch (e) {
//
// }
let temp = 0
for (let z = i + 1; z <= (i + 7); z++) {
try {
let d = res[z].split(',')
let runup = parseFloat(d[8])
temp = temp + runup
}
catch (e)
{
}
}
if (temp <= 10) { }
counter++
console.log('run 15 up:'+temp )
}
console.log(green,red)
}
console.log(counter)
} }
......
...@@ -66,6 +66,9 @@ async function run() { ...@@ -66,6 +66,9 @@ async function run() {
i.fftDrawDown=config.fftDrawDown i.fftDrawDown=config.fftDrawDown
i.ddPlusRunCount=config.ddPlusRunCount i.ddPlusRunCount=config.ddPlusRunCount
i.ddPlusRunPercent=config.ddPlusRunPercent i.ddPlusRunPercent=config.ddPlusRunPercent
i.ProfitZeroRunupProfit=config.ProfitZeroRunupProfit
i.ProfitZeroRunupDrawDown=config.ProfitZeroRunupDrawDown
i.usage= config.usage i.usage= config.usage
i.detail=config.detail i.detail=config.detail
......
...@@ -140,7 +140,7 @@ function initData(data, config, name, risk, pfTrade, side, riskFreeLevel,detail, ...@@ -140,7 +140,7 @@ function initData(data, config, name, risk, pfTrade, side, riskFreeLevel,detail,
let cz = [] let cz = []
for (let i = 0; i < config.length; i++) { for (let i = 0; i < config.length; i++) {
let d = ai.run(arr, config[i], config[i].risk, config[i].pfTrade, config[i].riskFreeLevel,detail,config[i].loss,config[i].dur,config[i].maxTradeDays,config[i].targetPercentage,candles,config[i].fft,config[i].fftPercent,config[i].fftRunup,config[i].fftPercentRunup,config[i].fftDiffDrawDownProfit,config[i].fftDrawDown,config[i].ddPlusRunCount,config[i].ddPlusRunPercent,config[i].usage) let d = ai.run(arr, config[i], config[i].risk, config[i].pfTrade, config[i].riskFreeLevel,detail,config[i].loss,config[i].dur,config[i].maxTradeDays,config[i].targetPercentage,candles,config[i].fft,config[i].fftPercent,config[i].fftRunup,config[i].fftPercentRunup,config[i].fftDiffDrawDownProfit,config[i].fftDrawDown,config[i].ddPlusRunCount,config[i].ddPlusRunPercent,config[i].ProfitZeroRunupProfit,config[i].ProfitZeroRunupDrawDown,config[i].usage)
if (d !== null) if (d !== null)
cz.push(d) cz.push(d)
} }
......
...@@ -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:2,side:'both',riskFreeLevel:100,onlyShortLong:false,loss:0,level:200,dur:1500,maxTradeDays:40,targetPercentage:{enable:true},fft:1,fftPercent:-2,fftRunup:2,fftPercentRunup:{count:7,percent:15},fftDiffDrawDownProfit:-0.5,fftDrawDown:-1,ddPlusRunCount:4,ddPlusRunPercent:-2,usage:'fft'} let obj={sort:'profitPerMonthDrawDown',alocatedReserve:3,alocatedReserveCompound:3,risk:0,start:10000,pfTrade:2,side:'both',riskFreeLevel:100,onlyShortLong:false,loss:0,level:200,dur:1500,maxTradeDays:40,targetPercentage:{enable:true},fft:1,fftPercent:-2,fftRunup:2,fftPercentRunup:{count:7,percent:15},fftDiffDrawDownProfit:-0.5,fftDrawDown:-1,ddPlusRunCount:4,ddPlusRunPercent:-2,ProfitZeroRunupProfit:-2,ProfitZeroRunupDrawDown:-20,usage:'fft'}
let detail=['configs2.json-211021092159_O1_BNC_BTCUSD_Lp1_Y211020a - Copy_Mn.csv&zarib param:1.1 base:200 target:1'] let detail=['configs2.json-211021092159_O1_BNC_BTCUSD_Lp1_Y211020a - Copy_Mn.csv&zarib param:1.1 base:200 target:1']
obj.detail=detail obj.detail=detail
let all=[] let all=[]
......
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