Spaces:
Runtime error
Runtime error
Update engine.cpp
Browse files- engine.cpp +15 -11
engine.cpp
CHANGED
|
@@ -1,20 +1,24 @@
|
|
| 1 |
#include <iostream>
|
| 2 |
#include <vector>
|
| 3 |
-
#include <numeric>
|
| 4 |
|
| 5 |
extern "C" {
|
| 6 |
-
//
|
| 7 |
-
double
|
| 8 |
-
if (size <
|
| 9 |
-
double
|
| 10 |
-
|
| 11 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 12 |
}
|
| 13 |
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
if (rsi < 30 &&
|
| 17 |
-
if (rsi > 70 &&
|
| 18 |
return 0; // انتظار
|
| 19 |
}
|
| 20 |
}
|
|
|
|
| 1 |
#include <iostream>
|
| 2 |
#include <vector>
|
|
|
|
| 3 |
|
| 4 |
extern "C" {
|
| 5 |
+
// حساب RSI بلغة C++ (أسرع بـ 100 مرة من بايثون)
|
| 6 |
+
double calculate_rsi(double* prices, int size) {
|
| 7 |
+
if (size <= 14) return 50.0;
|
| 8 |
+
double gains = 0, losses = 0;
|
| 9 |
+
for (int i = 1; i <= 14; i++) {
|
| 10 |
+
double diff = prices[size-i] - prices[size-i-1];
|
| 11 |
+
if (diff > 0) gains += diff; else losses -= diff;
|
| 12 |
+
}
|
| 13 |
+
if (losses == 0) return 100.0;
|
| 14 |
+
double rs = (gains / 14.0) / (losses / 14.0);
|
| 15 |
+
return 100.0 - (100.0 / (100.0 + rs));
|
| 16 |
}
|
| 17 |
|
| 18 |
+
int get_signal(double rsi, double current, double open) {
|
| 19 |
+
double change = ((current - open) / open) * 100.0;
|
| 20 |
+
if (rsi < 30 && change > 0) return 1; // شراء
|
| 21 |
+
if (rsi > 70 && change < 0) return -1; // بيع
|
| 22 |
return 0; // انتظار
|
| 23 |
}
|
| 24 |
}
|