- محدودیت زمان: ۱ ثانیه
- محدودیت حافظه: ۲۵۶ مگابایت
به تازگی به شرکتی فعال در حوزه بورس پیوستید! تیم معاملات نزد شما میآیند و از شما میخواهند باری از دوش این تیم بردارید. بعد از مدتی جستوجو و جلسات متوجه میشوید یکی از بیشترین معاملاتی که انجام میدهند، خرید سهم بر اساس قیاس «میانگین متحرک کوتاه و بلند» است.
میانگین متحرک کوتاه که در مقیاسهای بزرگ معمولاً ۵۰ روزه است، یکی از قابل اطمینانترین نشانگرهای فنی است که معمولا سرمایهگذاران برای تشخیص رشد و پیشرفت سهام به آن رجوع میکنند. این میانگین، ضعف یا قدرت یک سهام بسته به قیمت فعلیاش را نشان میدهد.
میانگین متحرک بلند که در مقیاسهای بزرگ معمولاً ۲۰۰ روزه است، معمولا نمایانگر حرکت سهام در درازمدت (۴۰ هفته) است که میتواند رو به بالا یا روبه پایین باشد، همچنین از این میانگین میتوان نقاط دارای حمایت یا مقاومت را تشخیص داد.
شما تصمیم میگیرید این موضوع را خودکار کنید. گروه معاملات از شما میخواهد این دستورات را دنبال کنید و سپس گزارش عملکرد روبات خرید و فروش خودکار خود را (سود و زیان) اعلام کنید.
قوانین کلی:
- وقتی میانگین متحرک کوتاه اکیداً بزرگتر از میانگین متحرک بلند شد، $n$ سهم خریداری کن.
- وقتی میانگین متحرک کوتاه اکیداً کمتر از میانگین متحرک بلند شد، $n$ سهم بفروش.
- اگر پس از پایان روزی بر روی خرید خود بیشتر از $T$ درصد سود داشتیم، $n$ سهم را بفروش و از بازار خارج بشو.
- اگر پس از پایان روزی بر روی خرید خود بیشتر از $S$ درصد ضرر کردیم، $n$ سهم را بفروش و از بازار خارج بشو.
- موارد بالا را با دو روش $H$ و $ \frac {OHLC}{4}$ انجام و نتیجه را در خروجی چاپ کن.
قوانین جزئی:
- وقتی خرید انجام شد، دیگر سهمی نباید در بازار خریداری شود تا زمانی که فروش انجام گردد.
- وقتی فروش انجام شد، مجددا خرید آزاد میشود.
- ممکن است در اطلاعات دریافتی چند بار عملیات خرید و فروش انجام شود.
- تمام روزها دارای قیمت هستند. هیچ روز تعطیلی وجود ندارد.
- اگر در آخرین روز معاملات (آخرین داده ورودی) هنوز سهم خریداری شده وجود دارد ولی فروش انجام نشده است، باید فروش انجام پذیرد.
- اگر به یکی از دلایل دریافت سود با $T$ درصد یا جلوگیری از ضرر با $S$ درصد فروش انجام شد، دیگر خرید و فروش دیگری تا انتهای مقادیر ورودی نباید انجام بپذیرد.
- قیمت خرید و فروش در هر روز بسته به روش متفاوت است. برای مثال، قیمت خرید و فروش یک روز در حالت $H$ برابر با مقدار $H$ در آن روز و قیمت خرید و فروش در حالت $ \frac {OHLC}{4}$ برابر با مقدار $ \frac {OHLC}{4}$ در آن روز است.
- میانگین متحرک تنها برای روزهایی محاسبه میگردد که تعداد روزهای سپری شده، کمتر از بازهی میانگین متحرک نباشد. برای مثال اگر بازهی میانگین متحرک ۴ روزه باشد، میانگین متحرک برای روزهای ۴ به بعد محاسبه میگردد و در ۳ روز نخست، معاملهای صورت نمیگیرد.
نکته:
میانگین متحرک ساده هر روز از چندین فرمول بدست میآید که با یکدیگر تفاوت دارند، اما در این سوال ما از دو روش آن را حساب میکنیم:
- در روش نخست فقط بالاترین قیمت معاملاتی روز را مدنظر قرار میدهیم، این قیمت با نشان $H$ در ورودی قابل دریافت است.
- روش دوم، میانگین $ \frac {OHLC}{4}$ است. به این ترتیب که برای محاسبه میانگین آن روز، فرمول زیر صدق میکند: $$ \frac {O + H + L + C}{4}$$
ورودی
در پنج خط اول ورودی، به ترتیب اعداد $n$ و $SMA$ و $LMA$ و $S$ و $T$ آمده است. در خط ششم عدد $d$ آمده است که نشاندهندهی تعداد روزهای پیشرو است و در خط $i$اُم پس از آن نیز به ترتیب مقادیر $O, H, L, C$ برای روز $i$اُم آمده است. $$1 \leq n \leq 10\ 000$$ $$1 \leq SMA, LMA \leq 200$$ $$SMA \leq LMA$$ $$0.1 \leq S, T \leq 100$$ $$1 \leq d \leq 10\ 000$$ $$0.1 \leq O, H, L, C \leq 15\ 000$$
توضیحات ورودی:
نماد | توضیحات |
---|---|
O | قیمت سهم در زمانی که بازار باز شده است. |
H | بالاترین قیمت معامله انجام شده در روز |
L | پایینترین قیمت معامله انجام شده در روز |
C | قیمت آخرین معامله انجام شده روز |
T | میزان درصد سودی که به محض رسیدن به آن باید از بازار خارج شوید |
S | میزان درصد ضرری که به محض رسیدن به آن باید از بازار خارج شوید |
SMA | تعداد روزهایی است که باید با آن میانگین متحرک کوتاه را محاسبه کنید |
LMA | تعداد روزهایی است که باید با آن میانگین متحرک بلند را محاسبه کنید |
- نکته: مقادیر $OHLC$ با کاراکتر فاصله از یکدیگر جدا شدهاند.
- نکته: تمامی ردیفها به ترتیب زمانی از کم به زیاد در اختیار شما قرار خواهند گرفت.
خروجی
در دو خط خروجی، دو روش را چاپ کنید.
در پارامتر اول هر خط، کد خروجی را مطابق جدول زیر وارد کنید و سپس بعد از کاراکتر فاصله مبلغ سود یا زیان را وارد کنید.
جدول کدها:
کد | معنی |
---|---|
A | خرید و فروش به روش $ \frac {OHLC}{4}$ تا انتها بدون توقف سود و ضرر انجام شده است. |
AT | روبات در روش $ \frac {OHLC}{4}$ با دریافت سود متوقف شده است. |
AS | روبات در روش $ \frac {OHLC}{4}$ با توقف ضرر متوقف شده است. |
B | خرید و فروش به روش H تا انتها بدون توقف سود و ضرر انجام شده است. |
BT | روبات در روش H با دریافت سود متوقف شده است. |
BS | روبات در روش H با توقف ضرر متوقف شده است. |
برای نمایش اعداد خروجی، دو عدد اعشاری شامل میزان سود یا ضرر با دو رقم اعشار نشان دهید. برای اعداد صحیح هم از دو رقم $00$ برای نمایش اعشار استفاده کنید. همچنین برای نمایش ضرر از عدد منفی استفاده کنید.
مثال
ورودی نمونه ۱
5
2
4
0.1
2
10
20.0 40.0 10.0 30.0
31.0 52.0 20.0 42.0
11.0 21.0 5.0 19.0
12.0 15.0 11.0 13.0
13.0 27.0 2.0 18.0
12.0 13.0 10.0 13.0
4.0 17.0 2.0 5.0
4.0 15.0 2.0 5.0
5.0 6.0 5.0 6.0
6.0 8.0 6.0 8.0
خروجی نمونه ۱
AS -25.00
BT 20.00
در مثال داده شده، ربات در الگوریتمهای گفته شده به صورت زیر عمل میکند:
روش $ \frac {OHLC}{4}$: در روز ۶ با قیمت $\frac{12 + 13 + 10 + 13}{4}$ میخرد و در روز ۷ به علت ضرر بیش از $S$ درصد با قیمت $\frac{4+17+2+5}{4}$ میفروشد و از بازار خارج میشود.
روش $H$: در روز ۶ با قیمت ۱۳ میخرد و در روز ۷ با قیمت ۱۷ به علت سود بیش از $T$ درصد میفروشد.
ورودی نمونه ۲
200
2
4
0.4
5
8
6675.978 6677.458 6675.978 6677.357
6677.397 6678.334 6677.397 6677.735
6676.579 6678.42 6676.579 6677.834
6676.43 6680.03 6676.43 6679.762
6678.962 6680.106 6678.791 6679.898
6676.951 6679.348 6675.723 6678.108
6679.29 6680.403 6679.06 6680.031
6678.836 6679.646 6678.626 6679.377
خروجی نمونه ۲
A 306.60
B 74.60
ارسال پاسخ برای این سؤال