2019102152 김다빈

Delete remark and console.log

Showing 1 changed file with 25 additions and 61 deletions
......@@ -12,8 +12,6 @@ const HTTPS = require('https');
const domain = "2019102152.osschatbot.ga"
const sslport = 23023;
const TARGET_URL = 'https://api.line.me/v2/bot/message/reply'
const bodyParser = require('body-parser');
const crypto = require('crypto');
const queryEncode = require('querystring').encode;
......@@ -38,7 +36,7 @@ app.use(bodyParser.json());
const connect = mongoose.connect(config.mongoURI, {
useNewUrlParser: true, useUnifiedTopology: true
})
.then(() => console.log('디비연결 성공'))
.then(() => console.log('db connected...'))
.catch((err) => console.log(err));
......@@ -69,18 +67,15 @@ function get_asset(market) {
if (data[i].currency == "KRW") {
current_asset += Number(data[i].balance);
pre_asset += Number(data[i].balance);
// hold_coin[data[i].currency]={volume:data[i].balance};
} else {
pre_asset += Number(data[i].balance * data[i].avg_buy_price)
candle = await get_candle(5, "KRW-" + data[i].currency);
current_asset += Number(candle[0].trade_price * data[i].balance);
// hold_coin[data[i].currency]={avg_buy_price:data[i].avg_buy_price,volume:data[i].balance,current_price:candle[0].trade_price};
}
}
resolve({ pre_asset: pre_asset.toFixed(0).replace(/\B(?<!\.\d*)(?=(\d{3})+(?!\d))/g, ","), current_asset: current_asset.toFixed(0).replace(/\B(?<!\.\d*)(?=(\d{3})+(?!\d))/g, ","), profit_data: (current_asset - pre_asset).toFixed(0).replace(/\B(?<!\.\d*)(?=(\d{3})+(?!\d))/g, ",") , yield_data: Number((current_asset - pre_asset) / pre_asset * 100).toFixed(2).replace(/\B(?<!\.\d*)(?=(\d{3})+(?!\d))/g, ",") });
} else if (market == "coin") {
var hold_coin = new Object();
for (var i = 0; i < data.length; i++) {
var candle;
if (data[i].currency == "KRW") {
......@@ -90,20 +85,21 @@ function get_asset(market) {
var avg_buy_price = Number(data[i].avg_buy_price).toFixed(data[i].avg_buy_price < 1 ? 3 : 0)
var volume = Number(data[i].balance).toFixed(8);
var current_price = Number(candle[0].trade_price).toFixed(data[i].current_price < 1 ? 3 : 0);
var buying_money=(avg_buy_price*volume).toFixed(0).toString().replace(/\B(?<!\.\d*)(?=(\d{3})+(?!\d))/g, ",");;
var evaluation_money=(current_price*volume).toFixed(0).toString().replace(/\B(?<!\.\d*)(?=(\d{3})+(?!\d))/g, ",");;
var yield_data = (current_price - avg_buy_price) / avg_buy_price * 100;
yield_data = Number(yield_data).toFixed(2);
avg_buy_price = avg_buy_price.toString().replace(/\B(?<!\.\d*)(?=(\d{3})+(?!\d))/g, ",");
volume = volume.toString().replace(/\B(?<!\.\d*)(?=(\d{3})+(?!\d))/g, ",");
current_price = current_price.toString().replace(/\B(?<!\.\d*)(?=(\d{3})+(?!\d))/g, ",");
yield_data = yield_data.toString().replace(/\B(?<!\.\d*)(?=(\d{3})+(?!\d))/g, ",");
hold_coin[data[i].currency] = { avg_buy_price, volume, current_price, yield_data };
hold_coin[data[i].currency] = { avg_buy_price, volume, current_price, yield_data,buying_money,evaluation_money };
}
}
resolve(hold_coin);
} else {
data.filter(function (item) {
if (item.currency == market.split('-')[1]) {
// resolve(item);
empty.market = item;
} else if (item.currency == "KRW") {
empty.KRW = item
......@@ -120,7 +116,6 @@ function get_asset(market) {
}
async function get_marketName() {
var data = new Array();
//전체 암호화폐 리스트 불러오기
let response = await fetch(`${server_url}/v1/market/all`, options)
.then(res => res.json())
.then(json => {
......@@ -150,8 +145,6 @@ async function transaction_coin(coin_name, side, volume, price, ord_type, first
price: price,
ord_type: ord_type,
}
//시장가 매수인 경우 price를 얼마치 살건지 입력
//시장가 매도인경우 volume에 몇개를 팔건지 입력
const query = queryEncode(body)
const hash = crypto.createHash('sha512')
const queryHash = hash.update(query, 'utf-8').digest('hex')
......@@ -183,40 +176,31 @@ async function transaction_coin(coin_name, side, volume, price, ord_type, first
lookup_order(result.uuid);
}
if (side == "bid") {
//처음 매수일 때
if (first) {
const user = new User({ uid: 1, krw_balance: my_asset.KRW.balance, market: coin_name, count: 1, avg_buy_price: my_asset.market.avg_buy_price, volume: my_asset.market.balance });
await user.save().then(() => { isuser = true })
//2회 이상 매수일 때
} else {
User.findOneAndUpdate({ uid: 1 }, { krw_balance: my_asset.KRW.balance, avg_buy_price: my_asset.market.avg_buy_price, volume: my_asset.market.balance, $inc: { count: 1 } }, { new: true }, (err, result) => {
if (err) {
// console.log(err);
console.log(err);
} else {
// console.log(result);
}
})
}
} else if (side == "ask") {
//1회 매수 후 매도일 때
console.log("매도 쪽으로 진입");
if (first) {
console.log("1회 매수 후 매도")
User.deleteOne({ market: coin_name }, (err, res) => {
if (err) {
// console.log(err);
User.findOneAndDelete({market:coin_name},(err,res)=>{
if(err){
console.log(err);
}else{
krw_balance=my_asset.KRW.balance;
divided_money=krw_balance/10;
}
krw_balance = my_asset.KRW.balance;
divided_money = krw_balance / 10;
});
//분할 매수 분할 매도 중일 때
})
} else {
console.log("여러번 매수 후 매도");
User.findOneAndUpdate({ uid: 1 }, { krw_balance: my_asset.KRW.balance, avg_buy_price: my_asset.market.avg_buy_price, volume: my_asset.market.balance, count: 1 }, { new: true }, (err, result) => {
if (err) {
// console.log(err);
} else {
console.log(result);
console.log(err);
}
})
}
......@@ -225,7 +209,6 @@ async function transaction_coin(coin_name, side, volume, price, ord_type, first
return;
}
async function get_marketInfo() {
//각 암호화폐 정보 조회
var name_list = await get_marketName();
const url2 = `${server_url}/v1/ticker/?markets=${name_list}`;
var arr = new Array();
......@@ -259,7 +242,7 @@ async function save_coin(arr) {
});
await coin.save((err) => {
if (err) {
// console.log(err)
console.log(err)
}
})
}
......@@ -272,9 +255,8 @@ async function refresh_db() {
if (result.length !== 0) {
Coin.deleteMany({ tid: { $gt: 0 } }, (err, result) => {
if (err) {
// console.log(err);
console.log(err);
} else {
// console.log(result);
}
})
}
......@@ -291,36 +273,29 @@ async function get_candle(minute, market) {
return candle;
}
async function price_comparison(candle, user_data = null, isbuying = false) {
//매수한 코인이 있을 때
var isbuying = isbuying;
if (user_data != null) {
console.log("매수 평균가 : " + user_data.avg_buy_price + ", 현재 가격 : " + candle[0].trade_price);
//매수평균가가 현재 시장 가격보다 더 비쌀 경우
var yield_data = (candle[0].trade_price - user_data.avg_buy_price) / user_data.avg_buy_price * 100;
if(yield_data<=-1){
// if (user_data.avg_buy_price > candle[0].trade_price) {
if (user_data.count < 9) {
transaction_coin(user_data.market, "bid", null, divided_money, "price", false)
} else if(user_data.count==9) {
transaction_coin(user_data.market, "bid", null, Math.floor(user_data.krw_balance-(user_data.krw_balance*0.001)), "price", false)
}
//매수평균가가 현재 시장 가격보다 더 쌀 경우
//수수료 포함 0.5% 이상 수익중일 때
}
} else if (yield_data >= 0.5) {
//매수 count가 1회이면서 수익률이 1.5프로 이상일때 시장가 전액 매도
if (user_data.count == 1 && yield_data >= 1.5) {
transaction_coin(user_data.market, "ask", user_data.volume, null, "market");
//전체 계좌 제산의 10프로를 제외한 나머지 코인을 매도
console.log(user_data);
if (user_data.count == 1) {
if(yield_data>=1.5){
transaction_coin(user_data.market, "ask", user_data.volume, null, "market");
}else{
}
} else {
transaction_coin(user_data.market, "ask", (user_data.volume / user_data.count) * (user_data.count - 1), null, "market", false);
}
}
//매수한 코인이 없을 때
} else {
await Coin.findOne({ name: candle[0].market }).then(async (result) => {
//가격이 떨어졌을때
//해당 코인의 count를 +1 해준다
//해당 코인의 count가 3이상이면 upbit api로 매수 주문을 보낸다.
if (candle.length!=0 && result.length!=0) {
var yield_data = (candle[0].trade_price - result.current_price) / result.current_price * 100;
if (result.current_price > candle[0].trade_price) {
......@@ -331,15 +306,12 @@ async function price_comparison(candle, user_data = null, isbuying = false) {
isbuying = true;
}
}).catch(err => { console.log(err) })
//가격이 상승했을때
//해당 코인의 count를 초기화한다.
} else if(result.current_price<candle[0].trade_price){
console.log(result.korean_name + " " + candle[0].unit + "분 동안" + yield_data.toFixed(2) + "% 상승");
await Coin.findOneAndUpdate({ name: candle[0].market }, { current_price: candle[0].trade_price, down_count: 0, $inc: { up_count: 1 } }, { new: true }).then(async (result) => {
}).catch(err => { console.log(err); })
}
}else{
console.log(result);
}
})
}
......@@ -347,10 +319,8 @@ async function price_comparison(candle, user_data = null, isbuying = false) {
}
async function check_coin(t1) {
User.find().then(async (user_data) => {
//매수한 코인이 있을 때
var isbuying = user_data.length != 0 ? true : false;
if (isbuying) {
//3회 이상 매수 했을시 15분봉으로 교체해서 가격 확인
if (user_data[0].count >= 3&&delay_count%3!=0&&user_data[0].count!=10) {
delay_count+=1;
} else {
......@@ -359,7 +329,6 @@ async function check_coin(t1) {
await price_comparison(candle, user_data[0]);
}
}
//코인 count and 매수 매도 작업
for (var i = 0; i < t1.length; i++) {
if (user_data[0] && user_data[0].market == t1[i]) {
continue;
......@@ -378,7 +347,6 @@ async function latest_repeat(t1) {
let minutes = today.getMinutes();
let seconds = today.getSeconds();
if (seconds ==0) {
// if (minutes == 0 && seconds == 0) {
clearInterval(check_time);
sort_info = (await sort_data());
(await refresh_db());
......@@ -394,7 +362,6 @@ async function latest_repeat(t1) {
let minutes = today.getMinutes();
let seconds = today.getSeconds();
console.log("현재 시간은 " + today.toLocaleTimeString());
//24시간마다 db 최신화...
if (count == 12 * 24) {
count = 0;
sort_info = (await sort_data());
......@@ -449,7 +416,7 @@ function lookup_order(uuid,avg_buy_price=0,market="") {
if(avg_buy_price!=0){
trading_notice(body.side, price, funds, volume,yield_data,market);
}else{
trading_notice(body.side, price, funds, volume);
trading_notice(body.side, price, funds, volume,0,market);
}
})
return;
......@@ -458,7 +425,7 @@ function trading_notice(side, price, funds, volume,yield_data=0,market="") {
var messages = new Array();
if (side == "bid") {
messages.push({ "type": "text", "text": "매수 주문이 체결되었습니다." });
messages.push({ "type": "text", "text": `${market}\n체결 금액 : ${funds}원\n체결 수량 : ${volume}개\n체결 평균가 : ${price}\n` });
messages.push({ "type": "text", "text": `${market}\n체결 금액 : ${funds}원\n체결 수량 : ${volume}개\n체결 평균가 : ${price}원` });
} else {
messages.push({ "type": "text", "text": "매도 주문이 체결되었습니다." });
messages.push({ "type": "text", "text": `${market}\n체결 금액 : ${funds}원\n체결 수량 : ${volume}개\n체결 평균가 : ${price}원\n수익률 : ${yield_data}%` });
......@@ -505,7 +472,6 @@ async function lookup_asset(replyToken) {
]
}
}, (error, response, body) => {
console.log(body)
});
return;
}
......@@ -522,7 +488,7 @@ async function lookup_hold_coin(replyToken) {
} else {
messages.push({
"type": "text",
"text": `${coin_list[i]}\n보유 수량 : ${(result[coin_list[i]].volume)}개\n매수 평균가 : ${result[coin_list[i]].avg_buy_price}원\n현재가 ${result[coin_list[i]].current_price}원\n수익률 : ${result[coin_list[i]].yield_data}%`
"text": `${coin_list[i]}\n보유 수량 : ${(result[coin_list[i]].volume)}개\n매수 평균가 : ${result[coin_list[i]].avg_buy_price}원\n현재가 ${result[coin_list[i]].current_price}원\n매수 금액 : ${result[coin_list[i]].buying_money}\n평가 금액 : ${result[coin_list[i]].evaluation_money}\n수익률 : ${result[coin_list[i]].yield_data}%`
})
}
}
......@@ -543,7 +509,6 @@ async function lookup_hold_coin(replyToken) {
});
return;
}
app.post('/hook', function (req, res) {
var eventObj = req.body.events[0];
if (eventObj.message.text == "자산") {
......@@ -562,7 +527,6 @@ try {
};
HTTPS.createServer(option, app).listen(sslport, async () => {
console.log(`[HTTPS] Server is started on port ${sslport}`);
// console.log(await get_asset());
await get_asset().then((result) => {
krw_balance = result[0].balance;
divided_money = krw_balance / 10
......