### محدودیتها
+ **محدودیت زمان:** ۱ ثانیه
+ **محدودیت حافظه:** ۲۵۶ مگابایت
# شبیهسازی استراتژی معاملاتی مبتنی بر میانگین متحرک
مدیر تیم تحلیل مالی تصمیم گرفته است تا یک **استراتژی معاملاتی مبتنی بر میانگین متحرک** را بر روی دادههای سهام **TechX** شبیهسازی کند. این استراتژی بر اساس دو شاخص میانگین متحرک پیادهسازی میشود:
+ **میانگین متحرک کوتاهمدت (۵ روزه - 5-SMA):**
این شاخص با محاسبه میانگین قیمت بسته طی **۵ روز متوالی**، نوسانات کوتاهمدت را نشان میدهد.
+ **میانگین متحرک بلندمدت (۲۰ روزه - 20-SMA):**
این شاخص روند کلی قیمتها را در یک بازه زمانی **طولانیتر** مشخص میکند.
## قوانین استراتژی
۱. **سیگنال خرید:**
اگر در یک روز، میانگین متحرک ۵ روزه از **پایین به بالای** میانگین متحرک ۲۰ روزه عبور کند، **سیگنال خرید** صادر میشود.
یعنی:
۲. **سیگنال فروش:**
اگر در یک روز، میانگین متحرک ۵ روزه از **بالای میانگین متحرک ۲۰ روزه به زیر آن** برگردد، **سیگنال فروش** صادر میشود.
یعنی:
## جزئیات شبیهسازی
+ سرمایه اولیه: **۱۰,۰۰۰ دلار**
+ هنگام دریافت **سیگنال خرید** (و اگر موقعیتی باز نباشد)، کل سرمایه به قیمت بستهی همان روز **خریداری** میشود.
+ هنگام دریافت **سیگنال فروش** (و اگر موقعیتی باز باشد)، تمام سهمها به قیمت بسته همان روز **فروخته** میشوند.
+ در پایان دوره، اگر هنوز موقعیتی باز باقی مانده باشد، **سهمهای باقیمانده با آخرین قیمت بسته نقد میشوند**.
+ خروجی نهایی، **ارزش نهایی پرتفوی** است که باید **با دقت دو رقم اعشار** نمایش داده شود.
## فرمت ورودی
ورودی از طریق **`STDIN`** دریافت میشود.
+ خط اول شامل **عنوان (header)** دادههای CSV است.
+ هر خط بعدی شامل **پنج فیلد** به ترتیب زیر است:
| ستون | توضیح |
| ------- | ------------------------ |
| `Date` | تاریخ (فرمت: YYYY-MM-DD) |
| `Open` | قیمت باز شدن |
| `High` | بیشترین قیمت روز |
| `Low` | کمترین قیمت روز |
| `Close` | قیمت بسته شدن |
## فرمت خروجی
خروجی شامل **یک عدد** است که نشاندهنده **ارزش نهایی پرتفوی (به دلار)** است. این مقدار باید **با دقت دو رقم اعشار** نمایش داده شود.
## مثال
### **ورودی نمونه**
در ابتدا از کاربر خواسته میشود که تعداد سطرها را وارد کند:
```
21
```
سپس 21 سطر داده به شکل زیر وارد میشود:
```
2025-01-01,55,55,55,55
2025-01-02,55,55,55,55
2025-01-03,55,55,55,55
2025-01-04,55,55,55,55
2025-01-05,55,55,55,55
2025-01-06,55,55,55,55
2025-01-07,55,55,55,55
2025-01-08,55,55,55,55
2025-01-09,55,55,55,55
2025-01-10,55,55,55,55
2025-01-11,55,55,55,55
2025-01-12,55,55,55,55
2025-01-13,55,55,55,55
2025-01-14,55,55,55,55
2025-01-15,45,45,45,45
2025-01-16,45,45,45,45
2025-01-17,45,45,45,45
2025-01-18,45,45,45,45
2025-01-19,45,45,45,45
2025-01-20,100,100,100,100
2025-01-21,30,30,30,30
```
### **توضیح نمونه**
#### **محاسبه میانگین متحرک**
##### **روز ۱۹ (۲۰۲۵-۰۱-۱۹)**
+ 5-SMA = **(45+45+45+45+45) / 5 = 45**
+ 20-SMA ≈ **52.37**
+ چون **5-SMA < 20-SMA** → **هیچ سیگنال خریدی صادر نمیشود**.
##### **روز ۲۰ (۲۰۲۵-۰۱-۲۰)**
+ 5-SMA = **(45+45+45+45+100) / 5 = 56**
+ 20-SMA = **54.75**
+ چون **5-SMA** از **20-SMA** **عبور کرده است** → **سیگنال خرید** صادر میشود.
+ با ۱۰,۰۰۰ دلار و قیمت بسته ۱۰۰ دلار، تعداد سهم خریداری شده:
```
10,000 / 100 = 100 سهم
```
##### **روز ۲۱ (۲۰۲۵-۰۱-۲۱)**
+ 5-SMA = **(45+45+45+100+30) / 5 = 53**
+ 20-SMA ≈ **53.57**
+ چون **5-SMA < 20-SMA** → **سیگنال فروش** صادر میشود.
+ با فروش ۱۰۰ سهم به قیمت بسته ۳۰ دلار، سرمایه نهایی:
```
100 × 30 = 3,000 دلار
```
### **خروجی نمونه**
```
3000.00
```