VinpolarX commited on
Commit
16b228d
·
verified ·
1 Parent(s): 09535a8

Update engine.cpp

Browse files
Files changed (1) hide show
  1. 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 calculate_momentum(double* prices, int size) {
8
- if (size < 2) return 0.0;
9
- double first = prices[0];
10
- double last = prices[size - 1];
11
- return ((last - first) / first) * 100.0;
 
 
 
 
 
12
  }
13
 
14
- // خوارزمية التوقع الأساسية
15
- int get_signal(double rsi, double momentum) {
16
- if (rsi < 30 && momentum > 0) return 1; // إشارة شراء قوية
17
- if (rsi > 70 && momentum < 0) return -1; // إشارة بيع قوية
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
  }