yagop / node-telegram-bot-api

Telegram Bot API for NodeJS
MIT License
8.35k stars 1.52k forks source link

Smart DayTrader Bot #1086

Closed Kenwan0502 closed 1 year ago

Kenwan0502 commented 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 和 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 = 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
danielperez9430 commented 1 year ago

This is a python code and this repo is for node telegram bot api