Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
kucoin
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
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
rongjun
kucoin
Commits
3263d5ee
Commit
3263d5ee
authored
Sep 22, 2018
by
rongjun
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
bug
parent
b6ac6f49
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
36 additions
and
11 deletions
+36
-11
api_kucoin.js
api_kucoin.js
+4
-0
kucoinCollector.js
kucoinCollector.js
+22
-1
order_kucoin.js
order_kucoin.js
+10
-10
No files found.
api_kucoin.js
View file @
3263d5ee
...
...
@@ -195,6 +195,10 @@ class biboxApi {
this
.
_request
(
"GET"
,
"/v1/account/balances"
,{
limit
:
limit
||
20
,
page
:
page
||
1
},
callback
);
}
coins_info
(
callback
)
{
this
.
_publicRequest
(
"/v1/market/open/coins"
,{},
callback
);
}
getTrades
(
symbol
,
callback
)
{
callback
(
null
,
null
)
}
...
...
kucoinCollector.js
View file @
3263d5ee
...
...
@@ -4,6 +4,7 @@ const restCurrencies = ["PRA","AAC","AT","RED","BU","QTUM","EOSDAC","HPB","ORME"
const
machine
=
process
.
env
[
'MACHINE'
];
const
biboxApi
=
require
(
'./api_kucoin'
);
const
zlib
=
require
(
'zlib'
);
let
coinInfoMap
=
null
const
Strategy3MaxAmountMap
=
{
USDT
:
300
,
BTC
:
0.05
,
...
...
@@ -93,6 +94,21 @@ class BiboxCollector extends BaseCollector{
_runMonitor
(
callback
){
let
balanceMap
=
{};
let
need
=
1
;
if
(
!
coinInfoMap
){
console
.
log
(
'start get coin info...'
);
coinInfoMap
=
{}
this
.
api
.
coins_info
((
error
,
result
)
=>
{
if
(
error
){
console
.
error
(
'get coins info error'
)
}
else
{
if
(
result
.
data
){
for
(
let
d
of
result
.
data
){
coinInfoMap
[
d
.
coin
]
=
d
}
}
}
});
}
this
.
api
.
balance
(
20
,
1
,
(
error
,
result
)
=>
{
if
(
error
){
console
.
error
(
"get balance by rest error:"
);
...
...
@@ -145,9 +161,14 @@ class BiboxCollector extends BaseCollector{
}
processAmount
(
fromCurrency
,
toCurrency
,
amount
){
//有可能会由于数值过小,传进来的amount被表示为科学计数法法
let
tradePrecision
=
4
;
const
coin
=
coinInfoMap
[
toCurrency
];
if
(
coin
){
tradePrecision
=
coin
[
'tradePrecision'
]
||
4
;
}
const
amountStr
=
parseFloat
(
amount
).
toFixed
(
10
);
const
nums
=
amountStr
.
split
(
'.'
);
if
(
nums
.
length
===
2
&&
nums
[
1
].
length
>
4
){
if
(
nums
.
length
===
2
&&
nums
[
1
].
length
>
tradePrecision
){
return
nums
[
0
]
+
"."
+
nums
[
1
].
slice
(
0
,
4
);
}
return
amount
;
...
...
order_kucoin.js
View file @
3263d5ee
...
...
@@ -20,7 +20,7 @@ function returnFakeOrder(symbol, price, amount) {
}
}
function
convertToRecordOrder
(
order
)
{
function
convertToRecordOrder
(
order
,
price
)
{
let
status
=
constants
.
OrderStatusNew
;
if
(
order
.
pendingAmount
===
0
){
status
=
constants
.
OrderStatusFilled
;
...
...
@@ -34,7 +34,7 @@ function convertToRecordOrder(order) {
}
return
{
orderId
:
order
.
orderOid
+
''
,
price
:
order
.
dealPriceAverag
e
,
price
:
pric
e
,
status
:
status
,
transactTime
:
order
.
createdAt
,
origQty
:
order
.
pendingAmount
+
order
.
dealAmount
,
...
...
@@ -53,7 +53,7 @@ class Order {
this
.
api
=
new
biboxApi
();
}
_handleFOKSearchResult
(
orderId
,
symbol
,
side
,
finalCallback
,
error
,
result
)
{
_handleFOKSearchResult
(
orderId
,
symbol
,
side
,
price
,
finalCallback
,
error
,
result
)
{
if
(
error
)
{
console
.
error
(
"搜索订单出错"
);
console
.
error
(
error
);
...
...
@@ -63,7 +63,7 @@ class Order {
timeout
=
2000
;
}
setTimeout
(()
=>
{
this
.
api
.
searchOrder
(
orderId
,
symbol
,
side
,
this
.
_handleFOKSearchResult
.
bind
(
this
,
orderId
,
symbol
,
side
,
finalCallback
));
this
.
api
.
searchOrder
(
orderId
,
symbol
,
side
,
this
.
_handleFOKSearchResult
.
bind
(
this
,
orderId
,
symbol
,
side
,
price
,
finalCallback
));
},
timeout
);
return
;
}
...
...
@@ -71,20 +71,20 @@ class Order {
if
(
!
order
.
dealAmount
&&
!
order
.
pendingAmount
){
console
.
error
(
"没有返回amount 和deal amount字段,继续搜索"
);
console
.
log
(
result
)
this
.
api
.
searchOrder
(
orderId
,
symbol
,
side
,
this
.
_handleFOKSearchResult
.
bind
(
this
,
orderId
,
symbol
,
side
,
finalCallback
));
this
.
api
.
searchOrder
(
orderId
,
symbol
,
side
,
this
.
_handleFOKSearchResult
.
bind
(
this
,
orderId
,
symbol
,
side
,
price
,
finalCallback
));
}
else
if
(
order
.
pendingAmount
===
0
||
!
order
.
isActive
)
{
finalCallback
(
null
,
convertToRecordOrder
(
order
));
finalCallback
(
null
,
convertToRecordOrder
(
order
,
price
));
}
else
if
(
order
.
dealAmount
===
0
||
(
order
.
dealAmount
>
0
&&
order
.
pendingAmount
>
0
))
{
this
.
api
.
cancelOrder
(
orderId
,
symbol
,
side
,
(
error
,
result
)
=>
{
// setTimeout(() => {
console
.
log
(
"尝试取消,准备搜索订单"
);
this
.
api
.
searchOrder
(
orderId
,
symbol
,
side
,
this
.
_handleFOKSearchResult
.
bind
(
this
,
orderId
,
symbol
,
side
,
finalCallback
));
this
.
api
.
searchOrder
(
orderId
,
symbol
,
side
,
this
.
_handleFOKSearchResult
.
bind
(
this
,
orderId
,
symbol
,
side
,
price
,
finalCallback
));
// }, 80)
})
}
else
{
setTimeout
(()
=>
{
console
.
log
(
"订单尚未完成或取消,再次搜索"
);
this
.
api
.
searchOrder
(
orderId
,
symbol
,
side
,
this
.
_handleFOKSearchResult
.
bind
(
this
,
orderId
,
symbol
,
side
,
finalCallback
));
this
.
api
.
searchOrder
(
orderId
,
symbol
,
side
,
this
.
_handleFOKSearchResult
.
bind
(
this
,
orderId
,
symbol
,
side
,
price
,
finalCallback
));
},
500
);
}
}
...
...
@@ -101,7 +101,7 @@ class Order {
}
const
orderId
=
result
.
data
.
orderOid
;
setTimeout
(()
=>
{
this
.
api
.
searchOrder
(
orderId
,
symbol
,
side
,
this
.
_handleFOKSearchResult
.
bind
(
this
,
orderId
,
symbol
,
side
,
callback
));
this
.
api
.
searchOrder
(
orderId
,
symbol
,
side
,
this
.
_handleFOKSearchResult
.
bind
(
this
,
orderId
,
symbol
,
side
,
price
,
callback
));
},
50
);
})
}
...
...
@@ -137,7 +137,7 @@ class Order {
api2
.
searchOrder
(
orderId
,
symbol
,
side
,
handleSearchResult
.
bind
(
this
));
return
;
}
callback
(
null
,
convertToRecordOrder
(
result
.
data
));
callback
(
null
,
convertToRecordOrder
(
result
.
data
,
price
));
}
this
.
api
.
searchOrder
(
orderId
,
symbol
,
side
,
handleSearchResult
.
bind
(
this
));
...
...
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