Untitled
unknown
plain_text
2 years ago
6.4 kB
129
Indexable
import ccxt
import discord
from discord.ext import commands
import asyncio
from datetime import datetime, timedelta
from robin_stocks.robinhood.helper import *
from robin_stocks.robinhood.urls import *
from robin_stocks.robinhood.authentication import login # Import the login function from Robinhood
import pytz # Import pytz for timezone manipulation
intents = discord.Intents.default() # Enable the default intents
# Enable necessary intents
intents.messages = True
intents.guilds = True
intents.message_content = True # Enable message content intent
intents.typing = False # Disable typing events to reduce load
intents.presences = False # Disable presence events to reduce load
# Initialize Discord bot
bot = commands.Bot(command_prefix='!', intents=intents)
# Add your Discord channel ID
YOUR_CHANNEL_ID = id goes here
# Initialize exchange (Gemini)
exchange = ccxt.gemini()
# Function to check market conditions and send alerts
async def check_market_conditions():
# Specify cryptocurrency to monitor
crypto_symbol = 'BTC/USDT'
# Fetch recent market data for crypto
crypto_ticker = exchange.fetch_ticker(crypto_symbol)
# Example: Check if the current price is below a certain threshold to trigger a buy alert for crypto
if crypto_ticker['last'] < 50000:
crypto_buy_alert_message = f"🟢 Good time to buy {crypto_symbol}! Current price: {crypto_ticker['last']} USDT"
await bot.get_channel(YOUR_CHANNEL_ID).send(crypto_buy_alert_message)
# Example: Check if the current price is above a certain threshold to trigger a sell alert for crypto
if crypto_ticker['last'] > 60000:
crypto_sell_alert_message = f"🔴 Good time to sell {crypto_symbol}! Current price: {crypto_ticker['last']} USDT"
await bot.get_channel(YOUR_CHANNEL_ID).send(crypto_sell_alert_message)
# Check for options with confidence threshold of 0.05
option_data = find_options_by_specific_profitability(crypto_symbol, typeProfit="chance_of_profit_short", profitFloor=0.05)
if option_data:
for option in option_data:
message = f"⚠️ Option Alert: Symbol: {option['symbol']}, Expiry: {option['expiration_date']}, Strike Price: {option['strike_price']}, Type: {option['type']}, Chance of Profit: {option['chance_of_profit_short']}"
if float(option['chance_of_profit_short']) > 0.73:
message += " 🚀" # Add rocket emoji for options with above 73% profit prediction
await bot.get_channel(YOUR_CHANNEL_ID).send(message)
# Check if the value of the call exceeds its entry price
if option['type'] == 'call':
entry_price = float(option['average_open_price'])
current_price = float(option['adjusted_mark_price'])
if current_price > entry_price:
call_alert_message = f"🚀 Alert: Value of call option exceeds entry price! Symbol: {option['symbol']}, Expiry: {option['expiration_date']}, Strike Price: {option['strike_price']}, Entry Price: {entry_price}, Current Price: {current_price}"
await bot.get_channel(YOUR_CHANNEL_ID).send(call_alert_message)
# Check for options expiring within one or two days for crypto
for days in range(1, 3):
expiration_date = (datetime.now() + timedelta(days=days)).strftime('%Y-%m-%d')
option_data = find_tradable_options(crypto_symbol, expirationDate=expiration_date)
if option_data:
for option in option_data:
message = f"⚠️ Option Alert: Symbol: {option['symbol']}, Expiry: {option['expiration_date']}, Strike Price: {option['strike_price']}, Type: {option['type']}"
await bot.get_channel(YOUR_CHANNEL_ID).send(message)
# Fetch recent market data for stocks
stock_symbol = 'BTC/USDT' # Example stock symbol
stock_ticker = exchange.fetch_ticker(stock_symbol)
# Example: Check if the current price is below a certain threshold to trigger a buy alert for stocks
if stock_ticker['last'] < 150:
stock_buy_alert_message = f"🟢 Good time to buy {stock_symbol}! Current price: {stock_ticker['last']}"
await bot.get_channel(YOUR_CHANNEL_ID).send(stock_buy_alert_message)
# Example: Check if the current price is above a certain threshold to trigger a sell alert for stocks
if stock_ticker['last'] > 200:
stock_sell_alert_message = f"🔴 Good time to sell {stock_symbol}! Current price: {stock_ticker['last']}"
await bot.get_channel(YOUR_CHANNEL_ID).send(stock_sell_alert_message)
# Function to send daily market analysis and sentiment message
async def send_daily_market_analysis():
# Send market analysis and sentiment message every morning at 8 AM Eastern Time
eastern = pytz.timezone('US/Eastern')
current_time = datetime.now(eastern)
morning_time = current_time.replace(hour=8, minute=0, second=0, microsecond=0)
if current_time < morning_time:
delta = morning_time - current_time
await asyncio.sleep(delta.seconds)
await bot.get_channel(YOUR_CHANNEL_ID).send("🌞 Good morning! Here's today's market analysis and sentiment:")
await check_market_conditions()
# Command to start monitoring market conditions
@bot.command()
async def start_alerts():
while True:
await check_market_conditions()
await asyncio.sleep(3600) # Check every hour (adjust as needed)
# Command to start sending daily market analysis
@bot.command()
async def start_daily_analysis(ctx):
while True:
await send_daily_market_analysis()
await asyncio.sleep(86400) # Check every day (adjust as needed)
# Robinhood credentials
USERNAME = 'email here'
PASSWORD = 'password here'
# Login to Robinhood
login(username=USERNAME, password=PASSWORD)
# Run the bot
bot.run('token goes here ')Editor is loading...