سوال هشت


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

سوال ۸: شبیه‌سازی استراتژی معاملاتی جامع با هزینه‌های تراکنش، لغزش قیمت و مدیریت ریسک پویا🔗

داستان: در این مرحله، تیم شما به بالاترین سطح چالش در دنیای معاملات الگوریتمی رسیده است. مدیر ارشد سرمایه‌گذاری خواسته است که استراتژی معاملاتی‌ای طراحی شود که تمامی شرایط واقعی بازار را در نظر بگیرد. در این استراتژی پیشرفته، علاوه بر استفاده از شاخص‌های فنی مانند میانگین متحرک ۱۰ روزه (SMA10) و شاخص قدرت نسبتی ۱۴ روزه (RSI)، هزینه‌های تراکنش، لغزش قیمت و مدیریت ریسک پویا نیز مد نظر قرار می‌گیرند.

قوانین استراتژی:

  • سیگنال خرید: در صورتی که هیچ موقعیتی باز نباشد و شرایط زیر برقرار باشد:

    • شاخص RSI کمتر از ۳۰
    • قیمت بسته روز جاری بالاتر از SMA10 باشد
  • مدیریت ریسک:

    • ریسک هر معامله حداکثر ۲٪ از سرمایه اولیه (۱۰,۰۰۰ دلار) محسوب می‌شود.
    • سطح استاپ‌لاس برابر با ۹۵٪ از قیمت خرید (با احتساب لغزش) در نظر گرفته می‌شود.
    • تعداد سهم خریداری‌شده به‌گونه‌ای تعیین می‌شود که ضرر احتمالی (تفاوت بین قیمت خرید و استاپ‌لاس به ازای هر سهم) برابر با ۲٪ از سرمایه اولیه باشد.
  • لغزش و هزینه تراکنش:

    • در زمان خرید، قیمت خرید با لغزش ۰.۲٪ افزایش می‌یابد.
    • هزینه تراکنش برابر با ۰.۱٪ از ارزش معامله از سرمایه کسر می‌شود.
  • سیگنال فروش: اگر موقعیتی باز باشد، دو حالت خروج وجود دارد:

    • فروش به دلیل تغییر روند: در صورتی که شاخص RSI بیش از ۷۰ شود.
    • فروش به دلیل استاپ‌لاس: اگر قیمت بسته روز جاری کمتر از ۹۵٪ از قیمت خرید (ثبت‌شده پس از لغزش خرید) شود. در زمان فروش (به جز فروش نهایی در پایان دوره)، قیمت فروش با لغزش ۰.۲٪ کاهش می‌یابد و هزینه تراکنش ۰.۱٪ از ارزش فروش کسر می‌شود.
  • پایان دوره معاملاتی: اگر موقعیتی باز باقی مانده باشد، آن را با آخرین قیمت بسته (بدون لغزش، اما با اعمال هزینه تراکنش) می‌فروشید.

هدف نهایی شبیه‌سازی، محاسبه ارزش نهایی پرتفوی (سرمایه نقدی نهایی) پس از اجرای تمام معاملات است. مقدار نهایی باید به دو رقم اعشار گرد شود.

فرمت ورودی🔗

ورودی از طریق STDIN دریافت می‌شود. سطر اول شامل عنوان (header) است و هر سطر بعدی شامل ۵ فیلد به ترتیب زیر می‌باشد:

Date,Open,High,Low,Close
Plain text
  • فرمت تاریخ: YYYY-MM-DD
  • توجه: کاربر باید داده‌ها را دقیقاً به همان فرمت ارائه دهد که در نمونه ورودی نشان داده شده است.

فرمت خروجی🔗

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

نمونه ورودی🔗

در ابتدا از کاربر خواسته می‌شود که تعداد سطرها را وارد کند:

20
Plain text

سپس ۲۰ سطر داده به شکل زیر وارد می‌شود:

2025-01-01,100,105,95,102
2025-01-02,102,108,101,107
2025-01-03,107,110,105,106
2025-01-04,106,112,105,111
2025-01-05,111,115,110,114
2025-01-06,114,118,113,117
2025-01-07,117,120,115,116
2025-01-08,116,119,115,118
2025-01-09,118,122,117,121
2025-01-10,121,125,120,123
2025-01-11,123,127,122,126
2025-01-12,126,130,125,128
2025-01-13,128,133,127,131
2025-01-14,131,135,130,134
2025-01-15,134,138,133,137
2025-01-16,137,140,136,139
2025-01-17,139,142,138,141
2025-01-18,141,145,140,144
2025-01-19,144,148,143,147
2025-01-20,147,150,146,149
Plain text

نمونه خروجی🔗

10519.42
Plain text

توجه: این نمونه ورودی صرفاً جهت نشان دادن فرمت داده است. در شرایط واقعی، ممکن است تعداد روزها بیشتر بوده و شرایط معاملاتی پیچیده‌تری ایجاد شود. مقدار نهایی نمونه است؛ مقدار نهایی بسته به داده‌های واقعی و سیگنال‌های معاملاتی ممکن است متفاوت باشد.

ارسال پاسخ برای این سؤال
در حال حاضر شما دسترسی ندارید.