Skip to content

Latest commit

 

History

History
247 lines (197 loc) · 8.67 KB

File metadata and controls

247 lines (197 loc) · 8.67 KB

راهنمای پیکربندی سفارشی‌سازی

این راهنما نحوه سفارشی‌سازی رفتار SignalTrader از طریق فایل‌های پیکربندی JSON را توضیح می‌دهد.

نمای کلی

SignalTrader از فایل‌های پیکربندی JSON برای امکان سفارشی‌سازی آسان کلمات کلیدی پیام و الگوهای استخراج قیمت استفاده می‌کند.

مکان فایل‌های پیکربندی

برنامه از FileLoaderService متمرکز برای جستجوی فایل‌های پیکربندی در مکان‌های متعدد به ترتیب اولویت استفاده می‌کند:

۱. دایرکتوری کاری فعلی (بالاترین اولویت) ۲. دایرکتوری config/ در دایرکتوری کاری فعلی ۳. دایرکتوری configs/ در دایرکتوری کاری فعلی ۴. دایرکتوری settings/ در دایرکتوری کاری فعلی ۵. دایرکتوری config/ در ریشه پروژه (توصیه شده) ۶. دایرکتوری configs/ در ریشه پروژه ۷. دایرکتوری settings/ در ریشه پروژه ۸. دایرکتوری ریشه پروژه

این امکان حداکثر انعطاف در سازماندهی فایل‌های پیکربندی را فراهم می‌کند. برای مثال:

# گزینه ۱: دایرکتوری config/ (توصیه شده)
config/
├── keywords.json          # پیکربندی کلمات کلیدی دستور پیام
├── regex_patterns.json    # الگوهای استخراج قیمت
└── development.json       # تنظیمات برنامه (git-ignored)

# گزینه ۲: دایرکتوری configs/
configs/
├── keywords.json
└── regex_patterns.json

# گزینه ۳: دایرکتوری settings/
settings/
├── keywords.json
└── regex_patterns.json

# گزینه ۴: ریشه پروژه
keywords.json
regex_patterns.json

معماری FileLoaderService

FileLoaderService راه‌حل متمرکز و قابل استفاده مجدد برای بارگذاری فایل در سراسر برنامه فراهم می‌کند:

  • مسئولیت واحد: فقط عملیات کشف و بارگذاری فایل را مدیریت می‌کند
  • جستجوی چندمسیره: به طور خودکار دایرکتوری‌های متعدد را جستجو می‌کند
  • مدیریت خطا: مدیریت graceful فایل‌های گم شده و خطاهای تجزیه
  • لاگ‌گیری جامع: لاگ‌های دقیق نشان می‌دهد کدام فایل‌ها از کجا بارگذاری شده‌اند
  • ایمنی نوع: پشتیبانی از فایل‌های JSON و متن با تایپ مناسب

استفاده در کد

from Configure.file_loader import get_file_loader

# نمونه سرویس را دریافت کنید
file_loader = get_file_loader()

# پیکربندی JSON را بارگذاری کنید
config = file_loader.load_json_file("keywords.json")

# فایل متن را بارگذاری کنید
content = file_loader.load_text_file("readme.txt")

# بررسی وجود فایل
exists = file_loader.file_exists("settings.json")

پیکربندی کلمات کلیدی پیام

فایل config/keywords.json را برای سفارشی‌سازی کلمات کلیدی دستور ویرایش کنید:

{
  "message_commands": {
    "edit_keywords": [
      "edit",
      "edite",
      "update",
      "modify",
      "ویرایش",
      "به‌روزرسانی"
    ],
    "delete_keywords": [
      "حذف",
      "delete",
      "close",
      "not a signal",
      "vip",
      "بستن",
      "سیگنال نیست"
    ],
    "risk_free_keywords": [
      "فری",
      "risk free",
      "risk-free",
      "ریسک رایگان"
    ],
    "tp_keywords": [
      "tp",
      "هدف",
      "take profit"
    ]
  }
}

انواع کلمات کلیدی

  • edit_keywords: کلماتی که سیگنال را برای ویرایش استاپ لاس یا تیک پروفیت علامت‌گذاری می‌کنند
  • delete_keywords: کلماتی که سیگنال را برای بسته شدن علامت‌گذاری می‌کنند
  • risk_free_keywords: کلماتی که مدیریت ریسک رایگان را فعال می‌کنند
  • tp_keywords: کلماتی که بسته شدن همه موقعیت‌ها را در صورت عدم باز شدن سیگنال فعال می‌کنند

پیکربندی الگوهای استخراج قیمت

فایل config/regex_patterns.json را برای سفارشی‌سازی الگوهای استخراج قیمت ویرایش کنید:

{
  "price_extraction_patterns": {
    "sl_patterns": [
      {
        "pattern": "sl\\s*[:=]\\s*([\\d.]+)",
        "description": "استاپ لاس با sl: یا sl="
      },
      {
        "pattern": "stop\\s*loss\\s*[:=]\\s*([\\d.]+)",
        "description": "استاپ لاس با stop loss:"
      },
      {
        "pattern": "sl\\s*([\\d.]+)",
        "description": "استاپ لاس با sl"
      }
    ],
    "tp_patterns": [
      {
        "pattern": "tp\\s*[:=]\\s*([\\d.,\\s]+)",
        "description": "تیک پروفیت با tp:"
      },
      {
        "pattern": "take\\s*profit\\s*[:=]\\s*([\\d.,\\s]+)",
        "description": "تیک پروفیت با take profit:"
      },
      {
        "pattern": "target\\s*[:=]\\s*([\\d.,\\s]+)",
        "description": "هدف با target:"
      }
    ],
    "entry_patterns": [
      {
        "pattern": "buy\\s+(\\d+(?:\\.\\d+)?)",
        "description": "الگوی خرید با قیمت"
      },
      {
        "pattern": "sell\\s+(\\d+(?:\\.\\d+)?)",
        "description": "الگوی فروش با قیمت"
      }
    ]
  }
}

ساختار الگوها

هر الگو شامل:

  • pattern: عبارت منظم برای تطبیق متن
  • description: توضیح الگو برای مستندات

انواع الگوها

  • sl_patterns: الگوها برای استخراج قیمت استاپ لاس
  • tp_patterns: الگوها برای استخراج قیمت تیک پروفیت (پشتیبانی از چندین سطح)
  • entry_patterns: الگوها برای استخراج قیمت ورودی

نکات پیشرفته

افزودن زبان‌های جدید

کلمات کلیدی را برای پشتیبانی از زبان‌های بیشتر اضافه کنید:

{
  "message_commands": {
    "edit_keywords": [
      "edit", "edite", "update", "modify",
      "ویرایش", "به‌روزرسانی", "تغییر",
      "editar", "actualizar", "modificar"
    ]
  }
}

سفارشی‌سازی برای کارگزار خاص

الگوهای استخراج قیمت را برای فرمت‌های خاص کارگزار تنظیم کنید:

{
  "price_extraction_patterns": {
    "sl_patterns": [
      {
        "pattern": "SL@([\\d.]+)",
        "description": "فرمت SL@price برای کارگزار خاص"
      }
    ]
  }
}

تست الگوها

الگوهای regex خود را با استفاده از ابزارهای آنلاین تست کنید:

عیب‌یابی

فایل‌های پیکربندی بارگذاری نمی‌شوند

  1. بررسی کنید که فایل‌های JSON معتبر هستند (از JSONLint استفاده کنید)
  2. مطمئن شوید فایل‌ها در یکی از مسیرهای جستجو قرار دارند
  3. لاگ‌های برنامه را برای پیام‌های خطا بررسی کنید

کلمات کلیدی کار نمی‌کنند

  1. مطمئن شوید کلمات کلیدی در فایل keywords.json تعریف شده‌اند
  2. بررسی کنید که تنظیمات به درستی بارگذاری شده‌اند
  3. از حروف کوچک استفاده کنید (برنامه به حروف کوچک تبدیل می‌کند)

الگوهای استخراج قیمت کار نمی‌کنند

  1. الگوهای regex را با متن سیگنال نمونه تست کنید
  2. مطمئن شوید گروه‌های capture (پرانتز) قیمت را استخراج می‌کنند
  3. از ابزارهای تست regex برای اشکال‌زدایی استفاده کنید

پشتیبانی

اگر با پیکربندی مشکل دارید:

  1. فایل‌های نمونه را از انتشارات GitHub دانلود کنید
  2. تنظیمات را به تدریج تغییر دهید
  3. از جامعه برای کمک استفاده کنید