ربات معامله‌گر


  • محدودیت زمان: ۱ ثانیه
  • محدودیت حافظه: ۲۵۶ مگابایت

به تازگی به شرکتی فعال در حوزه بورس پیوستید! تیم معاملات نزد شما می‌آیند و از شما می‌خواهند باری از دوش این تیم بردارید. بعد از مدتی جست‌وجو و جلسات متوجه می‌شوید یکی از بیشترین معاملاتی که انجام می‌دهند، خرید سهم بر اساس قیاس «میانگین متحرک کوتاه و بلند» است.

میانگین متحرک کوتاه که در مقیاس‌های بزرگ معمولاً ۵۰ روزه است، یکی از قابل اطمینان‌ترین نشانگرهای فنی است که معمولا سرمایه‌گذاران برای تشخیص رشد و پیشرفت سهام به آن رجوع می‌کنند. این میانگین، ضعف یا قدرت یک سهام بسته به قیمت فعلی‌اش را نشان می‌دهد.

میانگین متحرک بلند که در مقیاس‌های بزرگ معمولاً ۲۰۰ روزه است، معمولا نمایانگر حرکت سهام در درازمدت (۴۰ هفته) است که می‌تواند رو به بالا یا روبه پایین باشد، همچنین از این میانگین می‌توان نقاط دارای حمایت یا مقاومت را تشخیص داد.

شما تصمیم می‌گیرید این موضوع را خودکار کنید. گروه معاملات از شما می‌خواهد این دستورات را دنبال کنید و سپس گزارش عملکرد روبات خرید و فروش خودکار خود را (سود و زیان) اعلام کنید.

قوانین کلی:

  1. وقتی میانگین متحرک کوتاه اکیداً بزرگ‌تر از میانگین متحرک بلند شد، nn سهم خریداری کن.
  2. وقتی میانگین متحرک کوتاه اکیداً کمتر از میانگین متحرک بلند شد، nn سهم بفروش.
  3. اگر پس از پایان روزی بر روی خرید خود بیشتر از TT درصد سود داشتیم، nn سهم را بفروش و از بازار خارج بشو.
  4. اگر پس از پایان روزی بر روی خرید خود بیشتر از SS درصد ضرر کردیم، nn سهم را بفروش و از بازار خارج بشو.
  5. موارد بالا را با دو روش HH و OHLC4 \frac {OHLC}{4} انجام و نتیجه را در خروجی چاپ کن.

قوانین جزئی:

  • وقتی خرید انجام شد، دیگر سهمی نباید در بازار خریداری شود تا زمانی که فروش انجام گردد.
  • وقتی فروش انجام شد، مجددا خرید آزاد می‌شود.
  • ممکن است در اطلاعات دریافتی چند بار عملیات خرید و فروش انجام شود.
  • تمام روزها دارای قیمت هستند. هیچ روز تعطیلی وجود ندارد.
  • اگر در آخرین روز معاملات (آخرین داده ورودی) هنوز سهم خریداری شده وجود دارد ولی فروش انجام نشده است، باید فروش انجام پذیرد.
  • اگر به یکی از دلایل دریافت سود با TT درصد یا جلوگیری از ضرر با SS درصد فروش انجام شد، دیگر خرید و فروش دیگری تا انتهای مقادیر ورودی نباید انجام بپذیرد.
  • قیمت خرید و فروش در هر روز بسته به روش متفاوت است. برای مثال، قیمت خرید و فروش یک روز در حالت HH برابر با مقدار HH در آن روز و قیمت خرید و فروش در حالت OHLC4 \frac {OHLC}{4} برابر با مقدار OHLC4 \frac {OHLC}{4} در آن روز است.
  • میانگین متحرک تنها برای روزهایی محاسبه می‌گردد که تعداد روزهای سپری شده، کمتر از بازه‌ی میانگین متحرک نباشد. برای مثال اگر بازه‌ی میانگین متحرک ۴ روزه باشد، میانگین متحرک برای روزهای ۴ به بعد محاسبه می‌گردد و در ۳ روز نخست، معامله‌ای صورت نمی‌گیرد.

نکته:

میانگین متحرک ساده هر روز از چندین فرمول بدست می‌آید که با یکدیگر تفاوت دارند، اما در این سوال ما از دو روش آن را حساب می‌کنیم:

  1. در روش نخست فقط بالاترین قیمت معاملاتی روز را مدنظر قرار می‌دهیم، این قیمت با نشان HH در ورودی قابل دریافت است.
  2. روش دوم، میانگین OHLC4 \frac {OHLC}{4} است. به این ترتیب که برای محاسبه میانگین آن روز، فرمول زیر صدق می‌کند:‌ O+H+L+C4 \frac {O + H + L + C}{4}

ورودی‌🔗

در پنج خط اول ورودی، به ترتیب اعداد nn و SMASMA و LMALMA و SS و TT آمده است. در خط ششم عدد dd آمده است که نشان‌دهنده‌ی تعداد روزهای پیش‌رو است و در خط iiاُم پس از آن نیز به ترتیب مقادیر O,H,L,CO, H, L, C برای روز iiاُم آمده است. 1n10 0001 \leq n \leq 10\ 000 1SMA,LMA2001 \leq SMA, LMA \leq 200 SMALMASMA \leq LMA 0.1S,T1000.1 \leq S, T \leq 100 1d10 0001 \leq d \leq 10\ 000 0.1O,H,L,C15 0000.1 \leq O, H, L, C \leq 15\ 000

توضیحات ورودی‌:

نماد توضیحات
O قیمت سهم در زمانی که بازار باز شده است.
H بالاترین قیمت معامله انجام شده در روز
L پایین‌ترین قیمت معامله انجام شده در روز
C قیمت آخرین معامله انجام شده روز
T میزان درصد سودی که به محض رسیدن به آن باید از بازار خارج شوید
S میزان درصد ضرری که به محض رسیدن به آن باید از بازار خارج شوید
SMA تعداد روزهایی است که باید با آن میانگین متحرک کوتاه را محاسبه کنید
LMA تعداد روزهایی است که باید با آن میانگین متحرک بلند را محاسبه کنید
  • نکته: مقادیر OHLCOHLC با کاراکتر فاصله از یکدیگر جدا شده‌اند.
  • نکته: تمامی ردیف‌ها به ترتیب زمانی از کم به زیاد در اختیار شما قرار خواهند گرفت.

خروجی‌🔗

در دو خط خروجی، دو روش را چاپ کنید.

در پارامتر اول هر خط، کد خروجی را مطابق جدول زیر وارد کنید و سپس بعد از کاراکتر فاصله مبلغ سود یا زیان را وارد کنید.

جدول کدها:

کد معنی
A خرید و فروش به روش OHLC4 \frac {OHLC}{4} تا انتها بدون توقف سود و ضرر انجام شده است.
AT روبات در روش OHLC4 \frac {OHLC}{4} با دریافت سود متوقف شده است.
AS روبات در روش OHLC4 \frac {OHLC}{4} با توقف ضرر متوقف شده است.
B خرید و فروش به روش H تا انتها بدون توقف سود و ضرر انجام شده است.
BT روبات در روش H با دریافت سود متوقف شده است.
BS روبات در روش H با توقف ضرر متوقف شده است.

برای نمایش اعداد خروجی، دو عدد اعشاری شامل میزان سود یا ضرر با دو رقم اعشار نشان دهید. برای اعداد صحیح هم از دو رقم 0000 برای نمایش اعشار استفاده کنید. همچنین برای نمایش ضرر از عدد منفی استفاده کنید.

ورودی نمونه ۱‍🔗

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
Plain text

خروجی نمونه ۱🔗

AS -25.00
BT 20.00
Plain text

در مثال داده شده، ربات در الگوریتم‌های گفته شده به صورت زیر عمل می‌کند:
روش OHLC4 \frac {OHLC}{4}: در روز ۶ با قیمت 12+13+10+134\frac{12 + 13 + 10 + 13}{4} می‌خرد و در روز ۷ به علت ضرر بیش از SS درصد با قیمت 4+17+2+54\frac{4+17+2+5}{4} می‌فروشد و از بازار خارج می‌شود.

روش HH: در روز ۶ با قیمت ۱۳ می‌خرد و در روز ۷ با قیمت ۱۷ به علت سود بیش از TT درصد می‌فروشد.

ورودی نمونه ۲🔗

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
Plain text

خروجی نمونه ۲🔗

A 306.60
B 74.60
Plain text