This commit is contained in:
dsyoon
2025-08-04 22:54:13 +09:00
parent 8faabc2fe1
commit 6feb9c5a97
2 changed files with 317 additions and 17 deletions

View File

@@ -1,6 +1,6 @@
import pandas as pd
import yfinance as yf
from HTS2 import HTS
import pandas as pd
from datetime import datetime, timedelta
import telegram
@@ -13,6 +13,7 @@ import schedule
from config import *
import FinanceDataReader as fdr
hts = HTS()
def send_coin_msg(text):
coin_client = telegram.Bot(token=COIN_TELEGRAM_BOT_TOKEN)
@@ -36,6 +37,13 @@ def send_coin_telegram_message(message_list, header):
return
def buy_ticker(buy_ticker_list):
for buy_ticker in buy_ticker_list:
ticker_code = buy_ticker['symbol']
_ = hts.buyCoinMarket(ticker_code, 50000)
return
def send_stock_msg(text):
stock_client = telegram.Bot(token=STOCK_TELEGRAM_BOT_TOKEN)
@@ -425,6 +433,7 @@ def monitor_kr_stocks():
def monitor_coins():
message_list = []
buy_ticker_list = []
print("KRW COINs {}".format(datetime.now().strftime('%Y-%m-%d %H:%M:%S')))
for symbol in KR_COINS:
@@ -438,11 +447,11 @@ def monitor_coins():
if info is None:
continue
info['name'] = KR_COINS[symbol]
print(
f" - {info['name']} ({symbol}): {info['price']:.2f} -> {info['alert']} ({info['details']['interval']})")
print(f" - {info['name']} ({symbol}): {info['price']:.2f} -> {info['alert']} ({info['details']['interval']})")
if info['alert']:
message_list.append(format_ma_message(info, 'KR'))
buy_ticker_list.append(info)
except Exception as e:
print(f"Error processing data for {symbol}: {str(e)}")
else:
@@ -459,8 +468,7 @@ def monitor_coins():
if info is None:
continue
info['name'] = KR_COINS[symbol]
print(
f" - {info['name']} ({symbol}): {info['price']:.2f} -> {info['alert']} ({info['details']['interval']})")
print(f" - {info['name']} ({symbol}): {info['price']:.2f} -> {info['alert']} ({info['details']['interval']})")
if info['alert']:
message_list.append(format_ma_message(info, 'KR'))
@@ -472,24 +480,15 @@ def monitor_coins():
if len(message_list) > 0:
try:
# buy
buy_ticker(buy_ticker_list)
# send message
send_coin_telegram_message(message_list, header="[KRW-COIN]")
except Exception as e:
print(f"Error sending Telegram message: {str(e)}")
return
# ----------------------
# Indicator utilities
# ----------------------
def calculate_bollinger_bands(data: pd.DataFrame, period: int = 20, std: int = 2):
data = data.copy()
data['MA'] = data['Close'].rolling(window=period).mean()
data['STD'] = data['Close'].rolling(window=period).std()
data['Upper'] = data['MA'] + std * data['STD']
data['Lower'] = data['MA'] - std * data['STD']
return data
# ----------------------
# Turnaround Detector v6
# ----------------------