Commit 313f2be1 authored by Ahmad Nemati's avatar Ahmad Nemati

init

parent 8c7d64d7
...@@ -11,7 +11,7 @@ let candles = [] ...@@ -11,7 +11,7 @@ let candles = []
let timeFrame = 0 let timeFrame = 0
function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, maxTradeDays, targetPercentage, candlesData) { function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, maxTradeDays, targetPercentage, candlesData,fft) {
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
let saveData = [] let saveData = []
candles = candlesData candles = candlesData
...@@ -50,6 +50,8 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max ...@@ -50,6 +50,8 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
let targets = [] let targets = []
let detailLevel = [] let detailLevel = []
let durDetail = [] let durDetail = []
let runBefore=false
let countDrop=0
let dur let dur
try { try {
...@@ -71,6 +73,19 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max ...@@ -71,6 +73,19 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
if (maxDays > maxTradeDays) if (maxDays > maxTradeDays)
return null return null
if (data[i].profit <0)
countDrop++
else
countDrop=0
if (runBefore ===false)
{
if (countDrop <fft)
continue
}
runBefore=true
let obj let obj
if (step === 0) { if (step === 0) {
unixStart = data[i].unixOpen unixStart = data[i].unixOpen
...@@ -172,6 +187,7 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max ...@@ -172,6 +187,7 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
} }
if (d.done === true) { if (d.done === true) {
runBefore=false
let endDays = getNewMinDiff(startDays, data[i].closeDate) let endDays = getNewMinDiff(startDays, data[i].closeDate)
detailLevel.push({step: step, dur: endDays}) detailLevel.push({step: step, dur: endDays})
durDetail.push({ durDetail.push({
......
node analyse.js
\ No newline at end of file
const fs = require('fs')
let moment = require('moment-timezone')
const _=require('lodash')
init()
async function init() {
try {
await fs.mkdirSync('analyse')
} catch (e) {
}
let files = await fs.readdirSync('analyse')
let prom = []
for (let i = 0; i < files.length; i++) {
if (files[i].includes('.csv')) {
prom.push(format(files[i]))
}
}
await Promise.all(prom)
}
async function format(name) {
let res = await fs.readFileSync('./analyse/' + name, 'utf8');
res = res.split('\n')
let list=[]
let pluser=0
for (let i = 1; i <(res.length-1); i ++) {
let d=res[i].split(',')
try {
let profit=parseFloat(d[7])
if (profit<0)
{
pluser++
}
else
{
if (pluser !==0)
list.push(pluser)
pluser=0
}
}
catch (e)
{
}
}
let arr2=_.uniq(list)
arr2=_.orderBy(arr2)
let arr=[]
for (let i=0;i<arr2.length;i++)
{
let counter=0
for (let j=0;j<list.length;j++)
if (list[j] ===arr2[i])
counter++
arr.push({number:arr2[i],count:counter})
}
console.log(arr)
// arr= await Promise.all(arr)
// //console.log(arr)
// let t = header + '\n'
// for (let i = 0; i < arr.length; i++) {
// t = t + arr[i]
// if (i <arr.length-1)
// t=t+'\n'
// }
//
// await createFile(name, t)
// console.log('done')
}
function createFile(name, body) {
return new Promise(function (resolve, reject) {
fs.writeFile('analyse/' + name, body, 'utf8', function (err) {
if (err) reject(err);
else resolve(true);
});
});
}
\ No newline at end of file
...@@ -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) { async function parse(directory, name, configs, risk, pfTrade, side, riskFreeLevel,detail,onlyShortLong,loss,dur,maxTradeDays,targetPercentage,candles,fft) {
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))); .on('end', rowCount => resolve(initData(arr, configs, name, risk, pfTrade, side, riskFreeLevel,detail,onlyShortLong,loss,dur,maxTradeDays,targetPercentage,candles,fft)));
}); });
} }
function initData(data, config, name, risk, pfTrade, side, riskFreeLevel,detail,onlyShortLong,loss,dur,maxTradeDays,targetPercentage,candles) { function initData(data, config, name, risk, pfTrade, side, riskFreeLevel,detail,onlyShortLong,loss,dur,maxTradeDays,targetPercentage,candles,fft) {
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], risk, pfTrade, riskFreeLevel,detail,loss,dur,maxTradeDays,targetPercentage,candles) let d = ai.run(arr, config[i], risk, pfTrade, riskFreeLevel,detail,loss,dur,maxTradeDays,targetPercentage,candles,fft)
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}} 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}
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=[]
......
...@@ -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)) 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))
} }
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