Commit ad7fd4db authored by Ahmad Nemati's avatar Ahmad Nemati

init

parent 3f8a6971
...@@ -6,7 +6,12 @@ let zarib = 'zarib' ...@@ -6,7 +6,12 @@ let zarib = 'zarib'
let base = 'base' let base = 'base'
function run(data, config, risk, pfTrade, riskFreeLevel) { function run(data, config, risk, pfTrade, riskFreeLevel,detail) {
let type=config.type + ' param:' + config.param + ' base:' + config.base + ' target:' + config.target
let saveData=[]
let needPrintData=shouldPrint(detail,data[0].signal)
// console.log(needPrintData)
let commision = config.commision let commision = config.commision
let money = config.base let money = config.base
let total = 0 let total = 0
...@@ -33,7 +38,7 @@ function run(data, config, risk, pfTrade, riskFreeLevel) { ...@@ -33,7 +38,7 @@ function run(data, config, risk, pfTrade, riskFreeLevel) {
} }
if (dur <1400) if (dur <2)
return null return null
let newP = dur / data.length let newP = dur / data.length
...@@ -42,7 +47,7 @@ function run(data, config, risk, pfTrade, riskFreeLevel) { ...@@ -42,7 +47,7 @@ function run(data, config, risk, pfTrade, riskFreeLevel) {
if (pfTrade < newP) if (pfTrade < newP)
return null return null
for (let i = 0; i < data.length; i++) { for (let i = 0; i < data.length; i++) {
let obj
if (step === 0) if (step === 0)
money = config.base money = config.base
else { else {
...@@ -70,8 +75,21 @@ function run(data, config, risk, pfTrade, riskFreeLevel) { ...@@ -70,8 +75,21 @@ function run(data, config, risk, pfTrade, riskFreeLevel) {
// console.log( 'step->'+step) // console.log( 'step->'+step)
// console.log(d) // console.log(d)
if (step > maxLevel) if (step > maxLevel)
maxLevel = step maxLevel = step
if (needPrintData)
{
obj=d
obj.maxReserve=maxReserve
obj.maxAllocatedMoney=maxAllocatedMoney
obj.maxLevel=maxReserve
obj.step=step
obj.money=money
}
if (d.done === true) { if (d.done === true) {
levels.push(step) levels.push(step)
step = 0 step = 0
...@@ -89,7 +107,20 @@ function run(data, config, risk, pfTrade, riskFreeLevel) { ...@@ -89,7 +107,20 @@ function run(data, config, risk, pfTrade, riskFreeLevel) {
lastMoney = d.lastMoney lastMoney = d.lastMoney
lastCom = lastCom + d.com lastCom = lastCom + d.com
if (needPrintData)
{
obj.profit=profit
obj.lastMoney=lastMoney
obj.lastCom=lastCom
}
} }
if (needPrintData)
saveData.push(obj)
} }
let firstMaxAllocatedMoney = maxAllocatedMoney let firstMaxAllocatedMoney = maxAllocatedMoney
if (config.param !== 0) { if (config.param !== 0) {
...@@ -155,7 +186,7 @@ function run(data, config, risk, pfTrade, riskFreeLevel) { ...@@ -155,7 +186,7 @@ function run(data, config, risk, pfTrade, riskFreeLevel) {
let drawDown = Math.abs(((maxReserve * 100) / maxAllocatedMoney)) let drawDown = Math.abs(((maxReserve * 100) / maxAllocatedMoney))
let opt = { let opt = {
platform: data[0].signal, platform: data[0].signal,
type: config.type + ' param:' + config.param + ' base:' + config.base + ' target:' + config.target, type: type,
total: total, total: total,
allTotal:allTotal, allTotal:allTotal,
avgLevel: maxLevel / total, avgLevel: maxLevel / total,
...@@ -187,6 +218,14 @@ function run(data, config, risk, pfTrade, riskFreeLevel) { ...@@ -187,6 +218,14 @@ function run(data, config, risk, pfTrade, riskFreeLevel) {
} }
if (needPrintData)
{
fs.writeFile('detail/'+data[0].signal, JSON.stringify(saveData, null, 2), 'utf8', function (err) {
});
}
return opt return opt
...@@ -248,6 +287,14 @@ function calPer(entry, last) { ...@@ -248,6 +287,14 @@ function calPer(entry, last) {
return ((last - entry) / entry) * 100 return ((last - entry) / entry) * 100
} }
function shouldPrint(details,type)
{
for (let i=0;i<details.length;i++)
if (details[i] ===type)
return true
return false
}
function percentage(base, per) { function percentage(base, per) {
base = parseFloat(base) base = parseFloat(base)
......
...@@ -11,7 +11,13 @@ let cores = 15 ...@@ -11,7 +11,13 @@ let cores = 15
copyAllFiles() copyAllFiles()
async function init() { async function init() {
try {
await fs.mkdirSync('detail')
}
catch (e)
{
}
for (let i = 0; i < cores; i++) { for (let i = 0; i < cores; i++) {
let res = await fs.existsSync(prefix + i) let res = await fs.existsSync(prefix + i)
...@@ -52,7 +58,7 @@ async function check() { ...@@ -52,7 +58,7 @@ async function check() {
} }
let stats = await fs.statSync('allFiles/' + files[i]) let stats = await fs.statSync('allFiles/' + files[i])
if (stats.size < 10000) { if (stats.size < 6) {
await fs.unlinkSync('allFiles/' + files[i]) await fs.unlinkSync('allFiles/' + files[i])
continue continue
...@@ -95,6 +101,7 @@ async function copyAllFiles() ...@@ -95,6 +101,7 @@ async function copyAllFiles()
} }
let files = await fs.readdirSync('files') let files = await fs.readdirSync('files')
let size = await fs.read let size = await fs.read
for (let i = 0; i < files.length; i++) { for (let i = 0; i < files.length; i++) {
...@@ -105,7 +112,7 @@ async function copyAllFiles() ...@@ -105,7 +112,7 @@ async function copyAllFiles()
} }
let stats = await fs.statSync('files/' + files[i]) let stats = await fs.statSync('files/' + files[i])
if (stats.size < 10000) { if (stats.size < 6) {
await fs.unlinkSync('files/' + files[i]) await fs.unlinkSync('files/' + files[i])
continue continue
......
...@@ -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) { async function parse(directory, name, configs, risk, pfTrade, side, riskFreeLevel,detail,onlyShortLong) {
return new Promise(function (resolve, reject) { return new Promise(function (resolve, reject) {
let arr = [] let arr = []
// console.log(name) // console.log(name)
...@@ -14,12 +14,12 @@ async function parse(directory, name, configs, risk, pfTrade, side, riskFreeLeve ...@@ -14,12 +14,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))); .on('end', rowCount => resolve(initData(arr, configs, name, risk, pfTrade, side, riskFreeLevel,detail,onlyShortLong)));
}); });
} }
function initData(data, config, name, risk, pfTrade, side, riskFreeLevel) { function initData(data, config, name, risk, pfTrade, side, riskFreeLevel,detail,onlyShortLong) {
data = JSON.stringify(data) data = JSON.stringify(data)
...@@ -108,12 +108,35 @@ function initData(data, config, name, risk, pfTrade, side, riskFreeLevel) { ...@@ -108,12 +108,35 @@ function initData(data, config, name, risk, pfTrade, side, riskFreeLevel) {
} }
if (onlyShortLong ===true)
{
let arr2=[]
let lastSide=''
for (let i=0;i<arr.length;i++)
{
if (lastSide ==='') {
arr2.push(arr[i])
lastSide = arr[i].side
continue
}
if (lastSide === arr[i].side)
continue
arr2.push(arr[i])
lastSide=arr[i].side
}
arr=arr2
}
// console.log(arr) // console.log(arr)
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], risk, pfTrade, riskFreeLevel) let d = ai.run(arr, config[i], risk, pfTrade, riskFreeLevel,detail)
if (d !== null) if (d !== null)
cz.push(d) cz.push(d)
} }
......
...@@ -20,7 +20,9 @@ run() ...@@ -20,7 +20,9 @@ run()
async function run() async function run()
{ {
let obj={sort:'profitPerMonthDrawDown',alocatedReserve:3,alocatedReserveCompound:3,risk:1,start:2000,pfTrade:2,side:'both',riskFreeLevel:100} let obj={sort:'profitPerMonthDrawDown',alocatedReserve:3,alocatedReserveCompound:3,risk:1,start:2000,pfTrade:2,side:'both',riskFreeLevel:100,onlyShortLong:false}
let detail=['configs2.json-211021092159_O1_BNC_BTCUSD_Lp1_Y211020a - Copy_Mn.csv','configs2.json-211021092159_O1_BNC_BTCUSD_Lp1_Y211020a - Copy_Mn.csv']
obj.detail=detail
let all=[] let all=[]
for (let i=0;i<arr.length;i++) for (let i=0;i<arr.length;i++)
all.push(add(arr[i])) all.push(add(arr[i]))
......
...@@ -22,7 +22,7 @@ async function run() { ...@@ -22,7 +22,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)) arr.push(csv.parse(directory, files[i], configs.data, configs.risk, configs.pfTrade,configs.side,configs.riskFreeLevel,configs.detail,configs.onlyShortLong))
} }
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