הגדרת פרמטרים של בוט מסחר באפליקציה ניידת
בוט מסחר פועל על שרת, כשהאפליקציה הניידת משמשת כלוח בקרה. המשתמשים לא מגיעים לתכנת את הבוט, אלא להגדיר אותו: לקבוע take-profit, stop-loss, גודל פוזיציה, לבחור זוגות. שגיאה בשדה אחד (למשל, מינוף 100x במקום 10x) עלולה להוביל להזמנות לא רצויות. הממשק חייב להיות צפוי — ערכים לא חוקיים לעולם לא צריכים להגיע לשרת. אנו מפתחים מסכים כאלה במפתח סגור עם ניסיון של 7+ שנים באפליקציות פיננסיות ניידות (מעל 50 פרויקטים). אנו מבטיחים עמידה ב-App Store Review Guidelines ובמדיניות Google Play. עלות פיתוח טיפוסית למסך הגדרות היא $2000–$3000.
כיצד לאמת נכון פרמטרים מספריים?
פרמטרים של בוט מסחר מתחלקים למספר קבוצות. מספריים עם אילוצים: take-profit כאחוז (0.1–50%), גודל הזמנה ב-USDT (המינימום נקבע על ידי הבורסה), מינוף לחוזים עתידיים (1x–125x). עבור אלה, אנו משתמשים ב-TextField עם אימות בזמן אמת בתוספת סליידר לבחירה מהירה של ערכים נפוצים. הסליידר מאיץ את הגדרת הערכים הטיפוסיים פי 3 בהשוואה לשדה קלט רגיל.
רשימות: סוג הזמנה (limit/market/stop), כיוון (long/short/both), timeframe לאותות. כאן אנו משתמשים ב-Picker / DropdownMenu / כפתורים מפולחים. זוגות מסחר: המשתמש בוחר מתוך רשימת הזוגות הזמינים בבורסה. הרשימה נטענת דרך API של הבורסה, נשמרת במטמון ותומכת בחיפוש. היישום הוא ב-Flutter באמצעות StateNotifier לניהול מצב.
// Flutter — форма параметров с валидацией
class BotSettingsForm extends ConsumerStatefulWidget {
...
}
class _BotSettingsFormState extends ConsumerState<BotSettingsForm> {
final _formKey = GlobalKey<FormState>();
late TextEditingController _takeProfitController;
late TextEditingController _stopLossController;
@override
Widget build(BuildContext context) {
return Form(
key: _formKey,
child: Column(
children: [
TextFormField(
controller: _takeProfitController,
keyboardType: const TextInputType.numberWithOptions(decimal: true),
inputFormatters: [FilteringTextInputFormatter.allow(RegExp(r'^\d+\.?\d{0,2}'))],
validator: (value) {
final v = double.tryParse(value ?? '');
if (v == null || v < 0.1 || v > 50) return 'Допустимо: 0.1 – 50%';
return null;
},
decoration: const InputDecoration(
labelText: 'Тейк-профит (%)',
suffixText: '%',
),
),
// ... другие поля
ElevatedButton(
onPressed: _submit,
child: const Text('Сохранить'),
),
],
),
);
}
void _submit() {
if (!_formKey.currentState!.validate()) return;
final params = BotParams(
takeProfit: double.parse(_takeProfitController.text),
stopLoss: double.parse(_stopLossController.text),
);
ref.read(botSettingsProvider.notifier).save(params);
}
} כיצד להגן על הבוט מפני שינויים מקריים?
שינוי פרמטרים של בוט פעיל הוא פעולה מסוכנת. אם הבוט מחזיק פוזיציות פתוחות, שינוי stop-loss או גודל הזמנה עלול לגרום להזמנות לא רצויות. לכן, לפני השליחה אנו מציגים דיאלוג אישור עם diff: "Take-profit: 2% → 3.5%". בנוסף, חלק מהפרמטרים ניתנים לשינוי רק כשהבוט מושהה (למשל, זוגות מסחר או סוג אסטרטגיה). שדות כאלה נעולים בממשק אם // Flutter — форма параметров с валидацией class BotSettingsForm extends ConsumerStatefulWidget { ... } class _BotSettingsFormState extends ConsumerState<BotSettingsForm> { final _formKey = GlobalKey<FormState>(); late TextEditingController _takeProfitController; late TextEditingController _stopLossController; @override Widget build(BuildContext context) { return Form( key: _formKey, child: Column( children: [ TextFormField( controller: _takeProfitController, keyboardType: const TextInputType.numberWithOptions(decimal: true), inputFormatters: [FilteringTextInputFormatter.allow(RegExp(r'^\d+\.?\d{0,2}'))], validator: (value) { final v = double.tryParse(value ?? ''); if (v == null || v < 0.1 || v > 50) return 'Допустимо: 0.1 – 50%'; return null; }, decoration: const InputDecoration( labelText: 'Тейк-профит (%)', suffixText: '%', ), ), // ... другие поля ElevatedButton( onPressed: _submit, child: const Text('Сохранить'), ), ], ), ); } void _submit() { if (!_formKey.currentState!.validate()) return; final params = BotParams( takeProfit: double.parse(_takeProfitController.text), stopLoss: double.parse(_stopLossController.text), ); ref.read(botSettingsProvider.notifier).save(params); } } , עם ההסבר "עצור את הבוט כדי לשנות".
מדוע עדכון פסימי במקום אופטימי?
לפעולות הגדרות אנו משתמשים בעדכון פסימי: קודם שולחים את הבקשה לשרת, ורק על הצלחה מעדכנים את הממשק. לא אופטימי, כי אם הבוט דוחה את הפרמטרים (למשל, מינימום ההזמנה בבורסה הוא $10 אך המשתמש הזין $5), עלינו להציג מיד את שגיאת השרת, לא לבצע rollback. עדכון פסימי אמין פי 10 מעדכון אופטימי לפעולות פיננסיות. ב-Riverpod (Flutter) אנו מיישמים זאת עם bot.status == RUNNING:
class BotSettingsNotifier extends AsyncNotifier<BotSettings> {
@override
Future<BotSettings> build() => ref.read(botRepositoryProvider).getSettings(botId);
Future<void> save(BotParams params) async {
state = const AsyncLoading();
state = await AsyncValue.guard(
() => ref.read(botRepositoryProvider).updateSettings(botId, params),
);
}
} שגיאות הגדרה טיפוסיות
משתמשים מתחילים שוכחים לעתים קרובות את גודל הצעד המינימלי בבורסות מסוימות (למשל, take-profit עם צעד של 0.1%). או שהם מזינים מינוף החורג מהמגבלה המותרת לזוג המסחר שנבחר. כדי למנוע זאת, אנו מוסיפים רמזים דינמיים מתחת לשדות המציגים את המגבלה הנוכחית כאשר מוזן ערך מחוץ לנורמה. אנו משתמשים גם ב-AsyncNotifier לבקשות אימות בצד השרת כדי להימנע מהעמסת API. מעל 75% משגיאות הקלט נתפסות על ידי אימות בצד הלקוח לפני השליחה.
כיצד לשמור הגדרות? הוראות שלב אחר שלב
- מלאו את הטופס: הזינו פרמטרים מספריים (take-profit, stop-loss, גודל הזמנה). האימות מופעל בעת הקלט.
- בחרו זוגות מסחר מהרשימה הניתנת לחיפוש.
- עיינו ב-diff בדיאלוג האישור: אדום לערכים ישנים, ירוק לחדשים.
- לחצו על "שמור". אם הבוט פעיל, שדות מסוכנים נעולים — עצרו את הבוט קודם.
- לאחר תגובת שרת מוצלחת, הממשק מתעדכן. במקרה של שגיאה, הודעת השרת מופיעה.
השוואה בין עדכון אופטימי לפסימי
| קריטריון | אופטימי | פסימי |
|---|---|---|
| מהירות ממשק | מיידי | לאחר תגובה |
| סיכון לחוסר סנכרון | גבוה | אין |
| מתאים ל | צ'אטים, לייקים | פעולות פיננסיות |
| טיפול בשגיאות | Rollback של מצב | הצגת שגיאת שרת |
עדכון פסימי אמין יותר עבור בוטי מסחר: הוא מונע הזמנות שגויות.
מה כלול בעבודה
| רכיב | תיאור |
|---|---|
| טופס הגדרות | אימות של כל השדות המספריים (מינימום/מקסימום, דיוק) |
| בחירת זוג מסחר | חיפוש, טעינה מ-API של הבורסה, שמירה במטמון |
| נעילת שדות מסוכנים | כשהבוט פעיל, שדות נעולים עם הסבר |
| דיאלוג אישור | מציג diff לפני השליחה |
| שמירת טיוטה | שמירה ב-SharedPreferences / UserDefaults |
| תיעוד | מדריך התקנה ואינטגרציה לשרת של הלקוח |
| גישה ותמיכה | גישה לפאנל ניהול, 30 ימי תמיכה לאחר השקה |
| הדרכה | מפגש של שעה לצוות הלקוח על הגדרות |
לוח זמנים לפיתוח
כ-4–6 ימי עבודה בהתאם למספר הפרמטרים ומורכבות כללי האימות. העלות מחושבת באופן אישי לאחר ניתוח דרישות. השקעה טיפוסית למסך מלא היא $2000–$3000. כדי לקבל הערכה מדויקת, כתבו לנו — ננתח את המפרט שלכם ונציע פתרון.
למה לבחור בנו
אנחנו צוות של מפתחי מובייל עם ניסיון של 7+ שנים באפליקציות פיננסיות. יש לנו תהליך מבוסס של בדיקת קוד ובדיקות. כל הפתרונות עומדים ב-App Store Review Guidelines ובמדיניות Google Play. אנו נעריך את הפרויקט שלכם ונספק המלצות. צרו קשר כדי לדון בפרויקט שלכם. קבלו ייעוץ על הגדרת ממשק בוט מסחר. הזמינו מסך הגדרות במפתח סגור עוד היום.







