File size: 857 Bytes
6d00bc3
 
 
 
16b228d
 
 
 
 
 
 
 
 
 
 
6d00bc3
 
16b228d
 
 
 
6d00bc3
 
 
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
#include <iostream>
#include <vector>

extern "C" {
    // حساب RSI بلغة C++ (أسرع بـ 100 مرة من بايثون)
    double calculate_rsi(double* prices, int size) {
        if (size <= 14) return 50.0;
        double gains = 0, losses = 0;
        for (int i = 1; i <= 14; i++) {
            double diff = prices[size-i] - prices[size-i-1];
            if (diff > 0) gains += diff; else losses -= diff;
        }
        if (losses == 0) return 100.0;
        double rs = (gains / 14.0) / (losses / 14.0);
        return 100.0 - (100.0 / (100.0 + rs));
    }

    int get_signal(double rsi, double current, double open) {
        double change = ((current - open) / open) * 100.0;
        if (rsi < 30 && change > 0) return 1;  // شراء
        if (rsi > 70 && change < 0) return -1; // بيع
        return 0; // انتظار
    }
}