alpacahq / alpacahq/alpaca-py

تداول

Aperta
#662 1 commento 0 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
Python
Stelle
1.5k
Fork
398
Merge medio
1g 16h
PR unite (30g)
6

Descrizione

pip install alpaca-py pandas yfinance pandas_ta
import alpaca_trade_api as tradeapi
import yfinance as yf
import pandas as pd
import pandas_ta as ta
import time
from datetime import datetime

# إعداد Alpaca (استخدم Paper Trading أولاً)
API_KEY = 'YOUR_API_KEY'
API_SECRET = 'YOUR_API_SECRET'
BASE_URL = 'https://paper-api.alpaca.markets' # غيرها إلى live عند الجاهزية

api = tradeapi.REST(API_KEY, API_SECRET, BASE_URL, api_version='v2')

def get_penny_stocks():
# قائمة أسهم ناسداك رخيصة (يمكن توسيعها بـ scanner)
tickers = ['AAPL', 'TSLA', 'AMD'] # استبدل بقائمة حقيقية من scanner مثل Finviz أو Polygon
penny = []
for t in tickers:
try:
info = yf.Ticker(t).info
if info.get('regularMarketPrice', 100) < 5 and info.get('volume', 0) > 500000:
penny.append(t)
except:
pass
return penny

def should_buy(ticker):
data = yf.download(ticker, period='5d', interval='1m')
if len(data) < 50:
return False

data['RSI'] = ta.rsi(data['Close'], length=14)
data['Volume_MA'] = data['Volume'].rolling(20).mean()

latest = data.iloc[-1]
prev = data.iloc[-2]

# شرط بسيط: RSI منخفض + حجم مرتفع + ارتفاع سعر
if (latest['RSI'] < 35 and
latest['Volume'] > latest['Volume_MA'] * 1.5 and
latest['Close'] > prev['Close']):
return True
return False

def trading_bot():
print(f"تشغيل البوت في: {datetime.now()}")
pennies = get_penny_stocks()

for ticker in pennies:
if should_buy(ticker):
try:
# تحقق من الرصيد واشترِ (مثال: 100 سهم أو حسب رأس المال)
api.submit_order(
symbol=ticker,
qty=100,
side='buy',
type='market',
time_in_force='gtc'
)
print(f"تم شراء {ticker}")
except Exception as e:
print(f"خطأ في {ticker}: {e}")

# تشغيل البوت كل 5 دقائق (في حلقة)
while True:
trading_bot()
time.sleep(300) # 5 دقائق

Guida per i contributori

Apri la guida per i contributori

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.