این راهنما نحوه سفارشیسازی رفتار 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 راهحل متمرکز و قابل استفاده مجدد برای بارگذاری فایل در سراسر برنامه فراهم میکند:
- مسئولیت واحد: فقط عملیات کشف و بارگذاری فایل را مدیریت میکند
- جستجوی چندمسیره: به طور خودکار دایرکتوریهای متعدد را جستجو میکند
- مدیریت خطا: مدیریت 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 خود را با استفاده از ابزارهای آنلاین تست کنید:
- بررسی کنید که فایلهای JSON معتبر هستند (از JSONLint استفاده کنید)
- مطمئن شوید فایلها در یکی از مسیرهای جستجو قرار دارند
- لاگهای برنامه را برای پیامهای خطا بررسی کنید
- مطمئن شوید کلمات کلیدی در فایل
keywords.jsonتعریف شدهاند - بررسی کنید که تنظیمات به درستی بارگذاری شدهاند
- از حروف کوچک استفاده کنید (برنامه به حروف کوچک تبدیل میکند)
- الگوهای regex را با متن سیگنال نمونه تست کنید
- مطمئن شوید گروههای capture (پرانتز) قیمت را استخراج میکنند
- از ابزارهای تست regex برای اشکالزدایی استفاده کنید
اگر با پیکربندی مشکل دارید:
- فایلهای نمونه را از انتشارات GitHub دانلود کنید
- تنظیمات را به تدریج تغییر دهید
- از جامعه برای کمک استفاده کنید