Commit 0a18f499 authored by Ahmad Nemati's avatar Ahmad Nemati

init

parent ec35fdd4
......@@ -11,7 +11,7 @@ let candles = []
let timeFrame = 0
function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, maxTradeDays, targetPercentage, candlesData,fft,fftPercent,fftRunup,fftPercentRunup,fftDiffDrawDownProfit) {
function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, maxTradeDays, targetPercentage, candlesData, fft, fftPercent, fftRunup, fftPercentRunup, fftDiffDrawDownProfit, usage) {
let type = config.type + ' param:' + config.param + ' base:' + config.base + ' target:' + config.target + ' targetPercentage:' + targetPercentage.enable + ' fft:' + fft + ' fftPercent:' + fftPercent
let saveData = []
candles = candlesData
......@@ -50,15 +50,15 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
let targets = []
let detailLevel = []
let durDetail = []
let runBefore=false
let countDrop=0
let allLossProfit=0
let runBefore = false
let countDrop = 0
let allLossProfit = 0
let countDropRunup=0
let allLossProfitRunup=0
let countDropRunup = 0
let allLossProfitRunup = 0
let diffDrawdownProfitAll=0
let diffDrawdownProfitAll = 0
let dur
try {
......@@ -84,46 +84,44 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
return null
if (data[i].profit <0) {
allLossProfit=allLossProfit+data[i].profit
diffDrawdownProfitAll=diffDrawdownProfitAll+(data[i].drawDown-data[i].profit)
if (data[i].profit < 0) {
allLossProfit = allLossProfit + data[i].profit
diffDrawdownProfitAll = diffDrawdownProfitAll + (data[i].drawDown - data[i].profit)
countDrop++
}
else {
allLossProfit=0
diffDrawdownProfitAll=0
} else {
allLossProfit = 0
diffDrawdownProfitAll = 0
countDrop = 0
}
if (data[i].runUp <config.target) {
allLossProfitRunup=allLossProfitRunup+data[i].runUp
if (data[i].runUp < config.target) {
allLossProfitRunup = allLossProfitRunup + data[i].runUp
countDropRunup++
}
else {
allLossProfitRunup=0
} else {
allLossProfitRunup = 0
countDropRunup = 0
}
if (runBefore ===false)
{
// if (countDrop <fft)
// continue
// if (allLossProfit> fftPercent)
// continue
// if (countDropRunup < fftRunup)
// continue
if (diffDrawdownProfitAll> fftDiffDrawDownProfit)
continue
if (runBefore === false) {
if (usage === 'fft') {
if (countDrop < fft)
continue
} else if (usage === 'fftPercent') {
if (allLossProfit > fftPercent)
continue
} else if (usage === 'fftRunup') {
if (countDropRunup < fftRunup)
continue
} else if (usage ==='fftDiffDrawDownProfit') {
if (diffDrawdownProfitAll > fftDiffDrawDownProfit)
continue
}
}
runBefore=true
runBefore = true
let obj
if (step === 0) {
unixStart = data[i].unixOpen
......@@ -225,7 +223,7 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
}
if (d.done === true) {
runBefore=false
runBefore = false
let endDays = getNewMinDiff(startDays, data[i].closeDate)
detailLevel.push({step: step, dur: endDays})
durDetail.push({
......@@ -649,7 +647,7 @@ function getTargetPrice(money, targetMoney, basePrice, side) {
function calculateRunnigTime(side, startTime, endTime, targetPrice) {
let arr = grabData(startTime, endTime)
if (arr ===[])
if (arr === [])
return 0
for (let i = 0; i < arr.length; i++) {
......@@ -666,11 +664,11 @@ function calculateRunnigTime(side, startTime, endTime, targetPrice) {
}
}
let arr2=[]
if (side ==='LONG')
let arr2 = []
if (side === 'LONG')
arr2 = _.orderBy(arr, ['h'], ['desc']);
else
arr2= _.orderBy(arr,['l'])
arr2 = _.orderBy(arr, ['l'])
for (let i = 0; i < arr.length; i++) {
if (arr[i].h === 0)
......@@ -688,8 +686,6 @@ let arr2=[]
}
}
function grabData(start, end) {
......@@ -698,7 +694,7 @@ function grabData(start, end) {
let startIndex = (start - candles[0].t) / timeFrame
let endIndex = (end - candles[0].t) / timeFrame
// console.log(start ,end,candles[0].t,timeFrame,startIndex,endIndex)
// console.log(start ,end,candles[0].t,timeFrame,startIndex,endIndex)
// console.log(startIndex)
// console.log('line:'+endIndex +' with end'+end)
......@@ -712,14 +708,11 @@ function grabData(start, end) {
arr.push(candles[i])
}
}
}
catch (e)
{
} catch (e) {
return []
}
return arr
}
......
const fs = require('fs')
let moment = require('moment-timezone')
const _=require('lodash')
const _ = require('lodash')
init()
......@@ -27,67 +27,56 @@ async function init() {
async function format(name) {
let res = await fs.readFileSync('./analyse/' + name, 'utf8');
res = res.split('\n')
res = res.match(/.+/g)
// console.log(res.length)
let list = []
let pluser = 0
let allProfit = 0
let con = 0
let newCon = 0
let newCounter = 0
let diffCount = 0
for (let i = 1; i < (res.length - 1); i++) {
let d = res[i].split(',')
try {
let profit = parseFloat(d[8])
con++
allProfit=allProfit+profit
if (profit>=3.4065813474551385)
newCon++
let list=[]
let pluser=0
let allProfit=0
let con=0
for (let i = 1; i <(res.length-1); i ++) {
let d=res[i].split(',')
try {
let profit=parseFloat(d[7])
if (profit<0)
{
allProfit=allProfit+profit
pluser++
con++
}
else
{
if (pluser !==0)
list.push(pluser)
pluser=0
if (profit <= 3.4065813474551385) {
diffCount++
} else {
if (diffCount >= 38)
newCounter++
diffCount = 0
}
}
catch (e)
{
} 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('Count Profit<0:'+con , 'Sum profit<0:'+allProfit,'Avg Profit:'+(allProfit/con))
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')
allProfit=allProfit+(con*0.1)
let avg = (allProfit / con)
avg = avg + 0.1
let newTemp = newCon / con
console.log(newCounter)
// console.log('total '+con +' avg runup:'+(allProfit/con))
}
......
......@@ -6,7 +6,7 @@ let moment = require('moment-timezone')
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) {
async function parse(directory, name, configs, risk, pfTrade, side, riskFreeLevel,detail,onlyShortLong,loss,dur,maxTradeDays,targetPercentage,candles,fft,fftPercent,fftRunup,fftPercentRunup,fftDiffDrawDownProfit,usage) {
return new Promise(function (resolve, reject) {
let arr = []
......@@ -15,12 +15,12 @@ async function parse(directory, name, configs, risk, pfTrade, side, riskFreeLeve
.pipe(csv.parse({headers: true}))
.on('error', error => reject(error))
.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)));
.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)));
});
}
function initData(data, config, name, risk, pfTrade, side, riskFreeLevel,detail,onlyShortLong,loss,dur,maxTradeDays,targetPercentage,candles,fft,fftPercent,fftRunup,fftPercentRunup,fftDiffDrawDownProfit) {
function initData(data, config, name, risk, pfTrade, side, riskFreeLevel,detail,onlyShortLong,loss,dur,maxTradeDays,targetPercentage,candles,fft,fftPercent,fftRunup,fftPercentRunup,fftDiffDrawDownProfit,usage) {
data = JSON.stringify(data)
......@@ -140,7 +140,7 @@ function initData(data, config, name, risk, pfTrade, side, riskFreeLevel,detail,
let cz = []
for (let i = 0; i < config.length; i++) {
let d = ai.run(arr, config[i], risk, pfTrade, riskFreeLevel,detail,loss,dur,maxTradeDays,targetPercentage,candles,fft,fftPercent,fftRunup,fftPercentRunup,fftDiffDrawDownProfit)
let d = ai.run(arr, config[i], risk, pfTrade, riskFreeLevel,detail,loss,dur,maxTradeDays,targetPercentage,candles,fft,fftPercent,fftRunup,fftPercentRunup,fftDiffDrawDownProfit,usage)
if (d !== null)
cz.push(d)
}
......
......@@ -20,7 +20,7 @@ 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:2,fftDiffDrawDownProfit:-0.5}
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:2,fftDiffDrawDownProfit:-0.5,usage:'fft'}
let detail=['configs2.json-211021092159_O1_BNC_BTCUSD_Lp1_Y211020a - Copy_Mn.csv&zarib param:1.1 base:200 target:1']
obj.detail=detail
let all=[]
......
......@@ -44,7 +44,7 @@ async function run() {
for (let i = 0; i < files.length; i++)
if (files[i].includes('.csv')) {
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))
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 = 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