Alibarzegar commited on
Commit
50650e5
·
verified ·
1 Parent(s): f0a90ee

Upload 7 files

Browse files
Files changed (7) hide show
  1. README.md +1 -29
  2. __init__.py +0 -0
  3. config.py +16 -0
  4. demo_executor.py +15 -0
  5. risk.py +14 -0
  6. sample_prices.csv +301 -0
  7. technical.py +12 -0
README.md CHANGED
@@ -1,29 +1 @@
1
- # ابر انسان معامله‌گر — Ali_5_17
2
-
3
- این نسخه‌ی اولیه‌ی سایت (Streamlit) به‌عنوان «اتاق فرمان» پروژه است.
4
-
5
- ## امکانات الان
6
- - داشبورد ساده با نمایش Project ID و درصد پیشرفت
7
- - بارگذاری/نمایش گزارش‌ها (TXT/PDF)
8
- - تولید سیگنال نمونه با میانگین متحرک روی داده‌ی نمونه
9
- - نوار وضعیت و تایمر شمارش معکوس فاز ۱
10
-
11
- ## چطور رایگان دیپلوی کنیم (Streamlit Cloud)
12
- 1. یک اکانت رایگان بساز: https://streamlit.io/cloud
13
- 2. این پوشه را به یک ریپازیتوری جدید روی GitHub آپلود کن (از موبایل هم می‌شود).
14
- 3. در Streamlit Cloud یک اپ جدید بساز و ریپازیتوری را انتخاب کن.
15
- 4. فایل اصلی را `app.py` بگذار. بقیه کارها خودکار است.
16
-
17
- ### HuggingFace Spaces (اختیاری)
18
- 1. اکانت رایگان در https://huggingface.co
19
- 2. یک Space از نوع **Streamlit** بساز.
20
- 3. کل پوشه را آپلود کن. تمام.
21
-
22
- ## تنظیمات
23
- - Project ID: `Ali_5_17` در `supertrader/config.py` ثبت شده.
24
- - برای اتصال دمو در آینده، کلیدهای دمو را در همین فایل (یا به‌صورت Secret در پلتفرم) اضافه می‌کنیم.
25
-
26
- ## نیازمندی‌ها
27
- ```
28
- pip install -r requirements.txt
29
- ```
 
1
+ گزارش‌های تولیدی اینجا قرار می‌گیرند.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
__init__.py ADDED
File without changes
config.py ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # -*- coding: utf-8 -*-
2
+ # تنظیمات پایه پروژه
3
+
4
+ PROJECT_ID = "Ali_5_17"
5
+
6
+ # درصد پیشرفت فاز ۱ (قابل ویرایش در هر زمان)
7
+ PHASE1_PROGRESS = 40
8
+
9
+ # تاریخ تقریبی پایان فاز ۱ (قابل تغییر)
10
+ PHASE1_DEADLINE = "2025-09-12"
11
+
12
+ # پرچم‌های فیچر
13
+ FEATURES = {
14
+ "demo_mode_planned": True, # در فاز ۲ اجرا می‌شود
15
+ "auto_reports": True
16
+ }
demo_executor.py ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # -*- coding: utf-8 -*-
2
+ # این فایل بعداً برای اتصال به حساب دمو (MT4/MT5 یا Testnet) تکمیل می‌شود.
3
+ # فعلاً فقط اسکلت کار را نگه می‌داریم.
4
+ class DemoExecutor:
5
+ def __init__(self):
6
+ self.enabled = False
7
+
8
+ def enable(self):
9
+ self.enabled = True
10
+
11
+ def place_order(self, symbol: str, side: str, size: float, price: float = None):
12
+ if not self.enabled:
13
+ return { "ok": False, "msg": "demo executor disabled" }
14
+ # در نسخه دمو، فقط لاگ می‌کنیم
15
+ return { "ok": True, "msg": f"Placed demo order: {side} {size} {symbol} @ {price}" }
risk.py ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # -*- coding: utf-8 -*-
2
+ def position_size(balance: float, risk_pct: float, stop_pips: float, pip_value: float = 10.0):
3
+ """
4
+ محاسبه حجم پوزیشن ساده بر اساس ریسک درصدی.
5
+ balance: موجودی
6
+ risk_pct: درصد ریسک (مثلاً 1 = یک درصد)
7
+ stop_pips: فاصله استاپ‌لاس
8
+ pip_value: ارزش هر پیپ (برای نمونه)
9
+ """
10
+ risk_amount = balance * (risk_pct / 100.0)
11
+ if stop_pips <= 0:
12
+ return 0.0
13
+ units = risk_amount / (stop_pips * pip_value)
14
+ return max(units, 0.0)
sample_prices.csv ADDED
@@ -0,0 +1,301 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ close
2
+ 101.62434536366324
3
+ 101.01258895001317
4
+ 100.4844171977497
5
+ 99.41144857559354
6
+ 100.27685620491822
7
+ 97.97531750803793
8
+ 99.72012927225441
9
+ 98.95892237135931
10
+ 99.27796146741642
11
+ 99.028591091939
12
+ 100.49069902898398
13
+ 98.43055831948632
14
+ 98.10814111547282
15
+ 97.7240867608044
16
+ 98.85785620313983
17
+ 97.75796493582581
18
+ 97.58553672827537
19
+ 96.707678310354
20
+ 96.74989205706959
21
+ 97.33270727078542
22
+ 96.23208809357249
23
+ 97.37681180341211
24
+ 98.2784025240049
25
+ 98.78089686290677
26
+ 99.68175281217118
27
+ 98.99802495299684
28
+ 98.8751347274782
29
+ 97.93936529321913
30
+ 97.67147721359312
31
+ 98.20183268033131
32
+ 97.51017192860598
33
+ 97.11341840175001
34
+ 96.42624570163042
35
+ 95.5810400601317
36
+ 94.90979392929488
37
+ 94.89712933037598
38
+ 93.7798189817407
39
+ 94.01423467955779
40
+ 95.67403685666766
41
+ 96.41608101724499
42
+ 96.22424546488338
43
+ 95.33661650079854
44
+ 94.58945820704771
45
+ 96.28191280807545
46
+ 96.33272056285148
47
+ 95.69572491628213
48
+ 95.8866404009496
49
+ 97.98689553742844
50
+ 98.10705448991007
51
+ 98.72425759961749
52
+ 99.02442791957331
53
+ 98.67217807307979
54
+ 97.52965987505766
55
+ 97.18031715264478
56
+ 96.97142291927
57
+ 97.5580461104522
58
+ 98.3970295243267
59
+ 99.32813160563026
60
+ 99.61371893088452
61
+ 100.49886009515525
62
+ 99.7444621541586
63
+ 100.99733030939188
64
+ 101.5102601298099
65
+ 101.21216729470717
66
+ 101.70068544124467
67
+ 101.62511372822361
68
+ 102.75674311567504
69
+ 104.27655993209724
70
+ 106.4621353386304
71
+ 105.06563900314227
72
+ 103.62152519771267
73
+ 103.11705933476622
74
+ 103.27709640421405
75
+ 104.15326532533028
76
+ 104.46890027257189
77
+ 102.44669905674789
78
+ 102.1404950441195
79
+ 102.96846968672676
80
+ 103.19856442209114
81
+ 103.96057560240317
82
+ 103.7382474597928
83
+ 103.5374893908628
84
+ 103.72405078185109
85
+ 104.13410242905935
86
+ 104.33240214918612
87
+ 104.45141079499358
88
+ 103.78074850870455
89
+ 104.15831229502547
90
+ 104.2801335660169
91
+ 105.40961747392882
92
+ 106.60853535383033
93
+ 106.79369177131427
94
+ 106.41840682122415
95
+ 105.77967641376993
96
+ 106.20317076783405
97
+ 106.28051083618261
98
+ 105.93665716061153
99
+ 105.98025401744579
100
+ 105.36025317349765
101
+ 106.05828520756987
102
+ 105.61115664278387
103
+ 106.83566434758937
104
+ 107.23915598938017
105
+ 107.83273451261724
106
+ 106.7378226668762
107
+ 106.90720509993486
108
+ 107.64776155103114
109
+ 106.6940609492232
110
+ 106.42784244321957
111
+ 106.46045698991294
112
+ 105.08733966966618
113
+ 105.40249906170847
114
+ 106.2486597092935
115
+ 105.38914376846152
116
+ 105.73968974712562
117
+ 104.4274063358882
118
+ 104.38871082662214
119
+ 102.77293847191885
120
+ 103.89435618015452
121
+ 104.30325671809135
122
+ 104.27863976221556
123
+ 103.50347814304641
124
+ 104.77723407320518
125
+ 106.74433582245992
126
+ 104.88635395801316
127
+ 106.12251798846599
128
+ 107.75016874161489
129
+ 108.08818043818937
130
+ 106.88891240585419
131
+ 107.7522577233982
132
+ 107.57133742132005
133
+ 106.9674167935268
134
+ 105.73735865785983
135
+ 106.28789615383604
136
+ 107.08070301975539
137
+ 106.4571722900756
138
+ 106.97774862714897
139
+ 105.83340723752583
140
+ 106.63526826939717
141
+ 106.68183556782132
142
+ 106.49526579591397
143
+ 106.39351992338483
144
+ 107.26240608039069
145
+ 108.0128177202557
146
+ 108.54228304460841
147
+ 108.6799842546058
148
+ 108.7578053825185
149
+ 109.37618564451702
150
+ 109.60868020369577
151
+ 110.29123161056025
152
+ 109.98111483704218
153
+ 107.54627707293506
154
+ 108.58510167479447
155
+ 110.77208132176872
156
+ 111.21344576533731
157
+ 111.11329053205381
158
+ 110.97684578815777
159
+ 110.85779160038297
160
+ 110.87520100868296
161
+ 109.75318227993608
162
+ 109.23608782201585
163
+ 108.23906099436559
164
+ 108.48786015575337
165
+ 108.1912190033825
166
+ 108.68643032736045
167
+ 108.51172716761795
168
+ 109.4980623554392
169
+ 109.71159625677464
170
+ 111.90229598574437
171
+ 110.00593506285328
172
+ 109.35901837459838
173
+ 110.26050526624708
174
+ 112.78883097305348
175
+ 112.54019619533801
176
+ 112.58386518851641
177
+ 112.3575509460028
178
+ 113.68900805859039
179
+ 113.40170019511437
180
+ 114.08177003499247
181
+ 113.76196843609381
182
+ 112.48940968084781
183
+ 112.80295740131125
184
+ 113.30614221474657
185
+ 114.59936809727884
186
+ 114.48892107086152
187
+ 113.87155900714916
188
+ 114.43432010376819
189
+ 114.67505719600591
190
+ 114.95572227312856
191
+ 114.88260956938127
192
+ 116.04294813937504
193
+ 116.41244085575077
194
+ 118.31709956409175
195
+ 119.42815626265225
196
+ 120.08720605875246
197
+ 118.4597677181362
198
+ 119.06208699843184
199
+ 119.4823692020789
200
+ 120.29332087488245
201
+ 121.3377629695897
202
+ 120.93688477780077
203
+ 121.76089039625118
204
+ 121.1985849652321
205
+ 123.15346304024112
206
+ 121.82151137372388
207
+ 120.0608228133251
208
+ 118.410101547501
209
+ 117.51954596333795
210
+ 116.40043056477822
211
+ 118.35650946848186
212
+ 118.03000997040368
213
+ 116.68733418102624
214
+ 117.80171715780602
215
+ 117.21519321898444
216
+ 115.97833984244303
217
+ 116.85417877009235
218
+ 117.47754094667037
219
+ 117.04258426371514
220
+ 118.45012426395638
221
+ 118.5792258436671
222
+ 120.1961754425244
223
+ 120.6989163245243
224
+ 122.25772186514416
225
+ 122.3671245615696
226
+ 121.14738016459056
227
+ 123.59674881365196
228
+ 123.05097464566938
229
+ 122.85213678278049
230
+ 122.15173827785924
231
+ 121.94834382889468
232
+ 122.19101326997648
233
+ 122.39284344885047
234
+ 123.05386373644917
235
+ 124.84602194542474
236
+ 124.72555737363624
237
+ 123.4924366381898
238
+ 122.31011851168017
239
+ 121.64436399348105
240
+ 119.97016818586211
241
+ 120.79519801030109
242
+ 120.29698444667002
243
+ 119.98599946836717
244
+ 119.98410798552916
245
+ 118.58748756093372
246
+ 117.7261712001577
247
+ 118.40088272584566
248
+ 119.01942185663195
249
+ 118.57624992593131
250
+ 120.38678484005678
251
+ 119.08105791749904
252
+ 118.73607070734406
253
+ 118.50523096420858
254
+ 115.71214596406205
255
+ 117.64967477767811
256
+ 118.01600679221818
257
+ 116.9714174103104
258
+ 119.02259085316783
259
+ 119.60825285334022
260
+ 120.03777899336218
261
+ 119.43078059516213
262
+ 119.53700331919735
263
+ 118.011323002968
264
+ 118.80634909739284
265
+ 118.43191077854962
266
+ 118.56595897510424
267
+ 119.76801383730395
268
+ 120.052761948153
269
+ 120.31522939361628
270
+ 120.59172869843846
271
+ 119.85845709454314
272
+ 120.69446181397741
273
+ 122.2378209247819
274
+ 122.99662658487983
275
+ 123.88153539934471
276
+ 123.00425388042652
277
+ 122.1364666575536
278
+ 120.69559063326176
279
+ 121.9278437040902
280
+ 121.67366383648282
281
+ 123.0735077789638
282
+ 122.291596096277
283
+ 121.85408711344843
284
+ 121.94951220063967
285
+ 122.87096226929918
286
+ 122.9317124650987
287
+ 123.14283722010641
288
+ 123.15936478741203
289
+ 123.336552507688
290
+ 122.22008248980325
291
+ 122.30100959077652
292
+ 122.11443059726506
293
+ 122.0576061163792
294
+ 122.54994267231586
295
+ 121.86926453130697
296
+ 121.78475650390234
297
+ 121.48739462112883
298
+ 121.9046966261037
299
+ 122.68946727711929
300
+ 121.7340420147456
301
+ 122.3199524458482
technical.py ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # -*- coding: utf-8 -*-
2
+ import pandas as pd
3
+ import numpy as np
4
+
5
+ def sma_signal(df: pd.DataFrame, fast: int = 10, slow: int = 20):
6
+ df = df.copy()
7
+ df['sma_fast'] = df['close'].rolling(fast).mean()
8
+ df['sma_slow'] = df['close'].rolling(slow).mean()
9
+ df['signal'] = 0
10
+ df.loc[df['sma_fast'] > df['sma_slow'], 'signal'] = 1
11
+ df.loc[df['sma_fast'] < df['sma_slow'], 'signal'] = -1
12
+ return df[['close','sma_fast','sma_slow','signal']].dropna()