Closed Kenwan0502 closed 1 year ago
import os import logging import requests import time from datetime import datetime, timedelta from telegram.ext import Updater, CommandHandler, MessageHandler, Filters
logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO)
BOT_TOKEN = os.environ.get('BOT_TOKEN') CHAT_ID = os.environ.get('CHAT_ID')
TIMER_HOUR = 16 TIMER_MINUTE = 0
STOCK_CODE = 'AAPL' PP_FORMULA = 'classic'
API_URL = 'https://www.alphavantage.co/query?function=TIME_SERIES_DAILY&symbol={}&apikey=YOUR_API_KEY'
updater = Updater(BOT_TOKEN, use_context=True)
dispatcher = updater.dispatcher
def daily_timer(context):
now = datetime.now() yesterday = now - timedelta(days=1) yesterday_str = yesterday.strftime('%Y-%m-%d') # 組合 API URL,並發送請求獲取股票 OHLC 數據 api_url = API_URL.replace('YOUR_API_KEY', os.environ.get('ALPHAVANTAGE_API_KEY')).format(STOCK_CODE) response = requests.get(api_url) data = response.json()['Time Series (Daily)'][yesterday_str] # 提取開盤價、最高價、最低價和收盤價 open_price = float(data['1. open']) high_price = float(data['2. high']) low_price = float(data['3. low']) close_price = float(data['4. close']) # 計算 PP 數據 if PP_FORMULA == 'classic': pp = (high_price + low_price + close_price) / 3 r1 = 2 * pp - low_price r2 = pp + high_price - low_price r3 = high_price + 2 * (pp - low_price) s1 = 2 * pp - high_price s2 = pp - high_price + low_price s3 = low_price - 2 * (high_price - pp) elif PP_FORMULA == 'woodie': pp = (high_price + low_price + 2 * close_price) / 4 r1 = 2 * pp - low抱歉,上面的代碼中有一些部分因為字數限制被截斷了,以下是完整的代碼:
import os import logging import requests import time from datetime import datetime, timedelta from telegram.ext import Updater, CommandHandler, MessageHandler, Filters # 設置日誌紀錄 logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO) # 獲取 Bot Token 和 Chat ID,您需要將它們替換為您自己的值 BOT_TOKEN = os.environ.get('BOT_TOKEN') CHAT_ID = os.environ.get('CHAT_ID') # 設置定時器的時間,這裡設置為每天下午 4 點 TIMER_HOUR = 16 TIMER_MINUTE = 0 # 設置股票代碼和 PP 計算方法 STOCK_CODE = 'AAPL' PP_FORMULA = 'classic' # 設置查詢股票 OHLC 數據的 API URL API_URL = 'https://www.alphavantage.co/query?function=TIME_SERIES_DAILY&symbol={}&apikey=YOUR_API_KEY' # 創建一個 Updater 對象,並使用您的 Bot Token 初始化它 updater = Updater(BOT_TOKEN, use_context=True) # 創建一個 Dispatcher 對象,並將 Updater 對象傳遞給它 dispatcher = updater.dispatcher # 創建一個定時器,每天定時獲取股票 OHLC 數據和 PP 數據 def daily_timer(context): # 獲取當前時間和昨天的日期 now = datetime.now() yesterday = now - timedelta(days=1) yesterday_str = yesterday.strftime('%Y-%m-%d') # 組合 API URL,並發送請求獲取股票 OHLC 數據 api_url = API_URL.replace('YOUR_API_KEY', os.environ.get('ALPHAVANTAGE_API_KEY')).format(STOCK_CODE) response = requests.get(api_url) data = response.json()['Time Series (Daily)'][yesterday_str] # 提取開盤價、最高價、最低價和收盤價 open_price = float(data['1. open']) high_price = float(data['2. high']) low_price = float(data['3. low']) close_price = float(data['4. close']) # 計算 PP 數據 if PP_FORMULA == 'classic': pp = (high_price + low_price + close_price) / 3 r1 = 2 * pp - low_price r2 = pp + high_price - low_price r3 = high_price + 2 * (pp - low_price) s1 = 2 * pp - high_price s2 = pp - high_price + low_price s3 = low_price - 2 * (high_price - pp) elif PP_FORMULA == 'woodie': pp = (high_price + low_price + 2 * close_price) / 4 r1 = pp + 0.5 * (high_price - low_price) r2 = pp + (high_price - low_price) r3 = high_price + 2 * (pp - low_price) s1 = pp - 0.5 * (high_price - low_price) s2 = pp - (high_price - low_price) s3 = low_price - 2 * (high_price - pp) elif PP_FORMULA == 'camarilla': pp = (high_price + low_price + close_price) / 3 r1 = close_price + 1.1 * (high_price - low_price) / 12 r2 = close_price + 1.1 * (high_price - low_price) / 6 r3 = close_price + 1.1 * (high_price - low_price) / 4 r4 = close_price + 1.1 * (high_price - low_price) / 2 s1 = close_price - 1.1 * (high_price - low_price) / 12 s2 = close_price - 1.1 * (high_price - low
This is a python code and this repo is for node telegram bot api
import os import logging import requests import time from datetime import datetime, timedelta from telegram.ext import Updater, CommandHandler, MessageHandler, Filters
設置日誌紀錄
logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO)
獲取 Bot Token 和 Chat ID,您需要將它們替換為您自己的值
BOT_TOKEN = os.environ.get('BOT_TOKEN') CHAT_ID = os.environ.get('CHAT_ID')
設置定時器的時間,這裡設置為每天下午 4 點
TIMER_HOUR = 16 TIMER_MINUTE = 0
設置股票代碼和 PP 計算方法
STOCK_CODE = 'AAPL' PP_FORMULA = 'classic'
設置查詢股票 OHLC 數據的 API URL
API_URL = 'https://www.alphavantage.co/query?function=TIME_SERIES_DAILY&symbol={}&apikey=YOUR_API_KEY'
創建一個 Updater 對象,並使用您的 Bot Token 初始化它
updater = Updater(BOT_TOKEN, use_context=True)
創建一個 Dispatcher 對象,並將 Updater 對象傳遞給它
dispatcher = updater.dispatcher
創建一個定時器,每天定時獲取股票 OHLC 數據和 PP 數據
def daily_timer(context):
獲取當前時間和昨天的日期