Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
A
ai
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
ai
Commits
7cea5122
Commit
7cea5122
authored
Aug 03, 2022
by
Ahmad Nemati
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
git pull
parent
aa04dd56
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
285 additions
and
192 deletions
+285
-192
db.js
db.js
+54
-0
package.json
package.json
+2
-0
test_db.js
test_db.js
+8
-0
trade.js
trade.js
+221
-192
No files found.
db.js
0 → 100644
View file @
7cea5122
const
Sequelize
=
require
(
'
sequelize
'
);
const
sequelize
=
new
Sequelize
(
'
ai
'
,
'
root
'
,
'
mahan7797
'
,
{
define
:
{
charset
:
'
utf8
'
,
collate
:
'
utf8_general_ci
'
},
host
:
'
db.zignaly.xyz
'
,
dialect
:
'
mysql
'
,
logging
:
false
,
operatorsAliases
:
false
});
const
Account
=
sequelize
.
define
(
'
account
'
,
{
name
:
Sequelize
.
STRING
,
equity
:
{
type
:
Sequelize
.
DOUBLE
,
allowNull
:
false
,
defaultValue
:
0
},
qty
:
{
type
:
Sequelize
.
DOUBLE
,
allowNull
:
false
,
defaultValue
:
0.001
},
active
:
{
type
:
Sequelize
.
BOOLEAN
,
allowNull
:
false
,
defaultValue
:
false
},
testnet
:
{
type
:
Sequelize
.
BOOLEAN
,
allowNull
:
false
,
defaultValue
:
false
},
key
:
Sequelize
.
STRING
,
secret
:
Sequelize
.
STRING
,
});
async
function
getAllAccounts
()
{
return
await
Account
.
findAll
({
raw
:
true
})
}
sequelize
.
sync
()
module
.
exports
=
{
getAllAccounts
:
getAllAccounts
};
package.json
View file @
7cea5122
...
...
@@ -32,6 +32,8 @@
"
npm
"
:
"
^8.10.0
"
,
"
redis
"
:
"
^4.1.0
"
,
"
request
"
:
"
^2.88.2
"
,
"
sequelize
"
:
"
^6.21.3
"
,
"
mysql2
"
:
"
^1.6.1
"
,
"
shelljs
"
:
"
^0.8.4
"
,
"
stringify-object
"
:
"
^4.0.1
"
,
"
uniqid
"
:
"
^5.4.0
"
,
...
...
test_db.js
0 → 100644
View file @
7cea5122
let
db
=
require
(
'
./db
'
)
test
()
async
function
test
()
{
let
d
=
await
db
.
getAllAccounts
()
console
.
log
(
d
)
}
\ No newline at end of file
trade.js
View file @
7cea5122
let
fs
=
require
(
'
fs
'
)
var
watch
=
require
(
'
node-watch
'
);
let
ai
=
require
(
'
./ai-new
'
)
let
db
=
require
(
'
./db
'
)
let
path
=
'
YashilFinal/
'
let
longSide
=
'
LONG
'
let
shortSide
=
'
SHORT
'
...
...
@@ -17,8 +18,9 @@ let balance = 0
const
ccxt
=
require
(
'
ccxt
'
)
let
exchange
let
info
let
accs
var
cors
=
require
(
'
cors
'
)
const
_
=
require
(
'
lodash
'
)
let
express
=
require
(
'
express
'
);
...
...
@@ -63,84 +65,7 @@ app.post('/', (req, res) => {
})
async
function
analyse
(
body
)
{
let
t
=
body
.
split
(
'
,
'
)
let
obj
=
{}
if
(
typeof
t
[
0
]
===
"
undefined
"
)
return
obj
.
symbol
=
t
[
0
]
obj
.
entry
=
parseFloat
(
t
[
1
])
obj
.
exit
=
parseFloat
(
t
[
2
])
obj
.
side
=
t
[
3
]
obj
.
timeframe
=
t
[
4
]
obj
.
runUp
=
parseFloat
(
t
[
5
])
obj
.
drawDown
=
parseFloat
(
t
[
6
])
obj
.
profit
=
getPercent
(
obj
.
entry
,
obj
.
exit
)
if
(
obj
.
side
===
'
Short
'
)
obj
.
profit
=
obj
.
profit
*-
1
obj
.
runUp
=
getPercent
(
obj
.
entry
,
(
obj
.
runUp
+
obj
.
entry
))
obj
.
drawDown
=
getPercent
(
obj
.
entry
,
(
obj
.
drawDown
+
obj
.
entry
))
obj
.
closeTime
=
moment
().
utc
().
format
(
'
YYYY.MM.DD HH:mm
'
)
+
'
:00.000
'
let
indicator
=
''
for
(
let
i
=
7
;
i
<
t
.
length
;
i
++
)
{
indicator
=
indicator
+
t
[
i
]
if
(
i
!==
t
.
length
-
1
)
indicator
=
indicator
+
'
&
'
}
//Ticket,Open_Time,Type,Symbol,Open_Price,Close_Price,Close_Time,dPrfPipWrtOpPrPc,dAgeHiPrfInPrPc_RunUpPc,dAgeLoPrfInPrPc_DrawDownPc
let
final
=
'
0,00:00,
'
if
(
obj
.
side
===
'
Long
'
)
{
final
=
final
+
'
Buy
'
obj
.
side
=
'
Buy
'
}
else
{
final
=
final
+
'
Sell
'
obj
.
side
=
'
Sell
'
}
final
=
final
+
'
,BTCUSDT,
'
final
=
final
+
obj
.
entry
+
'
,
'
+
obj
.
exit
+
'
,
'
+
obj
.
closeTime
+
'
,
'
+
obj
.
profit
+
'
,
'
+
obj
.
runUp
+
'
,
'
+
obj
.
drawDown
appendCsv
(
final
,
indicator
)
indicator
=
indicator
.
replace
(
'
Kelt
'
,
'
btc4
'
).
replace
(
'
SOTT
'
,
'
btc3
'
).
replace
(
'
Pmax
'
,
'
btc2
'
).
replace
(
'
PPST
'
,
'
btc1
'
).
replace
(
'
.csv
'
,
''
)
appendCsvtoMain
(
final
,
indicator
)
// updateVars(indicator,final)
}
function
appendCsv
(
data
,
name
)
{
fs
.
appendFile
(
'
temp/
'
+
name
+
'
.csv
'
,
data
+
'
\n
'
,
function
(
err
)
{
if
(
err
)
throw
err
;
});
}
async
function
appendCsvtoMain
(
data
,
config
)
{
for
(
let
i
=
0
;
i
<
files
.
length
;
i
++
)
{
if
(
files
[
i
].
startsWith
(
config
+
'
_
'
))
{
appendtoFile
(
files
[
i
],
data
)
}
}
}
function
appendtoFile
(
name
,
data
)
{
fs
.
appendFile
(
'
YashilFinal/
'
+
name
,
data
+
'
\n
'
,
function
(
err
)
{
if
(
err
)
throw
err
;
});
}
function
getPercent
(
basePrice
,
value
)
{
return
((
value
-
basePrice
)
/
basePrice
)
*
100
}
...
...
@@ -151,6 +76,19 @@ async function init() {
client
.
on
(
'
error
'
,
(
err
)
=>
console
.
log
(
'
Redis Client Error
'
,
err
));
await
client
.
connect
();
accs
=
await
db
.
getAllAccounts
()
for
(
let
i
=
0
;
i
<
accs
.
length
;
i
++
)
{
let
exchange
=
new
ccxt
.
bybit
({
apiKey
:
accs
[
i
].
key
,
secret
:
accs
[
i
].
secret
,
enableRateLimit
:
true
,
})
if
(
accs
[
i
].
testnet
===
1
)
exchange
.
urls
[
'
api
'
]
=
exchange
.
urls
[
'
test
'
];
accs
[
i
].
exchange
=
exchange
}
// info = await fs.readFileSync('info2.json', 'utf8');
// info = JSON.parse(info)
// exchange = new ccxt.bybit({
...
...
@@ -162,26 +100,41 @@ async function init() {
// exchange.urls['api'] = exchange.urls['test'];
run
()
//
balanceUpdater()
//
run()
balanceUpdater
()
}
async
function
balanceUpdater
()
{
let
arr
=
[]
try
{
let
d
=
await
exchange
.
fetchBalance
()
if
(
d
.
info
.
result
.
USDT
.
equity
!==
balance
)
{
balance
=
d
.
info
.
result
.
USDT
.
equity
appendBalanceProfitLog
(
balance
)
}
for
(
let
i
=
0
;
i
<
accs
.
length
;
i
++
)
arr
.
push
(
balanceGetter
(
accs
[
i
]))
await
Promise
.
all
(
arr
)
}
catch
(
e
)
{
console
.
log
(
e
)
}
console
.
log
(
accs
)
await
sleep
(
60000
)
return
balanceUpdater
()
}
async
function
balanceGetter
(
acc
)
{
try
{
let
d
=
await
acc
.
exchange
.
fetchBalance
()
if
(
parseFloat
(
d
.
info
.
result
.
USDT
.
equity
)
!==
parseFloat
(
acc
.
equity
))
{
acc
.
equity
=
parseFloat
(
d
.
info
.
result
.
USDT
.
equity
)
// appendBalanceProfitLog(balance)
}
}
catch
(
e
)
{
console
.
log
(
e
)
}
}
async
function
run
()
{
...
...
@@ -232,39 +185,6 @@ async function run() {
}
function
grabData
(
data
)
{
// console.log(data)
let
arr
=
[]
for
(
let
i
=
0
;
i
<
data
.
length
;
i
++
)
{
try
{
let
d
=
data
[
i
].
split
(
'
,
'
)
let
profit
=
parseFloat
(
d
[
7
])
let
runUp
=
parseFloat
(
d
[
8
])
let
drawDown
=
parseFloat
(
d
[
9
])
let
t
=
d
[
6
]
t
=
t
.
split
(
'
:
'
)
let
closeTime
=
t
[
0
]
+
'
:
'
+
t
[
1
]
if
(
isNaN
(
profit
))
continue
arr
.
push
({
profit
,
runUp
,
drawDown
,
closeTime
})
}
catch
(
e
)
{
}
}
return
arr
}
async
function
updateVars
(
name
,
lastData
)
{
// lastData = lastFile[lastFile.length - 2]
...
...
@@ -298,82 +218,8 @@ async function updateVars(name, lastData) {
}
function
getVarFromUsage
(
vars
,
usage
)
{
if
(
usage
===
'
fft
'
)
{
return
vars
.
countDrop
}
else
if
(
usage
===
'
ddPlusRunCount
'
)
{
return
vars
.
drawDownPlusRunUpCount
}
else
if
(
usage
===
'
ProfitZeroProfit
'
)
{
return
vars
.
allLossProfit
}
else
if
(
usage
===
'
RunupDrawDownZeroRunupDrawDown
'
)
{
return
vars
.
drawDownPlusRunUpPercent
}
else
if
(
usage
===
'
ProfitZeroDrawDown
'
)
{
return
vars
.
ProfitZeroDrawDownPercent
}
else
if
(
usage
===
'
fftRunup
'
)
{
return
vars
.
countDropRunup
}
else
if
(
usage
===
'
ProfitZeroDrawDownProfit
'
)
{
return
vars
.
diffDrawdownProfitAll
}
else
if
(
usage
===
'
ProfitZeroProfitRunup
'
)
{
return
vars
.
canCreateRunupPercent
}
else
if
(
usage
===
'
ProfitZeroRunupProfit
'
)
{
return
vars
.
VarProfitZeroRunupProfit
}
else
if
(
usage
===
'
ProfitZeroRunupDrawDown
'
)
{
return
vars
.
VarProfitZeroRunupDrawDown
}
else
if
(
usage
===
'
RunUpDrawDownZeroProfit
'
)
{
return
vars
.
RunUpDrawDownAllLossProfit
}
else
if
(
usage
===
'
RunUpDrawDownZeroDrawDownProfit
'
)
{
return
vars
.
RunupDrawDownDiffDrawdownProfitAll
}
else
if
(
usage
===
'
RunUpDrawDownZeroDrawdown
'
)
{
return
vars
.
runUpDrawDownZeroDrawDownPercent
}
else
if
(
usage
===
'
RunUpDrawDownZeroRunupProfit
'
)
{
return
vars
.
VarDrawDownZeroProfit
}
else
if
(
usage
===
'
RunupZeroRunupDrawDown
'
)
{
return
vars
.
VarRunupZeroRunupDrawDown
}
else
if
(
usage
===
'
RunupZeroProfit
'
)
{
return
vars
.
VarRunupZeroProfit
}
else
if
(
usage
===
'
RunupZeroProfitDrawDown
'
)
{
return
vars
.
VarRunupZeroProfitDrawDown
}
else
if
(
usage
===
'
RunupZeroDrawDown
'
)
{
return
vars
.
VarRunupZeroDrawDown
}
else
if
(
usage
===
'
RunupZeroProfitRunup
'
)
{
return
vars
.
VarRunupZeroProfitRunup
}
else
if
(
usage
===
'
DrawDownZeroDrawDown
'
)
{
return
vars
.
VarDrawDownZeroDrawDown
}
else
if
(
usage
===
'
DrawDownnZeroProfit
'
)
{
return
vars
.
VarDrawDownnZeroProfit
}
else
if
(
usage
===
'
DrawDownZeroProfitDrawDown
'
)
{
return
vars
.
VarDrawDownZeroProfitDrawDown
}
else
if
(
usage
===
'
DrawDownZeroProfitRunup
'
)
{
return
vars
.
VarDrawDownZeroProfitRunup
}
else
if
(
usage
===
'
DrawDownZeroRunupDrawDown
'
)
{
return
vars
.
VarDrawDownZeroRunupDrawDown
}
else
if
(
usage
===
'
ProfitDrawDownZeroDrawDown
'
)
{
return
vars
.
VarProfitDrawDownZeroDrawDown
}
else
if
(
usage
===
'
ProfitDrawDownZeroProfit
'
)
{
return
vars
.
VarProfitDrawDownZeroProfit
}
else
if
(
usage
===
'
ProfitDrawDownZeroProfitDrawDown
'
)
{
return
vars
.
VarProfitDrawDownZeroProfitDrawDown
}
else
if
(
usage
===
'
ProfitDrawDownZeroProfitRunup
'
)
{
return
vars
.
VarProfitDrawDownZeroProfitRunup
}
else
if
(
usage
===
'
ProfitDrawDownZeroRunupDrawDown
'
)
{
return
vars
.
VarProfitDrawDownZeroRunupDrawDown
}
else
if
(
usage
===
'
ProfitRunupZeroDrawDown
'
)
{
return
vars
.
VarProfitRunupZeroDrawDown
}
else
if
(
usage
===
'
ProfitRunupZeroProfit
'
)
{
return
vars
.
VarProfitRunupZeroProfit
}
else
if
(
usage
===
'
ProfitRunupZeroProfitDrawDown
'
)
{
return
vars
.
VarProfitRunupZeroProfitDrawDown
}
else
if
(
usage
===
'
ProfitRunupZeroProfitRunup
'
)
{
return
vars
.
VarProfitRunupZeroProfitRunup
}
else
if
(
usage
===
'
ProfitRunupZeroRunupDrawDown
'
)
{
return
vars
.
VarProfitRunupZeroRunupDrawDown
}
}
async
function
closer
(
sig
,
date
,
bigData
,
id
,
pair
)
{
let
lastToken
=
sig
+
'
_2
'
+
date
...
...
@@ -486,6 +332,189 @@ async function adder(sig, qty, date, allData, pair) {
}
function
grabData
(
data
)
{
// console.log(data)
let
arr
=
[]
for
(
let
i
=
0
;
i
<
data
.
length
;
i
++
)
{
try
{
let
d
=
data
[
i
].
split
(
'
,
'
)
let
profit
=
parseFloat
(
d
[
7
])
let
runUp
=
parseFloat
(
d
[
8
])
let
drawDown
=
parseFloat
(
d
[
9
])
let
t
=
d
[
6
]
t
=
t
.
split
(
'
:
'
)
let
closeTime
=
t
[
0
]
+
'
:
'
+
t
[
1
]
if
(
isNaN
(
profit
))
continue
arr
.
push
({
profit
,
runUp
,
drawDown
,
closeTime
})
}
catch
(
e
)
{
}
}
return
arr
}
function
getVarFromUsage
(
vars
,
usage
)
{
if
(
usage
===
'
fft
'
)
{
return
vars
.
countDrop
}
else
if
(
usage
===
'
ddPlusRunCount
'
)
{
return
vars
.
drawDownPlusRunUpCount
}
else
if
(
usage
===
'
ProfitZeroProfit
'
)
{
return
vars
.
allLossProfit
}
else
if
(
usage
===
'
RunupDrawDownZeroRunupDrawDown
'
)
{
return
vars
.
drawDownPlusRunUpPercent
}
else
if
(
usage
===
'
ProfitZeroDrawDown
'
)
{
return
vars
.
ProfitZeroDrawDownPercent
}
else
if
(
usage
===
'
fftRunup
'
)
{
return
vars
.
countDropRunup
}
else
if
(
usage
===
'
ProfitZeroDrawDownProfit
'
)
{
return
vars
.
diffDrawdownProfitAll
}
else
if
(
usage
===
'
ProfitZeroProfitRunup
'
)
{
return
vars
.
canCreateRunupPercent
}
else
if
(
usage
===
'
ProfitZeroRunupProfit
'
)
{
return
vars
.
VarProfitZeroRunupProfit
}
else
if
(
usage
===
'
ProfitZeroRunupDrawDown
'
)
{
return
vars
.
VarProfitZeroRunupDrawDown
}
else
if
(
usage
===
'
RunUpDrawDownZeroProfit
'
)
{
return
vars
.
RunUpDrawDownAllLossProfit
}
else
if
(
usage
===
'
RunUpDrawDownZeroDrawDownProfit
'
)
{
return
vars
.
RunupDrawDownDiffDrawdownProfitAll
}
else
if
(
usage
===
'
RunUpDrawDownZeroDrawdown
'
)
{
return
vars
.
runUpDrawDownZeroDrawDownPercent
}
else
if
(
usage
===
'
RunUpDrawDownZeroRunupProfit
'
)
{
return
vars
.
VarDrawDownZeroProfit
}
else
if
(
usage
===
'
RunupZeroRunupDrawDown
'
)
{
return
vars
.
VarRunupZeroRunupDrawDown
}
else
if
(
usage
===
'
RunupZeroProfit
'
)
{
return
vars
.
VarRunupZeroProfit
}
else
if
(
usage
===
'
RunupZeroProfitDrawDown
'
)
{
return
vars
.
VarRunupZeroProfitDrawDown
}
else
if
(
usage
===
'
RunupZeroDrawDown
'
)
{
return
vars
.
VarRunupZeroDrawDown
}
else
if
(
usage
===
'
RunupZeroProfitRunup
'
)
{
return
vars
.
VarRunupZeroProfitRunup
}
else
if
(
usage
===
'
DrawDownZeroDrawDown
'
)
{
return
vars
.
VarDrawDownZeroDrawDown
}
else
if
(
usage
===
'
DrawDownnZeroProfit
'
)
{
return
vars
.
VarDrawDownnZeroProfit
}
else
if
(
usage
===
'
DrawDownZeroProfitDrawDown
'
)
{
return
vars
.
VarDrawDownZeroProfitDrawDown
}
else
if
(
usage
===
'
DrawDownZeroProfitRunup
'
)
{
return
vars
.
VarDrawDownZeroProfitRunup
}
else
if
(
usage
===
'
DrawDownZeroRunupDrawDown
'
)
{
return
vars
.
VarDrawDownZeroRunupDrawDown
}
else
if
(
usage
===
'
ProfitDrawDownZeroDrawDown
'
)
{
return
vars
.
VarProfitDrawDownZeroDrawDown
}
else
if
(
usage
===
'
ProfitDrawDownZeroProfit
'
)
{
return
vars
.
VarProfitDrawDownZeroProfit
}
else
if
(
usage
===
'
ProfitDrawDownZeroProfitDrawDown
'
)
{
return
vars
.
VarProfitDrawDownZeroProfitDrawDown
}
else
if
(
usage
===
'
ProfitDrawDownZeroProfitRunup
'
)
{
return
vars
.
VarProfitDrawDownZeroProfitRunup
}
else
if
(
usage
===
'
ProfitDrawDownZeroRunupDrawDown
'
)
{
return
vars
.
VarProfitDrawDownZeroRunupDrawDown
}
else
if
(
usage
===
'
ProfitRunupZeroDrawDown
'
)
{
return
vars
.
VarProfitRunupZeroDrawDown
}
else
if
(
usage
===
'
ProfitRunupZeroProfit
'
)
{
return
vars
.
VarProfitRunupZeroProfit
}
else
if
(
usage
===
'
ProfitRunupZeroProfitDrawDown
'
)
{
return
vars
.
VarProfitRunupZeroProfitDrawDown
}
else
if
(
usage
===
'
ProfitRunupZeroProfitRunup
'
)
{
return
vars
.
VarProfitRunupZeroProfitRunup
}
else
if
(
usage
===
'
ProfitRunupZeroRunupDrawDown
'
)
{
return
vars
.
VarProfitRunupZeroRunupDrawDown
}
}
async
function
analyse
(
body
)
{
let
t
=
body
.
split
(
'
,
'
)
let
obj
=
{}
if
(
typeof
t
[
0
]
===
"
undefined
"
)
return
obj
.
symbol
=
t
[
0
]
obj
.
entry
=
parseFloat
(
t
[
1
])
obj
.
exit
=
parseFloat
(
t
[
2
])
obj
.
side
=
t
[
3
]
obj
.
timeframe
=
t
[
4
]
obj
.
runUp
=
parseFloat
(
t
[
5
])
obj
.
drawDown
=
parseFloat
(
t
[
6
])
obj
.
profit
=
getPercent
(
obj
.
entry
,
obj
.
exit
)
if
(
obj
.
side
===
'
Short
'
)
obj
.
profit
=
obj
.
profit
*-
1
obj
.
runUp
=
getPercent
(
obj
.
entry
,
(
obj
.
runUp
+
obj
.
entry
))
obj
.
drawDown
=
getPercent
(
obj
.
entry
,
(
obj
.
drawDown
+
obj
.
entry
))
obj
.
closeTime
=
moment
().
utc
().
format
(
'
YYYY.MM.DD HH:mm
'
)
+
'
:00.000
'
let
indicator
=
''
for
(
let
i
=
7
;
i
<
t
.
length
;
i
++
)
{
indicator
=
indicator
+
t
[
i
]
if
(
i
!==
t
.
length
-
1
)
indicator
=
indicator
+
'
&
'
}
//Ticket,Open_Time,Type,Symbol,Open_Price,Close_Price,Close_Time,dPrfPipWrtOpPrPc,dAgeHiPrfInPrPc_RunUpPc,dAgeLoPrfInPrPc_DrawDownPc
let
final
=
'
0,00:00,
'
if
(
obj
.
side
===
'
Long
'
)
{
final
=
final
+
'
Buy
'
obj
.
side
=
'
Buy
'
}
else
{
final
=
final
+
'
Sell
'
obj
.
side
=
'
Sell
'
}
final
=
final
+
'
,BTCUSDT,
'
final
=
final
+
obj
.
entry
+
'
,
'
+
obj
.
exit
+
'
,
'
+
obj
.
closeTime
+
'
,
'
+
obj
.
profit
+
'
,
'
+
obj
.
runUp
+
'
,
'
+
obj
.
drawDown
appendCsv
(
final
,
indicator
)
indicator
=
indicator
.
replace
(
'
Kelt
'
,
'
btc4
'
).
replace
(
'
SOTT
'
,
'
btc3
'
).
replace
(
'
Pmax
'
,
'
btc2
'
).
replace
(
'
PPST
'
,
'
btc1
'
).
replace
(
'
.csv
'
,
''
)
appendCsvtoMain
(
final
,
indicator
)
// updateVars(indicator,final)
}
function
appendCsv
(
data
,
name
)
{
fs
.
appendFile
(
'
temp/
'
+
name
+
'
.csv
'
,
data
+
'
\n
'
,
function
(
err
)
{
if
(
err
)
throw
err
;
});
}
async
function
appendCsvtoMain
(
data
,
config
)
{
for
(
let
i
=
0
;
i
<
files
.
length
;
i
++
)
{
if
(
files
[
i
].
startsWith
(
config
+
'
_
'
))
{
appendtoFile
(
files
[
i
],
data
)
}
}
}
function
appendtoFile
(
name
,
data
)
{
fs
.
appendFile
(
'
YashilFinal/
'
+
name
,
data
+
'
\n
'
,
function
(
err
)
{
if
(
err
)
throw
err
;
});
}
function
getPercent
(
basePrice
,
value
)
{
return
((
value
-
basePrice
)
/
basePrice
)
*
100
}
function
removeDot
(
text
)
{
let
token
=
''
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment