File size: 1,136 Bytes
bfa4e15
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import numpy as np
from sklearn.ensemble import RandomForestClassifier
from sklearn.preprocessing import StandardScaler

def prepare_features(df):
    """Prepare features for prediction model"""
    features = df[['RSI', 'MACD', 'MACD_Signal', 'MACD_Hist']].copy()
    features['SMA_Ratio'] = df['SMA_20'] / df['SMA_50']
    features['Price_Change'] = df['Close'].pct_change()
    features['Volatility'] = df['Close'].rolling(window=20).std()
    
    return features.dropna()

def predict_movement(df, lookback_period=30):
    """Predict price movement for next 30 minutes"""
    features = prepare_features(df)
    if len(features) < lookback_period:
        return None, None
    
    # Prepare training data
    X = features[:-1].values
    y = (df['Close'].shift(-1) > df['Close'])[:-1].values
    
    # Train model
    model = RandomForestClassifier(n_estimators=100, random_state=42)
    model.fit(X, y)
    
    # Make prediction
    latest_features = features.iloc[-1:].values
    prediction = model.predict(latest_features)[0]
    probability = model.predict_proba(latest_features)[0]
    
    return prediction, probability