نمایش سیگنالها در صفحه سینگال

پیشنهاد می شود که سیگنال های برگزیده با API گرفته شود. فیلتر های اعمال شده باید روی URL هم باشد که اگر از صفحه اول یا یک صفحه لندینگ با فیلتر خاصی اومد در صفحه سیگنال ها ، آن فیلتر ها انتخاب شده باشد.

این API سیگنال ها ورودی های زیر را به عنوان فیلتر می گیرد:

  • اندازه سرمایه
  • مدت سرمایه گذاری که برحسب زمان اعتبار است
  • حد سود
  • اندازه شرکت
  • نوع بازار
  • رتبه تریدر (زیر 10 ، زیر 100 ، زیر 1000)
  • تریدر تایید شده
  • تریدرهای من (در اولویت بعدی)
  • تاریخ برای بک تست

همچنین موارد زیر را در خروجی برمی‌گرداند:

  • این API باید سیگنال هایی را خروجی بدهد که برحسب نماد unique باشد. یعنی دو سیگنال با یک نماد وجود نداشته باشد.
  • مشخصات هر تریدر.
  • نوع بازار نماد
  • امتیاز نماد
  • مدت اعتبار
  • اندازه شرکت
  • حد سود (نمایش حد سود باید به درصدی باشد)
  • چند بار دیده شده
  • آیا توسط کاربر دیده شده

منطق انتخاب سیگنال ها از بین همه سیگنال ها به ترتیب زیر است:

  • رتبه تریدر حداکثر 1000 باشد.
  • سیگنال ها در 3 روز اخیر باشد.
  • اخرین پیام تریدرها باشد.
  • امتیاز نماد باید حداقل 50+% باشد.

مرتب کردن براساس:

  • رتبه تریدر با بچ 20 تایی.
  • امتیاز نماد
  • تعداد تگ داشتن

اندازه سرمایه چیکار میکنه ؟ @hamidrexa

زمان اعتبار تخمینی یا فقط زمان اعتبار تگ خورده ؟ @hamidrexa

حد سود تخمینی یا فقط حد سود تگ خورده ؟ @hamidrexa

ملاک امتیاز، امتیاز فعلی یعنی همون مدل قدیمی منظورتونه دیگه ؟

برای ساده سازی اینا میره توی قسمت فیلتر ها با default value هایی که گفتید
ولی default value حد رتبه تریدر رو میذارم روی ۱۰۰

طبق تجربه ای که استفاده از این api داشتم پیام های دوم و سوم و الی اخر تریدر ها نباید حذف شوند و باید به اولویت بعدی فرستاده شود.

در واقع مرتب سازی سیگنال ها رو به این صورت انجام بدیم :
مرتب کردن براساس:

  • چندمین پیام تریدر
  • رتبه تریدر با بچ 20 تایی.
  • امتیاز نماد
  • تعداد تگ داشتن

و این مورد از فیلتر به مرتب سازی تبدیل می‌شود.

این API آماده شد.

فیلترهای کاربر به شکل زیر اعمال شده‌اند.
۱- میزان سرمایه‌گذاری‌گذاری (investment_amount): در حال حاضر یک عدد است که تعداد نمادهای نمایشی را نشان می‌دهد. (در ریلیزهای بعد باید برحسب میزان سرمایه تعداد مشخصی نماد عادی و صندوق سرمایه‌گذاری نشان داده شود) مقدار دیفالت فعلی ۳ است.
۲- مدت سرمایه‌گذاری (estimated_order_duration_lte & gte): براساس فیلد estimated_order_duration که در assetsignal ذخیره می‌شود، فیلتر انجام می‌شود. این فیلد با عنوان مدت اعتبار به ازای هر سیگنال نشان داده می‌شود. مقادیر پیشفرض فعلی ۳۰ و ۱۸۰ هستند.
۳- پیشبینی نسبت حد سود (estimated_profit_ratio_lte & gte): براساس فیلد estimated_profit_ratio که در assetsignal ذخیره می‌شود، فیلتر انجام می‌شود. مقادیر پیشفرض فعلی ۱.۲۵ و ۱.۵ هستند. (یعنی بین ۲۵ تا ۵۰ درصد سود)
۴- نوع بازار (market): مشخص می‌کند بازار ticker یا crypto است. در حالت پیشفرض None است که هر دو بازار را نشان می‌دهد.
۵- رتبه تریدر (rank_limit): حداکثر رتبه را مشخص می‌کند. در حالت پیشفرض ۱۰۰ است.
۶- نوع تریدر (by_verified_publishers): در صورتی که مقدار آن ‘true’ باشد تنها تدریدرهای تاییدشده را نشان می‌دهد.
۷- اندازه شرکت (market_size): به صورت پیشفرض همه‌ی نمادها را نشان می‌دهد. مقادیر آن L, M و S هستند که از روی فیلد market_size مربوط به Asset فیلتر می‌کند.
۸- نوع سیگنال (value): مقدار پیشفرض خرید (B) است.

سایر queryparamهای مورد استفاده، موارد زیر هستند.
۱- بازه زمانی انتخاب سیگنال‌ها (last_n_day): به شکل پیشفرض برابر ۳ است که یعنی سیگنال‌های ۳ روز اخیر را در نظر می‌گیرد.
۲- فرمول پابلیشر برای بررسی رتبه (publisher_score_formula_id): به شکل پیشفرض برابر فرمول دیفالت در Env. variables است. در حالتی که فرمول دیفالت است، از فیلد rank که در مدل publisher است استفاده می‌شود. (در این صورت امتیاز تریدر بررسی نمی‌شود. در حالت غیر پیشفرض، بررسی می‌شود که امتیاز تریدر مثبت باشد)
۳- فرمول نماد (asset_score_formula_id): به شکل پیشفرض برابر فرمول دیفالت در Env variables است. در حالتی که فرمول دیفالت است، از فیلدهای موجود در مدل Asset استفاده می‌شود. (فیلد normalized_Score در واقع امتیاز نسبی cross_relative است)
۴- حد امتیاز نماد (asset_score_threshold): سیگنال مربوط به نمادهایی در نظر گرفته می‌شود که cross-relative آن‌ها از این threshold بیشتر باشد. به شکل پیشفرض برابر صفر است.
۵- حداکثر تعداد سیگنال‌ها (limit): به شکل پیشفرض برابر ۲۰ است.
۶- تعداد سیگنال‌های هر نماد (batch_limit): حداکثر تعداد سیگنال‌هایی که به ازای هر نماد نمایش داده می‌شود برابر این عدد است. به شکل پیشفرض برابر ۵ است.
۷- زمان (datetime): به طور پیشفرض None است. با قراردادن زمان در این فیلد، سیگنال‌های برگزیده در زمان مذکور برگردانده می‌شود. (به منظور تست) امتیاز نماد در خروجی این API، همواره مربوط به زمان حال است. همچنین برای سیگنال‌های فروش (S) هم درست کار نمی‌کند.

مرتب‌سازی سیگنال‌ها به ترتیب زیر است:
۱- چندمین پیام تریدر: سیگنال‌هایی که فیلتر شده‌اند، به ازای هر تریدر، برحسب زمان انتشار مرتب می‌شوند و جدیدترین سیگنال بیشترین ارزش را دارد. بنابراین مجموعه‌ی جدیدترین پیام‌ها به ازای تریدرهای مختلف بیشترین ارزش را دارد.
۲- رتبه‌ی تریدر: در قالب دسته‌هایی به اندازه rank_batch_size ( که پیشفرض آن ۲۰ است) مشخص می‌شود. (۱ تا ۱۹ در دسته اول، ۲۰ تا ۳۹ دسته دوم و …) برای مثال دو رتبه‌ی ۲۵ و ۳۵ در دسته‌ی دوم قرار می‌گیرند و در این معیار یکسان هستند.
۳- امتیاز نماد: از امتیاز نسبی نماد (cross relative) در قالب دسته‌هایی به اندازه asset_score_batch_size ( که پیشفرض آن ۰.۰۵ است) مشخص می‌شود. (از صفر تا کمتر از ۰.۰۵ دسته‌ی اول، از ۰.۰۵ تا کمتر از ۰.۱ دسته‌ی دوم و …)
۴- تعداد تگ: آخرین معیار، تعداد تگ‌های غیر null است. (stop_loss_price, profit_target_price, entry_point_price, resistance_price, support_price, timeout, timeframe)