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
7baf508c
Commit
7baf508c
authored
Aug 03, 2022
by
Ahmad Nemati
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
git pull
parent
e5d15cf2
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
91 additions
and
105 deletions
+91
-105
trade.js
trade.js
+91
-105
No files found.
trade.js
View file @
7baf508c
let
fs
=
require
(
'
fs
'
)
var
watch
=
require
(
'
node-watch
'
);
let
ai
=
require
(
'
./ai-new
'
)
let
db
=
require
(
'
./db
'
)
let
db
=
require
(
'
./db
'
)
let
path
=
'
YashilFinal/
'
let
longSide
=
'
LONG
'
let
shortSide
=
'
SHORT
'
...
...
@@ -18,7 +18,6 @@ let balance = 0
const
ccxt
=
require
(
'
ccxt
'
)
let
info
let
accs
var
cors
=
require
(
'
cors
'
)
...
...
@@ -27,7 +26,7 @@ let express = require('express');
let
moment
=
require
(
'
moment-timezone
'
)
let
app
=
express
();
let
files
=
[]
let
files
=
[]
var
bodyParser
=
require
(
'
body-parser
'
)
...
...
@@ -66,28 +65,22 @@ app.post('/', (req, res) => {
})
async
function
init
()
{
files
=
await
fs
.
readdirSync
(
'
YashilFinal
'
)
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
++
)
{
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
)
if
(
accs
[
i
].
testnet
===
1
)
exchange
.
urls
[
'
api
'
]
=
exchange
.
urls
[
'
test
'
];
accs
[
i
].
exchange
=
exchange
accs
[
i
].
exchange
=
exchange
}
// info = await fs.readFileSync('info2.json', 'utf8');
// info = JSON.parse(info)
...
...
@@ -100,19 +93,16 @@ async function init() {
// exchange.urls['api'] = exchange.urls['test'];
//
run()
run
()
balanceUpdater
()
dbEquityUpdater
()
}
async
function
dbEquityUpdater
()
{
async
function
dbEquityUpdater
()
{
try
{
for
(
let
i
=
0
;
i
<
accs
.
length
;
i
++
)
db
.
updateEquityByid
(
accs
[
i
].
id
,
accs
[
i
].
equity
)
}
catch
(
e
)
{
for
(
let
i
=
0
;
i
<
accs
.
length
;
i
++
)
db
.
updateEquityByid
(
accs
[
i
].
id
,
accs
[
i
].
equity
)
}
catch
(
e
)
{
}
...
...
@@ -122,23 +112,22 @@ async function dbEquityUpdater()
async
function
balanceUpdater
()
{
let
arr
=
[]
let
arr
=
[]
try
{
for
(
let
i
=
0
;
i
<
accs
.
length
;
i
++
)
for
(
let
i
=
0
;
i
<
accs
.
length
;
i
++
)
arr
.
push
(
balanceGetter
(
accs
[
i
]))
await
Promise
.
all
(
arr
)
}
catch
(
e
)
{
console
.
log
(
e
)
console
.
log
(
e
)
}
await
sleep
(
60000
)
return
balanceUpdater
()
}
async
function
balanceGetter
(
acc
)
{
async
function
balanceGetter
(
acc
)
{
try
{
let
d
=
await
acc
.
exchange
.
fetchBalance
()
if
(
parseFloat
(
d
.
info
.
result
.
USDT
.
equity
)
!==
parseFloat
(
acc
.
equity
))
{
...
...
@@ -196,7 +185,7 @@ async function run() {
// checker()
console
.
log
(
datas
)
//
console.log(datas)
}
...
...
@@ -214,7 +203,7 @@ async function updateVars(name, lastData) {
let
data
=
grabData
([
lastData
])
closer
(
sig
,
data
[
0
].
closeTime
,
data
[
0
],
allData
.
id
,
allData
.
pair
)
closer
(
sig
,
data
[
0
].
closeTime
)
let
vars
=
ai
.
run
(
data
,
allData
.
avgRunup
,
allData
.
avgDrawdown
,
getVarsFromName
(
name
))
...
...
@@ -226,7 +215,7 @@ async function updateVars(name, lastData) {
sig
=
allData
.
id
+
'
_Sell
'
else
sig
=
allData
.
id
+
'
_Buy
'
adder
(
sig
,
allData
.
qty
,
data
[
0
].
closeTime
,
data
[
0
],
allData
.
pair
)
adder
(
sig
,
data
[
0
].
closeTime
)
// console.log('adder')
}
// console.log(name,vars)
...
...
@@ -235,107 +224,109 @@ async function updateVars(name, lastData) {
}
async
function
closer
(
sig
,
date
,
bigData
,
id
,
pair
)
{
async
function
closer
(
sig
,
date
)
{
let
lastToken
=
sig
+
'
_2
'
+
date
lastToken
=
lastToken
.
replace
(
/_/g
,
''
).
replace
(
/Lp/g
,
''
).
replace
(
/BTC/g
,
''
).
replace
(
/ /g
,
''
).
replace
(
/btc2/g
,
''
).
replace
(
/btc3/g
,
''
).
replace
(
/btc4/g
,
''
).
replace
(
/&/g
,
''
).
replace
(
/btc/g
,
''
).
replace
(
/:/g
,
''
)
lastToken
=
removeDot
(
lastToken
)
const
[
data
,
delStatus
]
=
await
client
.
multi
()
.
get
(
info
.
apiKey
+
'
_
'
+
sig
)
.
del
(
info
.
apiKey
+
'
_
'
+
sig
)
lastToken
=
removeDot
(
lastToken
)
let
arr
=
[]
for
(
let
i
=
0
;
i
<
accs
.
length
;
i
++
)
{
arr
.
push
(
syncAllCloser
(
accs
[
i
],
sig
,
lastToken
))
}
await
Promise
.
all
(
arr
)
.
exec
();
}
if
(
delStatus
!==
1
)
{
return
}
async
function
syncAllCloser
(
acc
,
sig
,
lastToken
)
{
const
[
data
,
delStatus
]
=
await
client
.
multi
()
.
get
(
acc
.
key
+
'
_
'
+
sig
)
.
del
(
acc
.
key
+
'
_
'
+
sig
)
.
exec
();
if
(
delStatus
!==
1
)
return
let
d
let
newData
=
JSON
.
parse
(
data
)
let
qty
=
newData
.
qty
console
.
log
(
'
try reduce
'
,
sig
,
qty
)
console
.
log
(
'
try reduce
'
,
acc
.
name
,
sig
,
qty
)
if
(
sig
.
includes
(
'
Buy
'
))
{
try
{
d
=
await
exchange
.
createMarketOrder
(
pair
,
'
Sell
'
,
qty
,
0
,
{
d
=
await
acc
.
exchange
.
createMarketOrder
(
'
BTCUSDT
'
,
'
Sell
'
,
qty
,
0
,
{
reduceOnly
:
true
,
order_link_id
:
lastToken
})
}
catch
(
e
)
{
try
{
d
=
await
exchange
.
createMarketOrder
(
pair
,
'
Sell
'
,
qty
,
0
,
{
d
=
await
acc
.
exchange
.
createMarketOrder
(
'
BTCUSDT
'
,
'
Sell
'
,
qty
,
0
,
{
reduceOnly
:
true
,
order_link_id
:
lastToken
})
}
catch
(
e
)
{
console
.
error
(
e
)
console
.
log
(
'
Error ->
'
,
sig
,
qty
,
'
Sell
'
,
'
Reduce true
'
)
console
.
log
(
'
Error ->
'
,
acc
.
name
,
sig
,
qty
,
'
Sell
'
,
'
Reduce true
'
)
}
}
}
else
{
try
{
d
=
await
exchange
.
createMarketOrder
(
pair
,
'
Buy
'
,
qty
,
0
,
{
reduceOnly
:
true
,
order_link_id
:
lastToken
})
d
=
await
acc
.
exchange
.
createMarketOrder
(
'
BTCUSDT
'
,
'
Buy
'
,
qty
,
0
,
{
reduceOnly
:
true
,
order_link_id
:
lastToken
})
}
catch
(
e
)
{
try
{
d
=
await
exchange
.
createMarketOrder
(
pair
,
'
Buy
'
,
qty
,
0
,
{
d
=
await
acc
.
exchange
.
createMarketOrder
(
'
BTCUSDT
'
,
'
Buy
'
,
qty
,
0
,
{
reduceOnly
:
true
,
order_link_id
:
lastToken
})
}
catch
(
e
)
{
console
.
error
(
e
)
console
.
log
(
'
Error ->
'
,
sig
,
qty
,
'
Buy
'
)
console
.
log
(
'
Error ->
'
,
acc
.
name
,
sig
,
qty
,
'
Buy
'
)
}
}
}
// await sleep(60000)
// d = await exchange.fetchOrder(d.id, d.info.symbol)
// let profit = getCalculateProfit(newData.price, d.average)
// if (newData.side === 'sell')
// profit = profit * -1
//
// let det = 'side:' + newData.side + ' bybit open price:' + newData.price + ' bybit close price:' + d.average
//
// let t = id + ' :' + det + ' bybit profit:' + ' ' + profit + ' yashil profit:' + bigData.profit + ' diff:' + (profit - bigData.profit)
// appendDiffProfitLog(t)
}
async
function
adder
(
sig
,
qty
,
date
,
allData
,
pair
)
{
async
function
adder
(
sig
,
date
)
{
let
lastToken
=
sig
+
'
_
'
+
date
if
(
pair
===
'
BNBUSDT
'
)
qty
=
0.06
else
if
(
pair
===
'
BTCUSDT
'
)
qty
=
0.002
else
if
(
pair
===
'
ETHUSDT
'
)
qty
=
0.01
lastToken
=
lastToken
.
replace
(
/_/g
,
''
).
replace
(
/Lp/g
,
''
).
replace
(
/BTC/g
,
''
).
replace
(
/ /g
,
''
).
replace
(
/btc2/g
,
''
).
replace
(
/btc3/g
,
''
).
replace
(
/btc4/g
,
''
).
replace
(
/&/g
,
''
).
replace
(
/btc/g
,
''
).
replace
(
/:/g
,
''
)
lastToken
=
removeDot
(
lastToken
)
console
.
log
(
'
Add db and ex :
'
,
lastToken
)
lastToken
=
removeDot
(
lastToken
)
let
arr
=
[]
for
(
let
i
=
0
;
i
<
accs
.
length
;
i
++
)
{
if
(
accs
[
i
].
active
===
1
)
arr
.
push
(
syncAdder
(
accs
[
i
],
sig
,
lastToken
))
}
Promise
.
all
(
arr
)
}
async
function
syncAdder
(
acc
,
sig
,
lastToken
)
{
console
.
log
(
'
Add db and ex :
'
,
acc
.
name
,
lastToken
)
let
d
// console.log(pair,qty)
if
(
sig
.
includes
(
'
Buy
'
))
{
d
=
await
exchange
.
createMarketOrder
(
pair
,
'
Buy
'
,
qty
,
0
,
{
order_link_id
:
lastToken
})
// console.log('Add Suc With id',sig)
d
=
await
acc
.
exchange
.
createMarketOrder
(
'
BTCUSDT
'
,
'
Buy
'
,
acc
.
qty
,
0
,
{
order_link_id
:
lastToken
})
}
else
{
d
=
await
exchange
.
createMarketOrder
(
pair
,
'
Sell
'
,
qty
,
0
,
{
order_link_id
:
lastToken
})
// console.log('Add Suc With id',sig)
d
=
await
acc
.
exchange
.
createMarketOrder
(
'
BTCUSDT
'
,
'
Sell
'
,
acc
.
qty
,
0
,
{
order_link_id
:
lastToken
})
}
if
(
typeof
d
.
id
!==
"
undefined
"
)
{
console
.
log
(
'
Add Suc With id
'
,
d
.
id
,
sig
)
console
.
log
(
'
Add Suc With id
'
,
acc
.
name
,
d
.
id
,
sig
)
const
[
add
]
=
await
client
.
multi
()
.
set
(
info
.
apiKey
+
'
_
'
+
sig
,
JSON
.
stringify
({
.
set
(
acc
.
kebabCase
+
'
_
'
+
sig
,
JSON
.
stringify
({
pair
:
d
.
info
.
symbol
,
side
:
d
.
side
,
qty
:
d
.
amount
,
...
...
@@ -344,8 +335,6 @@ async function adder(sig, qty, date, allData, pair) {
.
exec
();
}
}
function
grabData
(
data
)
{
...
...
@@ -455,7 +444,7 @@ function getVarFromUsage(vars, usage) {
async
function
analyse
(
body
)
{
let
t
=
body
.
split
(
'
,
'
)
let
obj
=
{}
if
(
typeof
t
[
0
]
===
"
undefined
"
)
if
(
typeof
t
[
0
]
===
"
undefined
"
)
return
obj
.
symbol
=
t
[
0
]
obj
.
entry
=
parseFloat
(
t
[
1
])
...
...
@@ -465,8 +454,8 @@ async function analyse(body) {
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
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
'
...
...
@@ -492,7 +481,7 @@ async function analyse(body) {
appendCsv
(
final
,
indicator
)
indicator
=
indicator
.
replace
(
'
Kelt
'
,
'
btc4
'
).
replace
(
'
SOTT
'
,
'
btc3
'
).
replace
(
'
Pmax
'
,
'
btc2
'
).
replace
(
'
PPST
'
,
'
btc1
'
).
replace
(
'
.csv
'
,
''
)
appendCsvtoMain
(
final
,
indicator
)
appendCsvtoMain
(
final
,
indicator
)
// updateVars(indicator,final)
}
...
...
@@ -507,21 +496,18 @@ function appendCsv(data, name) {
async
function
appendCsvtoMain
(
data
,
config
)
{
for
(
let
i
=
0
;
i
<
files
.
length
;
i
++
)
{
if
(
files
[
i
].
startsWith
(
config
+
'
_
'
))
{
appendtoFile
(
files
[
i
],
data
)
appendtoFile
(
files
[
i
],
data
)
}
}
}
function
appendtoFile
(
name
,
data
)
{
fs
.
appendFile
(
'
YashilFinal/
'
+
name
,
data
+
'
\n
'
,
function
(
err
)
{
function
appendtoFile
(
name
,
data
)
{
fs
.
appendFile
(
'
YashilFinal/
'
+
name
,
data
+
'
\n
'
,
function
(
err
)
{
if
(
err
)
throw
err
;
});
...
...
@@ -531,15 +517,15 @@ function getPercent(basePrice, value) {
return
((
value
-
basePrice
)
/
basePrice
)
*
100
}
function
removeDot
(
text
)
{
let
token
=
''
for
(
let
i
=
0
;
i
<
text
.
length
;
i
++
)
if
(
text
[
i
]
!==
'
.
'
)
token
=
token
+
text
[
i
]
function
removeDot
(
text
)
{
let
token
=
''
for
(
let
i
=
0
;
i
<
text
.
length
;
i
++
)
if
(
text
[
i
]
!==
'
.
'
)
token
=
token
+
text
[
i
]
return
token
}
function
getVarsFromName
(
config
)
{
for
(
let
i
=
0
;
i
<
datas
.
length
;
i
++
)
if
(
datas
[
i
].
name
.
startsWith
(
config
+
'
_
'
))
...
...
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