Commit 34cf61c0 authored by Ahmad Nemati's avatar Ahmad Nemati

init

parent a35e3027
...@@ -4,19 +4,19 @@ let _ = require('lodash') ...@@ -4,19 +4,19 @@ let _ = require('lodash')
let directory let directory
let configFileName let configFileName
let csvFile let csvFile
let checks=[] let checks = []
let drawDown=[30,40,50] let drawDown = [30, 40, 50]
//const perf = require('execution-time')(); //const perf = require('execution-time')();
run() run()
async function run() { async function run() {
var args = process.argv.slice(2); var args = process.argv.slice(2);
directory = args[0] directory = args[0]
configFileName=args[1] configFileName = args[1]
checks=args[2] checks = args[2]
await makeStatus(directory, '1') await makeStatus(directory, '1')
// perf.start() // perf.start()
let configs = await fs.readFileSync('./configs/'+configFileName, 'utf8') let configs = await fs.readFileSync('./configs/' + configFileName, 'utf8')
checks = await fs.readFileSync('./detail.json', 'utf8') checks = await fs.readFileSync('./detail.json', 'utf8')
configs = JSON.parse(configs) configs = JSON.parse(configs)
let arr = [] let arr = []
...@@ -25,7 +25,7 @@ async function run() { ...@@ -25,7 +25,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)) arr.push(csv.parse(directory, files[i], configs.data, configs.risk, configs.pfTrade, configs.side, configs.riskFreeLevel, JSON.parse(checks), configs.onlyShortLong, configs.loss))
} }
arr = await Promise.all(arr) arr = await Promise.all(arr)
...@@ -35,6 +35,7 @@ async function run() { ...@@ -35,6 +35,7 @@ async function run() {
for (let i = 0; i < arr.length; i++) { for (let i = 0; i < arr.length; i++) {
let inline = arr[i] let inline = arr[i]
for (let j = 0; j < inline.length; j++) { for (let j = 0; j < inline.length; j++) {
if (inline[j].maxLevel < configs.level)
arr2.push(inline[j]) arr2.push(inline[j])
...@@ -61,7 +62,6 @@ async function run() { ...@@ -61,7 +62,6 @@ async function run() {
} }
let arr20MaxNew = [] let arr20MaxNew = []
let arrReservCompoundNew = [] let arrReservCompoundNew = []
for (let i = 0; i < 1000; i++) { for (let i = 0; i < 1000; i++) {
...@@ -78,8 +78,8 @@ async function run() { ...@@ -78,8 +78,8 @@ async function run() {
let timestamp = Date.now() let timestamp = Date.now()
try { try {
await fs.mkdirSync('result/'+configFileName+'/' + csvFile) await fs.mkdirSync('result/' + configFileName + '/' + csvFile)
await fs.mkdirSync('result/'+configFileName+'/' + csvFile+'/default') await fs.mkdirSync('result/' + configFileName + '/' + csvFile + '/default')
// await fs.mkdirSync('result/' + csvFile+'/drawDown30') // await fs.mkdirSync('result/' + csvFile+'/drawDown30')
// await fs.mkdirSync('result/' + csvFile+'/drawdown40') // await fs.mkdirSync('result/' + csvFile+'/drawdown40')
// await fs.mkdirSync('result/' + csvFile+'/drawdown50') // await fs.mkdirSync('result/' + csvFile+'/drawdown50')
...@@ -89,9 +89,9 @@ async function run() { ...@@ -89,9 +89,9 @@ async function run() {
await fs.unlinkSync(directory + '/' + csvFile) await fs.unlinkSync(directory + '/' + csvFile)
// createfileADV('allDataSortedByProfit', JSON.stringify(arr2, null, 2)) // createfileADV('allDataSortedByProfit', JSON.stringify(arr2, null, 2))
createfileADV('default','profitPerMonth1000', JSON.stringify(arr3, null, 2)) createfileADV('default', 'profitPerMonth1000', JSON.stringify(arr3, null, 2))
// createfileADV('percentage1000', JSON.stringify(arrResrv200, null, 2)) // createfileADV('percentage1000', JSON.stringify(arrResrv200, null, 2))
createfileADV('default','compound1000', JSON.stringify(arr1000Compound, null, 2)) createfileADV('default', 'compound1000', JSON.stringify(arr1000Compound, null, 2))
// createfileADV('allocatedReservePerMonthUnder3', JSON.stringify(arr20MaxNew, null, 2)) // createfileADV('allocatedReservePerMonthUnder3', JSON.stringify(arr20MaxNew, null, 2))
// createfileADV('allocatedReserveCompoundUnder3' , JSON.stringify(arrReservCompoundNew, null, 2)) // createfileADV('allocatedReserveCompoundUnder3' , JSON.stringify(arrReservCompoundNew, null, 2))
...@@ -120,7 +120,7 @@ async function run() { ...@@ -120,7 +120,7 @@ async function run() {
// createfileADV('allocatedReservePerMonthUnder2', JSON.stringify(arr20MaxNew, null, 2)) // createfileADV('allocatedReservePerMonthUnder2', JSON.stringify(arr20MaxNew, null, 2))
// createfileADV('allocatedReserveCompoundUnder2' , JSON.stringify(arrReservCompoundNew, null, 2)) // createfileADV('allocatedReserveCompoundUnder2' , JSON.stringify(arrReservCompoundNew, null, 2))
startAgain(arr, configs.start,configs.level) startAgain(arr, configs.start, configs.level)
// generateBaseDrawDown(arr2) // generateBaseDrawDown(arr2)
// generateDrawDownBaseStart(arr2,configs.start) // generateDrawDownBaseStart(arr2,configs.start)
console.log('Done') console.log('Done')
...@@ -129,26 +129,24 @@ async function run() { ...@@ -129,26 +129,24 @@ async function run() {
// console.log(d) // console.log(d)
} }
async function generateBaseDrawDown(arrLast) async function generateBaseDrawDown(arrLast) {
{
for (let z=0;z<drawDown.length;z++) for (let z = 0; z < drawDown.length; z++) {
{ let arr2 = arrLast
let arr2=arrLast let newArr = []
let newArr=[]
for (let i=0;i<arr2.length;i++) { for (let i = 0; i < arr2.length; i++) {
// console.log(arr2[i].drawDown) // console.log(arr2[i].drawDown)
if (arr2[i].drawDown >= drawDown[z]) if (arr2[i].drawDown >= drawDown[z])
newArr.push(arr2[i]) newArr.push(arr2[i])
} }
arr2=newArr arr2 = newArr
arr2 = _.orderBy(arr2, ['profitPerMonthDrawDown'], ['desc']); arr2 = _.orderBy(arr2, ['profitPerMonthDrawDown'], ['desc']);
let arr20Max = [] let arr20Max = []
let arr1000Compound = [] let arr1000Compound = []
let arr3=[] let arr3 = []
let arrReserv = _.orderBy(arr2, ['percentage'], ['asc']); let arrReserv = _.orderBy(arr2, ['percentage'], ['asc']);
let arrCompound = _.orderBy(arr2, ['CompoundPerMonthDrawDown'], ['desc']); let arrCompound = _.orderBy(arr2, ['CompoundPerMonthDrawDown'], ['desc']);
...@@ -164,7 +162,6 @@ async function generateBaseDrawDown(arrLast) ...@@ -164,7 +162,6 @@ async function generateBaseDrawDown(arrLast)
} }
let arr20MaxNew = [] let arr20MaxNew = []
let arrReservCompoundNew = [] let arrReservCompoundNew = []
for (let i = 0; i < 1000; i++) { for (let i = 0; i < 1000; i++) {
...@@ -178,29 +175,26 @@ async function generateBaseDrawDown(arrLast) ...@@ -178,29 +175,26 @@ async function generateBaseDrawDown(arrLast)
} }
createfileADV('drawDown' + drawDown[z], 'profitPerMonth1000DrawDown' + drawDown[z], JSON.stringify(arr3, null, 2))
createfileADV('drawDown'+drawDown[z],'profitPerMonth1000DrawDown'+drawDown[z], JSON.stringify(arr3, null, 2)) createfileADV('drawDown' + drawDown[z], 'compound1000DrawDown' + drawDown[z], JSON.stringify(arr1000Compound, null, 2))
createfileADV('drawDown'+drawDown[z],'compound1000DrawDown'+drawDown[z], JSON.stringify(arr1000Compound, null, 2))
} }
} }
async function generateDrawDownBaseStart(arrLast,start) async function generateDrawDownBaseStart(arrLast, start) {
{ for (let z = 0; z < drawDown.length; z++) {
for (let z=0;z<drawDown.length;z++)
{
let arr2 = arrLast let arr2 = arrLast
let newArr=[] let newArr = []
let arr3 = [] let arr3 = []
for (let i=0;i<arr2.length;i++) { for (let i = 0; i < arr2.length; i++) {
// console.log(arr2[i].drawDown) // console.log(arr2[i].drawDown)
if (arr2[i].drawDown >= drawDown[z] && arr2[i].maxAllocatedMoney < start) if (arr2[i].drawDown >= drawDown[z] && arr2[i].maxAllocatedMoney < start)
newArr.push(arr2[i]) newArr.push(arr2[i])
} }
// console.log(arr2) // console.log(arr2)
arr2=newArr arr2 = newArr
arr2 = _.without(arr2, undefined, null); arr2 = _.without(arr2, undefined, null);
arr2 = _.orderBy(arr2, ['profitPerMonthDrawDown'], ['desc']); arr2 = _.orderBy(arr2, ['profitPerMonthDrawDown'], ['desc']);
let arr20Max = [] let arr20Max = []
...@@ -220,7 +214,6 @@ async function generateDrawDownBaseStart(arrLast,start) ...@@ -220,7 +214,6 @@ async function generateDrawDownBaseStart(arrLast,start)
} }
let arr20MaxNew = [] let arr20MaxNew = []
let arrReservCompoundNew = [] let arrReservCompoundNew = []
for (let i = 0; i < 1000; i++) { for (let i = 0; i < 1000; i++) {
...@@ -237,9 +230,9 @@ async function generateDrawDownBaseStart(arrLast,start) ...@@ -237,9 +230,9 @@ async function generateDrawDownBaseStart(arrLast,start)
// await fs.unlinkSync(directory + '/' + csvFile) // await fs.unlinkSync(directory + '/' + csvFile)
// createfileADV('allDataSortedByProfit', JSON.stringify(arr2, null, 2)) // createfileADV('allDataSortedByProfit', JSON.stringify(arr2, null, 2))
createfileADV('drawDown'+drawDown[z],'profitPerMonth1000StartDrawDown'+drawDown[z], JSON.stringify(arr3, null, 2)) createfileADV('drawDown' + drawDown[z], 'profitPerMonth1000StartDrawDown' + drawDown[z], JSON.stringify(arr3, null, 2))
// createfileADV('percentage1000', JSON.stringify(arrResrv200, null, 2)) // createfileADV('percentage1000', JSON.stringify(arrResrv200, null, 2))
createfileADV('drawDown'+drawDown[z],'compound1000StartDrawDown'+drawDown[z], JSON.stringify(arr1000Compound, null, 2)) createfileADV('drawDown' + drawDown[z], 'compound1000StartDrawDown' + drawDown[z], JSON.stringify(arr1000Compound, null, 2))
// createfileADV('allocatedReservePerMonthUnder3', JSON.stringify(arr20MaxNew, null, 2)) // createfileADV('allocatedReservePerMonthUnder3', JSON.stringify(arr20MaxNew, null, 2))
// createfileADV('allocatedReserveCompoundUnder3' , JSON.stringify(arrReservCompoundNew, null, 2)) // createfileADV('allocatedReserveCompoundUnder3' , JSON.stringify(arrReservCompoundNew, null, 2))
...@@ -247,7 +240,7 @@ async function generateDrawDownBaseStart(arrLast,start) ...@@ -247,7 +240,7 @@ async function generateDrawDownBaseStart(arrLast,start)
} }
async function startAgain(arr, start,level) { async function startAgain(arr, start, level) {
let count = 0 let count = 0
let arr2 = [] let arr2 = []
let arr3 = [] let arr3 = []
...@@ -255,11 +248,10 @@ async function startAgain(arr, start,level) { ...@@ -255,11 +248,10 @@ async function startAgain(arr, start,level) {
let inline = arr[i] let inline = arr[i]
inline = _.without(inline, undefined, null); inline = _.without(inline, undefined, null);
for (let j = 0; j < inline.length; j++) { for (let j = 0; j < inline.length; j++) {
if (inline[j].maxAllocatedMoney < start && inline[j].maxLevel < level) if (inline[j].maxAllocatedMoney < start)
arr2.push(inline[j]) arr2.push(inline[j])
} }
} }
// console.log(arr2) // console.log(arr2)
...@@ -310,9 +302,9 @@ async function startAgain(arr, start,level) { ...@@ -310,9 +302,9 @@ async function startAgain(arr, start,level) {
// await fs.unlinkSync(directory + '/' + csvFile) // await fs.unlinkSync(directory + '/' + csvFile)
// createfileADV('allDataSortedByProfit', JSON.stringify(arr2, null, 2)) // createfileADV('allDataSortedByProfit', JSON.stringify(arr2, null, 2))
createfileADV('default','profitPerMonth1000Start', JSON.stringify(arr3, null, 2)) createfileADV('default', 'profitPerMonth1000Start', JSON.stringify(arr3, null, 2))
// createfileADV('percentage1000', JSON.stringify(arrResrv200, null, 2)) // createfileADV('percentage1000', JSON.stringify(arrResrv200, null, 2))
createfileADV('default','compound1000Start', JSON.stringify(arr1000Compound, null, 2)) createfileADV('default', 'compound1000Start', JSON.stringify(arr1000Compound, null, 2))
// createfileADV('allocatedReservePerMonthUnder3', JSON.stringify(arr20MaxNew, null, 2)) // createfileADV('allocatedReservePerMonthUnder3', JSON.stringify(arr20MaxNew, null, 2))
// createfileADV('allocatedReserveCompoundUnder3' , JSON.stringify(arrReservCompoundNew, null, 2)) // createfileADV('allocatedReserveCompoundUnder3' , JSON.stringify(arrReservCompoundNew, null, 2))
...@@ -328,9 +320,9 @@ function createfile(data) { ...@@ -328,9 +320,9 @@ function createfile(data) {
}); });
} }
function createfileADV(type,filename, data) { function createfileADV(type, filename, data) {
return new Promise(function (resolve, reject) { return new Promise(function (resolve, reject) {
fs.writeFile('result/'+configFileName+'/' + csvFile + '/'+type+ '/' + filename + '.json', data, 'utf8', function (err) { fs.writeFile('result/' + configFileName + '/' + csvFile + '/' + type + '/' + filename + '.json', data, 'utf8', function (err) {
if (err) reject(err); if (err) reject(err);
else resolve(data); else resolve(data);
}); });
......
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