Commit 3e989826 authored by Ahmad Nemati's avatar Ahmad Nemati

git pu

parent d0293aab
...@@ -14,20 +14,20 @@ let avgDrawdown = 0 ...@@ -14,20 +14,20 @@ let avgDrawdown = 0
let avgProfit = 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,ProfitZeroRunupProfit,ProfitZeroRunupDrawDown, usage) { function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, maxTradeDays, targetPercentage, candlesData, fft, ProfitZeroProfit, fftRunup, ProfitZeroProfitRunup, ProfitZeroDrawDownProfit, ProfitZeroDrawDown, 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
} else if (usage === 'fftPercent') { } else if (usage === 'ProfitZeroProfit') {
type = type + ' ' + usage + ' ' + fftPercent type = type + ' ' + usage + ' ' + ProfitZeroProfit
} else if (usage === 'fftRunup') { } else if (usage === 'fftRunup') {
type = type + ' ' + usage + ' ' + fftRunup type = type + ' ' + usage + ' ' + fftRunup
} else if (usage === 'fftDiffDrawDownProfit') { } else if (usage === 'ProfitZeroDrawDownProfit') {
type = type + ' ' + usage + ' ' + fftDiffDrawDownProfit type = type + ' ' + usage + ' ' + ProfitZeroDrawDownProfit
} else if (usage === 'fftPercentRunup') { } else if (usage === 'ProfitZeroProfitRunup') {
type = type + ' ' + usage + ' Count:' + fftPercentRunup.count + ' Percent:' + fftPercentRunup.percent type = type + ' ' + usage + ' Count:' + ProfitZeroProfitRunup.count + ' Percent:' + ProfitZeroProfitRunup.percent
} else if (usage === 'fftDrawDown') { } else if (usage === 'ProfitZeroDrawDown') {
type = type + ' ' + usage + ' ' + fftDrawDown type = type + ' ' + usage + ' ' + ProfitZeroDrawDown
} else if (usage === 'ddPlusRunCount') { } else if (usage === 'ddPlusRunCount') {
type = type + ' ' + usage + ' ' + ddPlusRunCount type = type + ' ' + usage + ' ' + ddPlusRunCount
} else if (usage === 'ddPlusRunPercent') { } else if (usage === 'ddPlusRunPercent') {
...@@ -92,7 +92,7 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max ...@@ -92,7 +92,7 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
let VarProfitZeroRunupDrawDown=0 let VarProfitZeroRunupDrawDown=0
let countDropRunup = 0 let countDropRunup = 0
let fftDrawDownPercent = 0 let ProfitZeroDrawDownPercent = 0
let allLossProfitRunup = 0 let allLossProfitRunup = 0
let diffDrawdownProfitAll = 0 let diffDrawdownProfitAll = 0
...@@ -140,8 +140,8 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max ...@@ -140,8 +140,8 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
runBefore = false runBefore = false
else else
runBefore = true runBefore = true
} else if (usage === 'fftPercent') { } else if (usage === 'ProfitZeroProfit') {
if (allLossProfit > fftPercent) if (allLossProfit > ProfitZeroProfit)
runBefore = false runBefore = false
else else
runBefore = true runBefore = true
...@@ -150,8 +150,8 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max ...@@ -150,8 +150,8 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
runBefore = false runBefore = false
else else
runBefore = true runBefore = true
} else if (usage === 'fftDrawDown') { } else if (usage === 'ProfitZeroDrawDown') {
if (fftDrawDownPercent > fftDrawDown) if (ProfitZeroDrawDownPercent > ProfitZeroDrawDown)
runBefore = false runBefore = false
else else
runBefore = true runBefore = true
...@@ -160,12 +160,12 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max ...@@ -160,12 +160,12 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
runBefore = false runBefore = false
else else
runBefore = true runBefore = true
} else if (usage === 'fftDiffDrawDownProfit') { } else if (usage === 'ProfitZeroDrawDownProfit') {
if (diffDrawdownProfitAll > fftDiffDrawDownProfit) if (diffDrawdownProfitAll > ProfitZeroDrawDownProfit)
runBefore = false runBefore = false
else else
runBefore = true runBefore = true
} else if (usage === 'fftPercentRunup') { } else if (usage === 'ProfitZeroProfitRunup') {
if (canCreateRunupPercent === false) if (canCreateRunupPercent === false)
runBefore = false runBefore = false
else else
...@@ -233,7 +233,7 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max ...@@ -233,7 +233,7 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
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 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++
...@@ -243,7 +243,7 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max ...@@ -243,7 +243,7 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
VarProfitZeroRunupDrawDown=0 VarProfitZeroRunupDrawDown=0
diffDrawdownProfitAll = 0 diffDrawdownProfitAll = 0
countDrop = 0 countDrop = 0
fftDrawDownPercent = 0 ProfitZeroDrawDownPercent = 0
} }
if (data[i].runUp < config.target) { if (data[i].runUp < config.target) {
allLossProfitRunup = allLossProfitRunup + data[i].runUp allLossProfitRunup = allLossProfitRunup + data[i].runUp
...@@ -253,9 +253,9 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max ...@@ -253,9 +253,9 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
countDropRunup = 0 countDropRunup = 0
} }
if (usage === 'fftPercentRunup') { if (usage === 'ProfitZeroProfitRunup') {
let temp = 0 let temp = 0
for (let z = i + 1; z <= (i + fftPercentRunup.count); z++) { for (let z = i + 1; z <= (i + ProfitZeroProfitRunup.count); z++) {
try { try {
let runup = data[z].runUp let runup = data[z].runUp
...@@ -265,7 +265,7 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max ...@@ -265,7 +265,7 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
} }
} }
if (temp <= fftPercentRunup.percent) { if (temp <= ProfitZeroProfitRunup.percent) {
canCreateRunupPercent = true canCreateRunupPercent = true
} }
} }
......
...@@ -21,10 +21,10 @@ async function run() { ...@@ -21,10 +21,10 @@ async function run() {
"enable": false "enable": false
}, },
"fft": 10, "fft": 10,
"fftPercent": -20, "ProfitZeroProfit": -20,
"fftRunup": 4, "fftRunup": 4,
"fftPercentRunup": 1, "ProfitZeroProfitRunup": 1,
"fftDiffDrawDownProfit": -5, "ProfitZeroDrawDownProfit": -5,
"usage": "fftRunup", "usage": "fftRunup",
"detail": [ "detail": [
...@@ -59,11 +59,11 @@ async function run() { ...@@ -59,11 +59,11 @@ async function run() {
i.targetPercentage= config.targetPercentage i.targetPercentage= config.targetPercentage
i.fft=config.fft i.fft=config.fft
i.fftPercent= config.fftPercent i.ProfitZeroProfit= config.ProfitZeroProfit
i.fftRunup= config.fftRunup i.fftRunup= config.fftRunup
i.fftPercentRunup= config.fftPercentRunup i.ProfitZeroProfitRunup= config.ProfitZeroProfitRunup
i.fftDiffDrawDownProfit=config.fftDiffDrawDownProfit i.ProfitZeroDrawDownProfit=config.ProfitZeroDrawDownProfit
i.fftDrawDown=config.fftDrawDown i.ProfitZeroDrawDown=config.ProfitZeroDrawDown
i.ddPlusRunCount=config.ddPlusRunCount i.ddPlusRunCount=config.ddPlusRunCount
i.ddPlusRunPercent=config.ddPlusRunPercent i.ddPlusRunPercent=config.ddPlusRunPercent
......
...@@ -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, pfTrade, side, riskFreeLevel,detail,onlyShortLong,loss,dur,maxTradeDays,targetPercentage,candles,fft,fftPercent,fftRunup,fftPercentRunup,fftDiffDrawDownProfit,usage) { async function parse(directory, name, configs, risk, pfTrade, side, riskFreeLevel,detail,onlyShortLong,loss,dur,maxTradeDays,targetPercentage,candles,fft,ProfitZeroProfit,fftRunup,ProfitZeroProfitRunup,ProfitZeroDrawDownProfit,usage) {
return new Promise(function (resolve, reject) { return new Promise(function (resolve, reject) {
let arr = [] let arr = []
...@@ -15,12 +15,12 @@ async function parse(directory, name, configs, risk, pfTrade, side, riskFreeLeve ...@@ -15,12 +15,12 @@ async function parse(directory, name, configs, risk, pfTrade, side, riskFreeLeve
.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, pfTrade, side, riskFreeLevel,detail,onlyShortLong,loss,dur,maxTradeDays,targetPercentage,candles,fft,fftPercent,fftRunup,fftPercentRunup,fftDiffDrawDownProfit,usage))); .on('end', rowCount => resolve(initData(arr, configs, name, risk, pfTrade, side, riskFreeLevel,detail,onlyShortLong,loss,dur,maxTradeDays,targetPercentage,candles,fft,ProfitZeroProfit,fftRunup,ProfitZeroProfitRunup,ProfitZeroDrawDownProfit,usage)));
}); });
} }
function initData(data, config, name, risk, pfTrade, side, riskFreeLevel,detail,onlyShortLong,loss,dur,maxTradeDays,targetPercentage,candles,fft,fftPercent,fftRunup,fftPercentRunup,fftDiffDrawDownProfit,usage) { function initData(data, config, name, risk, pfTrade, side, riskFreeLevel,detail,onlyShortLong,loss,dur,maxTradeDays,targetPercentage,candles,fft,ProfitZeroProfit,fftRunup,ProfitZeroProfitRunup,ProfitZeroDrawDownProfit,usage) {
data = JSON.stringify(data) data = JSON.stringify(data)
...@@ -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].ProfitZeroRunupProfit,config[i].ProfitZeroRunupDrawDown,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].ProfitZeroProfit,config[i].fftRunup,config[i].ProfitZeroProfitRunup,config[i].ProfitZeroDrawDownProfit,config[i].ProfitZeroDrawDown,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)
} }
......
...@@ -22,7 +22,7 @@ async function run() ...@@ -22,7 +22,7 @@ async function run()
{ {
for (let n=1;n<40;n++) for (let n=1;n<40;n++)
{ {
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:false},fft:1,fftPercent:-2,fftRunup:2,fftPercentRunup:{count:7,percent:15},fftDiffDrawDownProfit:-0.5,fftDrawDown:-1,ddPlusRunCount:4,ddPlusRunPercent:-2,ProfitZeroRunupProfit:(n*-1),ProfitZeroRunupDrawDown:(n*-1),usage:'ProfitZeroRunupProfit'} 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:false},fft:1,ProfitZeroProfit:-2,fftRunup:2,ProfitZeroProfitRunup:{count:7,percent:15},ProfitZeroDrawDownProfit:-0.5,ProfitZeroDrawDown:-1,ddPlusRunCount:4,ddPlusRunPercent:-2,ProfitZeroRunupProfit:(n*-1),ProfitZeroRunupDrawDown:(n*-1),usage:'ProfitZeroRunupProfit'}
// 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=[] obj.detail=[]
// let all=[] // let all=[]
......
...@@ -44,7 +44,7 @@ async function run() { ...@@ -44,7 +44,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, configs.pfTrade, configs.side, configs.riskFreeLevel, JSON.parse(checks), configs.onlyShortLong, configs.loss,configs.dur,configs.maxTradeDays,configs.targetPercentage,arr5,configs.fft,configs.fftPercent,configs.fftRunup,configs.fftPercentRunup,configs.fftDiffDrawDownProfit,configs.usage)) arr.push(csv.parse(directory, files[i], configs.data, configs.risk, configs.pfTrade, configs.side, configs.riskFreeLevel, JSON.parse(checks), configs.onlyShortLong, configs.loss,configs.dur,configs.maxTradeDays,configs.targetPercentage,arr5,configs.fft,configs.ProfitZeroProfit,configs.fftRunup,configs.ProfitZeroProfitRunup,configs.ProfitZeroDrawDownProfit,configs.usage))
} }
arr = await Promise.all(arr) arr = await Promise.all(arr)
......
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