# رصد | Rasad 0.1.0

اپ اندروید بومی با Kotlin، برای نمایش قیمت زنده و سیگنال‌های **آزمایشی** طلا، فارکس و رمزارز. این نسخه سفارش ارسال نمی‌کند. موتور روی ویندوز یا VPS روشن می‌ماند و گوشی اطلاعات را دریافت می‌کند.

## شروع سریع

1. فایل `Rasad-0.1.0.apk` را روی گوشی اندروید ۸ یا بالاتر نصب کنید. برای دیدن ظاهر و معنی کارت‌ها، «دیدن نمونه آموزشی آفلاین» را بزنید. تمام قیمت‌ها و سیگنال‌های این حالت ساختگی‌اند.
2. روی ویندوز، Python نسخه ۳٫۱۱ یا ۳٫۱۲، ۶۴بیتی نصب کنید. متاتریدر ۵ را نیز برای فارکس نصب و در خود متاتریدر به حساب دمو وارد شوید. این اپ و موتور هیچ رمز بروکر یا کلید معامله صرافی درخواست نمی‌کنند.
3. فایل ZIP را کامل استخراج کنید. `setup-windows.cmd` را اجرا کنید؛ نصب وابستگی‌ها به اینترنت نیاز دارد. در پرسش MT5 گزینه `y` را وارد کنید. نام دقیق نمادهای بروکر را وارد کنید؛ مثلاً بروکر شما ممکن است به‌جای `XAUUSD` از `XAUUSDm` یا `GOLD` استفاده کند. نام واقعی را از Market Watch بردارید. برای رمزارز پیش‌فرض `BTCUSDT,ETHUSDT` است.
4. نشانی و Connection token که نصب نمایش می‌دهد را نگه دارید. فایل `engine/config.json` همین تنظیمات را دارد؛ این فایل خصوصی است و نباید منتشر شود.
5. `start-windows.cmd` را اجرا کنید و پنجره آن را باز بگذارید. رایانه نباید Sleep شود. متاتریدر نیز باید باز و متصل بماند.
6. گوشی و رایانه باید به هم دسترسی شبکه داشته باشند. در اپ، «تنظیمات» را بزنید؛ نشانی نمونه مانند `http://192.168.1.10:8765` را با **IP واقعی رایانه خودتان** جایگزین کنید. کد اتصال را وارد کنید و «ذخیره و اتصال» را بزنید. درخواست اعلان را برای دریافت هشدارهای اپ بپذیرید.
7. اگر ویندوز درخواست دسترسی فایروال داد، فقط شبکه خصوصی مورد استفاده خودتان را مجاز کنید. موتور باید از گوشی روی TCP پورت 8765 در دسترس باشد. موتور روی شبکه محلی HTTP دارد؛ برای IP عمومی/VPS از HTTPS با گواهی معتبر و reverse proxy استفاده کنید.

برای اجرای آموزشی روی رایانه، پس از نصب `start-demo.cmd` را اجرا کنید. این حالت به حساب یا صرافی وصل نمی‌شود. در صورت قطع منبع زنده، برنامه **خودکار به قیمت آموزشی سوییچ نمی‌کند**.

## امکانات موجود

- قیمت Bid و Ask، اسپرد، نمودار کندلی یک‌دقیقه و وضعیت هر منبع.
- فارکس/طلا: دریافت تیک از ترمینال MT5 روی همان ویندوز؛ خواندن تیک‌ها هر ۱۰۰ میلی‌ثانیه، در صورت وجود تیک تازه.
- رمزارز: دریافت جریان عمومی WebSocket معاملات و بهترین Bid/Ask از Binance Spot. حساب و API key لازم نیست؛ دسترسی این منبع به شبکه و منطقه محل اجرای موتور وابسته است. سایر صرافی‌ها در این نسخه آداپتر ندارند.
- موتور مستقل برای قواعد عددی SP2L، Pro-BTB و Micro-MAP؛ جزئیات و تفاوت‌ها با جزوه‌ها در `docs/STRATEGIES-FA.md`.
- قیمت ورود مشروط، حد ضرر، دو هدف، دلیل، انقضا و کپی جزئیات سیگنال.
- بی‌اعتبارکردن سیگنال پس از فاصله در داده؛ جلوگیری از فعال‌کردن ورود با قیمت قدیمی، اسپرد زیاد یا عبور زیاد از سطح ورود.
- اعلان سیگنال جدید در زمان اتصال سرویس گوشی؛ ثبت تغییر وضعیت در SQLite روی موتور.
- نگهداری کد اتصال گوشی به شکل رمز‌شده با Android Keystore.

## زیر یک ثانیه دقیقاً یعنی چه؟

این نسخه با هدف انتقال سریع تغییرات قیمت ساخته شده است: WebSocket برای رمزارز، خواندن تیک‌های MT5 هر ۱۰۰ میلی‌ثانیه، ارسال SSE از موتور هر ۱۰۰ میلی‌ثانیه و تازه‌سازی وضعیت گوشی هر ۱۰۰ میلی‌ثانیه. این زمان‌ها **تضمین تأخیر نهایی نیستند** و به تأخیر بروکر/صرافی، اینترنت، بار سیستم و وضعیت گوشی اضافه می‌شوند.

«سن داده در موتور» فاصله زمانی دریافت آخرین قیمت تا اکنون است. «رفت‌وبرگشت اتصال» زمان یک درخواست گوشی به موتور است که هنگام اتصال اندازه‌گیری می‌شود. جریان Spot bookTicker زمان تولید در صرافی ندارد؛ بنابراین برنامه تأخیر مبدأ آن را حدس نمی‌زند. کندل‌های نمودار هر ۵ ثانیه از موتور به گوشی تازه می‌شوند و خط Bid با قیمت زنده به‌روزرسانی می‌شود.

دریافت زیرثانیه‌ای قیمت با صدور سیگنال در هر ثانیه تفاوت دارد. قواعدی که به بسته‌شدن کندل یک‌دقیقه یا پنج‌دقیقه نیاز دارند منتظر پایان همان کندل می‌مانند. کندل با رسیدن اولین تیک بازه بعدی نهایی می‌شود. در بازار کم‌معامله این فاصله بیشتر می‌شود. پس از شروع یا اتصال مجدد، کندل ناقص کنار گذاشته می‌شود و تشکیل ساختارهای جدید ممکن است چند دقیقه طول بکشد.

## وضعیت سیگنال‌ها

| وضعیت | معنی |
|---|---|
| انتظار ورود | شرایط الگو دیده شده؛ هنوز شرط قیمت ورود فعال نشده |
| شرط ورود فعال شده | یک قیمت مشاهده‌شده شرط ورود را داشته؛ سفارش واقعی ارسال نشده |
| هدف اول/دوم | سطح با Bid/Ask مناسب لمس شده؛ گزارش سود محقق‌شده نیست |
| حد ضرر | سطح استاپ مشاهده شده |
| منقضی | مهلت پنج‌دقیقه‌ای ورود تمام شده |
| نامعتبر / فاصله داده | در مسیر قیمت فاصله ایجاد شده؛ نتیجه آن معامله حدس زده نمی‌شود |
| از دست رفته | قیمت از ورود زیاد عبور کرده یا اسپرد مناسب نبوده |

در خرید، فعال‌شدن ورود با Ask و بررسی خروج با Bid انجام می‌شود. در سناریوی نزولی برعکس است. رمزارز این نسخه **Spot** است: سیگنال فروش برای خروج از دارایی موجود یا مطالعه جهت نزولی کاربرد دارد؛ مجوز یا اجرای معامله شورت نیست.

## محدودیت‌های این نسخه

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

موتور می‌تواند تا زمانی که رایانه/VPS روشن است به رصد ادامه دهد؛ اما Android ممکن است سرویس پس‌زمینه گوشی را متوقف کند. در Android 15 به بعد برای اجرای dataSync در پس‌زمینه محدودیت مجموع ۶ ساعت در ۲۴ ساعت وجود دارد. این برنامه timeout را مدیریت و سرویس را متوقف می‌کند. اعلان ابری FCM در این نسخه وجود ندارد؛ هنگام بسته‌بودن اجباری یا توقف سرویس گوشی، هشدار فوری روی گوشی تضمین نمی‌شود. زمان‌ها و داده‌های موتور در UTC هستند.

نام بروکر، حساب، منبع قیمت واقعی و دسترسی شبکه کاربر هنوز در محیط توسعه آزمایش نشده‌اند. نصب و نمایش روی دستگاه فیزیکی یا شبیه‌ساز اندروید در این محیط انجام نشده است؛ APK کامپایل و امضای آن بررسی شده است. جزئیات آزمون‌ها در `docs/VALIDATION-FA.md` است.

## فایل‌های بسته

- `Rasad-0.1.0.apk`: فایل نصب آزمایشی.
- `android/`: سورس کامل اپ Kotlin و پروژه قابل بازکردن در Android Studio.
- `engine/`: موتور، سه استراتژی، اتصال عمومی رمزارز و خواندن MT5.
- `tests/`: آزمون منطق و ارتباط محلی.
- `docs/`: شرح قواعد، آزمون‌ها، ساخت APK و میزبانی.
- `START-HERE.html`: راهنمای سریع قابل بازکردن با مرورگر.

## نگهداری و توقف

برای توقف موتور، در پنجره آن Ctrl+C بزنید. از `engine/config.json` و `engine/journal.sqlite` پشتیبان بگیرید. `config.json` حاوی کد اتصال خصوصی است. فایل دیتابیس و کد اتصال در بسته توزیع‌شده وجود ندارند و روی رایانه خودتان ساخته می‌شوند.

تغییر نمادها از طریق اجرای دوباره setup یا ویرایش `config.json` و راه‌اندازی مجدد موتور انجام می‌شود. این نسخه برای فهرست کوتاه نمادها طراحی و تست شده است؛ رصد صدها نماد با همین زمان پاسخ ادعا نشده است.