חזרה לבלוג
אוטומציה8 דק'17.4.2026

בניתי סוכן AI אוטונומי שמקשיב לסיגנלים בטלגרם וסוחר בבייננס. מה $100 באמת קונים לך.

לוג בניה אמיתי: וובהוק, פרסר, backtester ומבצע עסקאות ב-Spot במצב dry-run. חסימות גאוגרפיות, איכות סיגנל, והמתמטיקה הכנה של בנקרול 100$.

בניתי סוכן AI אוטונומי שמקשיב לסיגנלים בטלגרם וסוחר בבייננס. מה $100 באמת קונים לך.

רציתי לראות עד כמה אפשר לקחת בנקרול של $100 כשסוכן AI קורא סיגנלים מערוץ טלגרם ושולח עסקאות לבייננס בלי אדם בתהליך. לא תיאורטי — בנוי, חיווט, ורץ היום ב-dry-run. הנה מה שקרה.

הרעיון, בלי קישוטים

ספק סיגנלים חיצוני (V4SE) שולח רעיונות טרייד לערוץ טלגרם. ההודעות נראות כך:

```

🟢 NEW LONG ETH (4H)

Entry: 2445.80

Target: 2471.56 (1.1%)

```

וכשפוזיציה נסגרת:

```

✅ EXIT LONG ETH (2H)

PnL: +2.46% | Reason: runner_hit

```

השאלה: האם אפשר להפוך את הזרם הזה לבוט שסוחר אוטומטית בבייננס במקומי, עם $100 התחלה?

הארכיטקטורה, מקצה לקצה

ארבעה רכיבים, כולם serverless על Vercel Pro:

  • **מקלט webhook של טלגרם** — רשום ב-`setWebhook` של הבוט, כך שטלגרם דוחפת כל פוסט בערוץ ל-endpoint שלי בזמן אמת. בלי polling, בלי סיגנלים שנופלים.
  • **פרסר סיגנלים** — שולף כיוון/צמד/טיימפריים/כניסה/יעד/PnL מהפורמט האמיתי של ההודעות.
  • **Backtester** — משחזר סיגנלים היסטוריים, מזווג entries עם exits, ומחשב PnL ממומש ועקומת equity של בנקרול $100 אחרי עמלות.
  • **מבצע עסקאות Binance Spot** — בסיגנל entry, קונה בשוק את המטבע עם חלק קבוע של 10$ מה-USDT; בסיגנל exit, מוכר בחזרה. כל החלטה מתועדת.
  • למבצע יש שני מצבים. Dry-run ברירת מחדל: מושך מחיר שוק, מתעד איזו עסקה הייתה מתבצעת, עוקב אחרי "הפוזיציה" בזיכרון — ולא עושה כלום על בייננס. Live דורש דגל סביבה מפורש וגם מפתחות API. זה בכוונה — אסור שיהיה אפשר לעקוף את ה-dry-run בטעות.

    שלושת הדברים שכמעט שברו את זה

    הודעות של בוטים שמתחזות לקלט אדם. קודם באותו פרויקט היה לי listener שהיה אמור לתפוס הודעות של המייסד ולהזין אותן לדיוני ההנהלה. הוא תפס את התגובות של הבוטים שלי, כי הרגקס "מתחיל באימוג'י" נשבר על variation selectors כמו ⚙️ (U+2699 + U+FE0F). 16 הודעות של בוטים נשמרו כ"הנחיות מייסד" והוזנו לסיבוב הבא — ההנהלה דיברה עם עצמה. התיקון היה לעקוב אחרי כל message_id שאנחנו פרסמנו ב-ledger ולסגור short-circuit לפי ID לפני כל heuristic טקסטואלי. בצד הטרייד יש את אותו כשל פוטנציאלי: אם אנחנו לא יכולים לזהות אמין "זה סיגנל שאני צריך לפעול עליו" מ"זה רעש שאני יצרתי בעצמי" — נלולל את עצמנו לפשיטת רגל.

    חסימת גאולוקציה של בייננס. אזור ברירת המחדל של Vercel הוא `iad1` (US East). `api.binance.com` מחזיר 451 לכתובות IP אמריקאיות. בפעם הראשונה שהמבצע ניסה לשלוף מחיר הוא לא קיבל כלום וסירב לפתוח פוזיציה. התיקון היה שתי שורות:

    ```ts

    export const runtime = "nodejs";

    export const preferredRegion = ["fra1"]; // פרנקפורט

    ```

    Vercel Pro מאפשר לנעוץ פונקציות ספציפיות לאזורים ספציפיים. פרנקפורט מגיעה לבייננס. למחירים הוספתי גם fallback ל-CoinGecko — מחיר מבוסס-בייננס-בלבד הוא SPOF שאני לא רוצה.

    הפער של bootstrap לסיגנלים. בפעם הראשונה שהרצתי backtester היו לי 6 סיגנלים: 3 entries ו-3 exits — אבל אף exit לא התאים ל-entry שלי, כי נכנסנו לאמצע סדרה. התיקון היה לפצל את המדידה לשני דברים: `our_executed` (entry→exit מזווגים בחלון התצפית) ו-`provider_realized` (כל exit ש-V4SE פרסם, בלי קשר אם תפסנו את ה-entry). השני קרוב יותר ל-winrate אמיתי של הספק. על 3 exits קיבלנו 100% winrate, +2.4% PnL ממוצע. עם n=3 זה חסר משמעות סטטיסטית — אבל הכיוון מעניין מספיק כדי להצדיק שבועיים של דגימה ב-dry-run.

    המתמטיקה האמיתית על $100

    Binance Spot גובה 0.1% לכל צד — 0.2% round-trip. אם ההפסד הממוצע הוא -1.5% והרווח הממוצע +2%, צריך בערך 45% winrate רק כדי להיות breakeven אחרי עמלות. הדגימה של V4SE עד עכשיו הרבה יותר טובה, אבל 3 נקודות לא מוכיחות כלום.

    עם $10 לעסקה מתוך $100, כל עסקה מזיזה את היתרה ב-`10 × (PnL% − 0.2%) / 100`. ממוצע 2.4% = $0.22 לעסקה לפני השפעת ריבית דריבית. 3 עסקאות ביום = $6.60 לשבוע. לא משנה-חיים, אבל בדיוק סוג ה-edge-קטן-שמצטבר-בקנה-מידה שטרייד אלגוריתמי נועד לו.

    הסיכון האמיתי הוא לא רווחים איטיים — אלא עסקה קטסטרופלית אחת. לכן המבצע נועל $10 לעסקה ללא קשר לסיגנל, מדלג על כל SHORT (Binance Spot לא יכול לשורט בלי מרג'ין), מסרב להכפיל על צמד פתוח, ולא מזיז SL/TP כלל (V4SE לא מפרסם SL ומנהל exits בעצמו). אם V4SE מפסיק לשלוח exit על פוזיציה שמתפוצצת — נשב עם שק. לכן האיטרציה הבאה צריכה time-stop קשיח (נניח סגירה אוטומטית של כל פוזיציה מעל N שעות).

    האם חוזה חכם היה יכול לעשות את זה?

    טכנית כן. אפשר לדפלוי חוזה Solidity על Base או Arbitrum ש-keeper קורא לו כשמגיע סיגנל, והחוזה מבצע swap ב-Uniswap. על בנקרול של $100 זה רעיון גרוע: גז L2 הוא $0.10–$0.50 לעסקה, סליפג' DEX על עסקאות קטנות יכול להיות 0.5%+, אין stop-loss נייטיב — צריך keeper נפרד שיסגור, עוד $0.10+ כל פעם. סה"כ 1–3% round-trip, שהורג edge של 2%. CEX כמו בייננס ב-0.2% round-trip הוא הכלי הנכון לבודג'ט הזה.

    ביצוע חוזה חכם הופך מעניין בסכומים גבוהים יותר ולניתוב עמיד MEV (CoW Swap, 1inch Fusion) או לסיגנלים שדורשים קומפוזביליות on-chain (פוזיציות Aave, LP דלתא-ניוטרל). לסיגנלים טהורים עם בנקרול קטן — CEX מנצח על יחידות כלכלה.

    מה מוכן עכשיו

  • Webhook listener עם פרסר חזק לפורמט האמיתי של V4SE
  • Endpoint `?action=backtest` שמפצל למדידה של our-executed מול provider-realized
  • Binance Spot executor, dry-run כברירת מחדל, דפלוי בפרנקפורט, עם fallback מחירים ל-CoinGecko
  • כל סיגנל מפורסר של V4SE מוזן אוטומטית למבצע ב-dry-run
  • לוג עסקאות נשמר בין הרצות serverless (GitHub Gist כ-KV, עמיד לקובץ efemרי)
  • `?action=reset` לניקוי מצב לפני חלון האיסוף האמיתי
  • מה הלאה

  • שבועיים של איסוף נתונים ב-dry-run. יעד: 30+ עסקאות סגורות. Winrate מעל 55% אחרי עמלות = סף לשקול live.
  • Time-stop לפוזיציה (מגבלת זמן החזקה).
  • אם dry-run עובר את הסף: מפתח API של בייננס (spot trade only, בלי משיכות, IP-restricted), $100 seed, $10 לעסקה, 10 עסקאות מסלול.
  • Dashboard קטן חי שמראה פוזיציות פתוחות, PnL מ-market-mark, ו-PnL ממומש של היום — גלוי מטלפון.
  • התשובה הכנה ל"אפשר להרוויח עם $100?" — כנראה כמה דולרים לשבוע אם הסיגנלים מחזיקים, כנראה אפס אם לא. התשובה היותר מעניינת היא שהתשתית לבדוק את השאלה עולה אותו הדבר גם כשהתשובה כן וגם כשהיא לא — ועכשיו היא קיימת.

    אהבת את המאמר?

    קבל תוכן דומה ישירות למייל כל שבוע