Toggle navigation
Toggle navigation
This project
Loading...
Sign in
정홍주
/
Coin-trade-assistant
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Snippets
Network
Create a new issue
Builds
Commits
Issue Boards
Authored by
전현진
2021-06-07 23:29:08 +0900
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
622d2e8c768ad49f7e3408908cc4c0be636395a1
622d2e8c
1 parent
d5618a21
Add volume pumping in master brnach
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
152 additions
and
198 deletions
app.js
line.js
app.js
View file @
622d2e8
...
...
@@ -24,9 +24,13 @@ app.post('/hook', function (req, res) {
console
.
log
(
'[request]'
,
req
.
body
);
console
.
log
(
'[request source] '
,
source
);
console
.
log
(
'[request message]'
,
message
);
if
(
message
.
text
===
'김프'
){
command
=
'김프'
;
}
else
if
(
message
.
text
===
'거래량비율'
)
volumePumpingRatioThreeMinutePerWeek
(
eventObj
.
replyToken
,
message
.
text
);
else
{
if
(
command
===
'김프'
){
kimp
(
eventObj
.
replyToken
,
message
.
text
);
...
...
@@ -125,6 +129,154 @@ function compare_price(replyToken, message, upbitPrice){
});
}
function
volumePumpingRatioThreeMinutePerWeek
(
replyToken
,
message
)
{
fs
.
readFile
(
'coin_name.txt'
,
'utf8'
,
function
(
err
,
data
){
coinNameArr
=
data
.
split
(
","
);
var
volumePerWeekArr
=
new
Array
();
function
getWeekVolume
()
{
var
promise
=
new
Promise
(
function
(
resolve
,
reject
)
{
for
(
i
=
0
;
i
<
coinNameArr
.
length
;
++
i
)
{
(
function
(
i
)
{
setTimeout
(
function
()
{
const
url
=
'https://api.upbit.com/v1/candles/weeks/?market='
+
coinNameArr
[
i
]
+
'&count=1'
;
const
options
=
{
method
:
'GET'
,
headers
:
{
Accept
:
'application/json'
}};
var
coinJson
=
new
Object
();
fetch
(
url
,
options
)
.
then
(
res
=>
res
.
json
())
.
then
(
json
=>
{
coinJson
.
coin
=
coinNameArr
[
i
];
coinJson
.
tradeVolumePerWeek
=
json
[
0
].
candle_acc_trade_volume
;
volumePerWeekArr
.
push
(
coinJson
);
console
.
log
(
coinJson
);
if
(
volumePerWeekArr
.
length
>=
coinNameArr
.
length
)
resolve
(
volumePerWeekArr
);
})
.
catch
(
err
=>
console
.
error
(
'error:'
+
err
));
},
i
*
220
);
})(
i
);
}
});
return
promise
;
}
var
volumePerThreeMinArr
=
new
Array
();
function
getThreeMinVolume
()
{
var
promise
=
new
Promise
(
function
(
resolve
,
reject
)
{
for
(
i
=
0
;
i
<
coinNameArr
.
length
;
++
i
)
{
(
function
(
i
)
{
setTimeout
(
function
()
{
const
url
=
'https://api.upbit.com/v1/candles/minutes/3?market='
+
coinNameArr
[
i
]
+
'&count=1'
;
const
options
=
{
method
:
'GET'
,
headers
:
{
Accept
:
'application/json'
}};
var
coinJson
=
new
Object
();
fetch
(
url
,
options
)
.
then
(
res
=>
res
.
json
())
.
then
(
json
=>
{
coinJson
.
coin
=
coinNameArr
[
i
];
coinJson
.
tradeVolumePerThreeMin
=
json
[
0
].
candle_acc_trade_volume
;
volumePerThreeMinArr
.
push
(
coinJson
);
console
.
log
(
coinJson
);
if
(
volumePerThreeMinArr
.
length
>=
coinNameArr
.
length
)
resolve
(
volumePerThreeMinArr
);
})
.
catch
(
err
=>
console
.
error
(
'error:'
+
err
));
},
i
*
220
);
})(
i
);
}
});
return
promise
;
}
var
pumpingArr
=
new
Array
();
function
getResultArr
(
volArr
,
minArr
)
{
var
promise
=
new
Promise
(
function
(
resolve
,
reject
)
{
for
(
var
i
=
0
;
i
<
coinNameArr
.
length
;
i
++
)
{
var
coinJson
=
new
Object
();
coinJson
.
name
=
coinNameArr
[
i
];
coinJson
.
pumpingRatio
=
minArr
[
i
].
tradeVolumePerThreeMin
/
volArr
[
i
].
tradeVolumePerWeek
*
1000000
pumpingArr
.
push
(
coinJson
);
if
(
pumpingArr
.
length
>=
coinNameArr
.
length
)
resolve
(
pumpingArr
);
}
})
return
promise
;
}
function
sortingArr
(
data
,
ratio
)
{
var
promise
=
new
Promise
(
function
(
resolve
,
reject
)
{
resolve
(
data
.
sort
(
function
(
first
,
second
)
{
var
a
=
first
[
ratio
];
var
b
=
second
[
ratio
];
return
a
>
b
?
-
1
:
a
<
b
?
1
:
0
;
}))
});
return
promise
;
};
getWeekVolume
().
then
(
function
(
volArr
){
getThreeMinVolume
().
then
(
function
(
minArr
){
getResultArr
(
volArr
,
minArr
).
then
(
function
(
result
){
sortingArr
(
result
,
"pumpingRatio"
).
then
(
function
(
finalArr
){
console
.
log
(
finalArr
);
request
.
post
(
{
url
:
TARGET_URL
,
headers
:
{
'Authorization'
:
`Bearer
${
TOKEN
}
`
},
json
:
{
"replyToken"
:
replyToken
,
"messages"
:
[
{
"type"
:
"text"
,
"text"
:
finalArr
[
0
].
name
+
' : '
+
String
(
finalArr
[
0
].
pumpingRatio
)
+
'\n'
+
finalArr
[
1
].
name
+
' : '
+
String
(
finalArr
[
1
].
pumpingRatio
)
+
'\n'
+
finalArr
[
2
].
name
+
' : '
+
String
(
finalArr
[
2
].
pumpingRatio
)
+
'\n'
+
finalArr
[
3
].
name
+
' : '
+
String
(
finalArr
[
3
].
pumpingRatio
)
+
'\n'
+
finalArr
[
4
].
name
+
' : '
+
String
(
finalArr
[
4
].
pumpingRatio
)
+
'\n'
+
finalArr
[
5
].
name
+
' : '
+
String
(
finalArr
[
5
].
pumpingRatio
)
+
'\n'
+
finalArr
[
6
].
name
+
' : '
+
String
(
finalArr
[
6
].
pumpingRatio
)
+
'\n'
+
finalArr
[
7
].
name
+
' : '
+
String
(
finalArr
[
7
].
pumpingRatio
)
+
'\n'
+
finalArr
[
8
].
name
+
' : '
+
String
(
finalArr
[
8
].
pumpingRatio
)
+
'\n'
+
finalArr
[
9
].
name
+
' : '
+
String
(
finalArr
[
9
].
pumpingRatio
)
+
'\n'
}
]
}
},(
error
,
response
,
body
)
=>
{
console
.
log
(
body
)
});
res
.
sendStatus
(
200
);
})
})
})
})
})
}
try
{
const
option
=
{
ca
:
fs
.
readFileSync
(
'/etc/letsencrypt/live/'
+
domain
+
'/fullchain.pem'
),
...
...
line.js
deleted
100644 → 0
View file @
d5618a2
var
express
=
require
(
'express'
);
const
request
=
require
(
'request'
);
const
TARGET_URL
=
'https://api.line.me/v2/bot/message/reply'
const
TOKEN
=
'/* 수정 */'
;
const
fs
=
require
(
'fs'
);
const
path
=
require
(
'path'
);
const
HTTPS
=
require
(
'https'
);
const
fetch
=
require
(
'node-fetch'
);
const
rp
=
require
(
'request-promise'
);
const
domain
=
"/* 수정 */"
const
sslport
=
23023
;
const
bodyParser
=
require
(
'body-parser'
);
var
app
=
express
();
var
command
=
''
;
app
.
use
(
bodyParser
.
json
());
app
.
post
(
'/hook'
,
function
(
req
,
res
)
{
var
eventObj
=
req
.
body
.
events
[
0
];
var
source
=
eventObj
.
source
;
var
message
=
eventObj
.
message
;
// request log
console
.
log
(
'======================'
,
new
Date
()
,
'======================'
);
console
.
log
(
'[request]'
,
req
.
body
);
console
.
log
(
'[request source] '
,
source
);
console
.
log
(
'[request message]'
,
message
);
/*=============================================================*/
if
(
message
.
text
===
'거래량비율'
)
volumePumpingRatioThreeMinutePerWeek
(
eventObj
.
replyToken
,
message
.
text
);
/*=============================================================*/
res
.
sendStatus
(
200
);
});
function
volumePumpingRatioThreeMinutePerWeek
(
replyToken
,
message
)
{
fs
.
readFile
(
'coin_name.txt'
,
'utf8'
,
function
(
err
,
data
){
coinNameArr
=
data
.
split
(
","
);
var
volumePerWeekArr
=
new
Array
();
function
getWeekVolume
()
{
var
promise
=
new
Promise
(
function
(
resolve
,
reject
)
{
for
(
i
=
0
;
i
<
coinNameArr
.
length
;
++
i
)
{
(
function
(
i
)
{
setTimeout
(
function
()
{
const
url
=
'https://api.upbit.com/v1/candles/weeks/?market='
+
coinNameArr
[
i
]
+
'&count=1'
;
const
options
=
{
method
:
'GET'
,
headers
:
{
Accept
:
'application/json'
}};
var
coinJson
=
new
Object
();
fetch
(
url
,
options
)
.
then
(
res
=>
res
.
json
())
.
then
(
json
=>
{
coinJson
.
coin
=
coinNameArr
[
i
];
coinJson
.
tradeVolumePerWeek
=
json
[
0
].
candle_acc_trade_volume
;
volumePerWeekArr
.
push
(
coinJson
);
console
.
log
(
coinJson
);
if
(
volumePerWeekArr
.
length
>=
coinNameArr
.
length
)
resolve
(
volumePerWeekArr
);
})
.
catch
(
err
=>
console
.
error
(
'error:'
+
err
));
},
i
*
220
);
})(
i
);
}
});
return
promise
;
}
var
volumePerThreeMinArr
=
new
Array
();
function
getThreeMinVolume
()
{
var
promise
=
new
Promise
(
function
(
resolve
,
reject
)
{
for
(
i
=
0
;
i
<
coinNameArr
.
length
;
++
i
)
{
(
function
(
i
)
{
setTimeout
(
function
()
{
const
url
=
'https://api.upbit.com/v1/candles/minutes/3?market='
+
coinNameArr
[
i
]
+
'&count=1'
;
const
options
=
{
method
:
'GET'
,
headers
:
{
Accept
:
'application/json'
}};
var
coinJson
=
new
Object
();
fetch
(
url
,
options
)
.
then
(
res
=>
res
.
json
())
.
then
(
json
=>
{
coinJson
.
coin
=
coinNameArr
[
i
];
coinJson
.
tradeVolumePerThreeMin
=
json
[
0
].
candle_acc_trade_volume
;
volumePerThreeMinArr
.
push
(
coinJson
);
console
.
log
(
coinJson
);
if
(
volumePerThreeMinArr
.
length
>=
coinNameArr
.
length
)
resolve
(
volumePerThreeMinArr
);
})
.
catch
(
err
=>
console
.
error
(
'error:'
+
err
));
},
i
*
220
);
})(
i
);
}
});
return
promise
;
}
var
pumpingArr
=
new
Array
();
function
getResultArr
(
volArr
,
minArr
)
{
var
promise
=
new
Promise
(
function
(
resolve
,
reject
)
{
for
(
var
i
=
0
;
i
<
coinNameArr
.
length
;
i
++
)
{
var
coinJson
=
new
Object
();
coinJson
.
name
=
coinNameArr
[
i
];
coinJson
.
pumpingRatio
=
minArr
[
i
].
tradeVolumePerThreeMin
/
volArr
[
i
].
tradeVolumePerWeek
*
1000000
pumpingArr
.
push
(
coinJson
);
if
(
pumpingArr
.
length
>=
coinNameArr
.
length
)
resolve
(
pumpingArr
);
}
})
return
promise
;
}
function
sortingArr
(
data
,
ratio
)
{
var
promise
=
new
Promise
(
function
(
resolve
,
reject
)
{
resolve
(
data
.
sort
(
function
(
first
,
second
)
{
var
a
=
first
[
ratio
];
var
b
=
second
[
ratio
];
return
a
>
b
?
-
1
:
a
<
b
?
1
:
0
;
}))
});
return
promise
;
};
getWeekVolume
().
then
(
function
(
volArr
){
getThreeMinVolume
().
then
(
function
(
minArr
){
getResultArr
(
volArr
,
minArr
).
then
(
function
(
result
){
sortingArr
(
result
,
"pumpingRatio"
).
then
(
function
(
finalArr
){
console
.
log
(
finalArr
);
request
.
post
(
{
url
:
TARGET_URL
,
headers
:
{
'Authorization'
:
`Bearer
${
TOKEN
}
`
},
json
:
{
"replyToken"
:
replyToken
,
"messages"
:
[
{
"type"
:
"text"
,
"text"
:
finalArr
[
0
].
name
+
' : '
+
String
(
finalArr
[
0
].
pumpingRatio
)
+
'\n'
+
finalArr
[
1
].
name
+
' : '
+
String
(
finalArr
[
1
].
pumpingRatio
)
+
'\n'
+
finalArr
[
2
].
name
+
' : '
+
String
(
finalArr
[
2
].
pumpingRatio
)
+
'\n'
+
finalArr
[
3
].
name
+
' : '
+
String
(
finalArr
[
3
].
pumpingRatio
)
+
'\n'
+
finalArr
[
4
].
name
+
' : '
+
String
(
finalArr
[
4
].
pumpingRatio
)
+
'\n'
+
finalArr
[
5
].
name
+
' : '
+
String
(
finalArr
[
5
].
pumpingRatio
)
+
'\n'
+
finalArr
[
6
].
name
+
' : '
+
String
(
finalArr
[
6
].
pumpingRatio
)
+
'\n'
+
finalArr
[
7
].
name
+
' : '
+
String
(
finalArr
[
7
].
pumpingRatio
)
+
'\n'
+
finalArr
[
8
].
name
+
' : '
+
String
(
finalArr
[
8
].
pumpingRatio
)
+
'\n'
+
finalArr
[
9
].
name
+
' : '
+
String
(
finalArr
[
9
].
pumpingRatio
)
+
'\n'
}
]
}
},(
error
,
response
,
body
)
=>
{
console
.
log
(
body
)
});
res
.
sendStatus
(
200
);
})
})
})
})
})
}
try
{
const
option
=
{
ca
:
fs
.
readFileSync
(
'/etc/letsencrypt/live/'
+
domain
+
'/fullchain.pem'
),
key
:
fs
.
readFileSync
(
path
.
resolve
(
process
.
cwd
(),
'/etc/letsencrypt/live/'
+
domain
+
'/privkey.pem'
),
'utf8'
).
toString
(),
cert
:
fs
.
readFileSync
(
path
.
resolve
(
process
.
cwd
(),
'/etc/letsencrypt/live/'
+
domain
+
'/cert.pem'
),
'utf8'
).
toString
(),
};
HTTPS
.
createServer
(
option
,
app
).
listen
(
sslport
,
()
=>
{
console
.
log
(
`[HTTPS] Server is started on port
${
sslport
}
`
);
});
}
catch
(
error
)
{
console
.
log
(
'[HTTPS] HTTPS 오류가 발생하였습니다. HTTPS 서버는 실행되지 않습니다.'
);
console
.
log
(
error
);
}
\ No newline at end of file
Please
register
or
login
to post a comment