פיתוח אלגוריתם ארביטראז' בין-בורסאי
תארו לעצמכם: אתם מבחינים בהפרש מחירים של 0.3% ב-BTC בבינאנס וב-Kraken. עמלות Taker הן 0.1% לכל בורסה, הרווח הנקי — 0.1%. אבל עד שהבוט שלכם מקבל הצעות מחיר, שולח הזמנות וממתין לאישור, הפער נעלם. הפתרון הוא זמן השהייה נמוך במיוחד וביצוע מקבילי. האלגוריתם שלנו סורק ספרי הזמנות של 20 בורסות תוך 10 אלפיות שנייה, ומציב הזמנות במקביל באמצעות asyncio.gather. החיסכון הממוצע מהטמעה הוא $500–$5,000 בחודש עם פערי מחירים יציבים, ולחלק מהלקוחות — עד $10,000. חבילות הפיתוח מתחילות ב-$5,000 עבור תצורה בסיסית.
לפי ויקיפדיה: ארביטראז', ארביטראז' בין-בורסאי מנצל חוסר יעילות בשוק. אנו מתמחים בארביטראז' בין-בורסאי (המכונה גם cross exchange arbitrage) ובונים אלגוריתמים כאלה במפתח מלא: מניטור ועד איזון יתרות אוטומטי. צרו קשר לבדיקה חינמית של האסטרטגיה שלכם.
בעיות שאנו פותרים
עיכובי העברה בין בורסות. אם אין לכם יתרות מחולקות מראש, הפער ייסגר לפני שהעסקה תאושר. פתרון: שמרו יתרות בכל בורסה והעבירו רק ברקע.
ביצוע חלקי של הזמנות. הזמנת שוק עשויה שלא להתמלא במלואה — רגל אחת של הארביטראז' נשארת פתוחה. אנו מיישמים מנגנון גידור ליתרה.
נתונים מיושנים. אם הצעות מחיר מגיעות באיחור של יותר מ-500 אלפיות שנייה, אתם סוחרים במחירים לא מעודכנים. אנו משתמשים ב-WebSocket וב-VPS קרוב לבורסה.
כיצד אנו מוצאים הזדמנויות ארביטראז'
האלגוריתם סורק ספרי הזמנות בכל הבורסות המחוברות במקביל, תוך התחשבות בעמלות Taker וברווח מינימלי. קוד הליבה:
import asyncio
from decimal import Decimal
class CrossExchangeArbitrage:
def __init__(self, exchanges, min_profit_pct=0.05):
self.exchanges = exchanges # dict: name -> ccxt exchange
self.min_profit = min_profit_pct / 100
async def scan_opportunities(self, symbol):
# Параллельно запрашиваем лучшие цены со всех бирж
tasks = {
name: asyncio.create_task(ex.fetch_ticker(symbol))
for name, ex in self.exchanges.items()
}
tickers = {name: await task for name, task in tasks.items()}
opportunities = []
exchanges = list(tickers.keys())
for i, buy_exchange in enumerate(exchanges):
for sell_exchange in exchanges[i+1:]:
buy_price = tickers[buy_exchange]['ask']
sell_price = tickers[sell_exchange]['bid']
# Учитываем fees
buy_cost = buy_price * (1 + self.get_fee(buy_exchange, 'taker'))
sell_revenue = sell_price * (1 - self.get_fee(sell_exchange, 'taker'))
profit_pct = (sell_revenue - buy_cost) / buy_cost
if profit_pct > self.min_profit:
opportunities.append({
'buy_exchange': buy_exchange,
'sell_exchange': sell_exchange,
'buy_price': buy_price,
'sell_price': sell_price,
'profit_pct': profit_pct
})
# И обратное направление
buy_price2 = tickers[sell_exchange]['ask']
sell_price2 = tickers[buy_exchange]['bid']
buy_cost2 = buy_price2 * (1 + self.get_fee(sell_exchange, 'taker'))
sell_revenue2 = sell_price2 * (1 - self.get_fee(buy_exchange, 'taker'))
profit_pct2 = (sell_revenue2 - buy_cost2) / buy_cost2
if profit_pct2 > self.min_profit:
opportunities.append({
'buy_exchange': sell_exchange,
'sell_exchange': buy_exchange,
'profit_pct': profit_pct2
})
return sorted(opportunities, key=lambda x: x['profit_pct'], reverse=True) מדוע זמן השהייה הוא קריטי
כל אלפית שנייה היא רווח פוטנציאלי. אם הבוט שלכם נמצא באירופה והבורסה באסיה, זמן השהייה יכול להגיע ל-200–300 אלפיות שנייה. במהלך הזמן הזה הפער עלול להיעלם. אנו מציבים בוטים למסחר על VPS במרכזי נתונים קרובים ככל האפשר לשרתי הבורסה (AWS Tokyo עבור בינאנס, AWS Frankfurt עבור Kraken). פינג של 1–5 אלפיות שנייה, זמן ביצוע עסקה מתחת ל-10 אלפיות שנייה. הבוט האוטומטי שלנו לארביטראז' מהיר פי 30 מיישומים סטנדרטיים, ותופס פערי מחירים שאחרים מפספסים.
תשתית ו-VPS
| ספק | אזור | פינג לבינאנס (AWS Tokyo) | מחיר לחודש (תצורה מינימלית) |
|---|---|---|---|
| AWS | טוקיו | <1 אלפית שנייה | החל מ-$30 |
| Google Cloud | אוסקה | ~2 אלפיות שנייה | החל מ-$35 |
| Hetzner | פרנקפורט | ~100 אלפיות שנייה (לא מומלץ) | החל מ-$10 |
ביצוע: הזמנות מקבילות
לזמן השהייה מינימלי, שתי ההזמנות נשלחות בו-זמנית:
async def execute_arbitrage(self, opportunity, qty):
buy_task = asyncio.create_task(
self.exchanges[opportunity['buy_exchange']].create_market_buy_order(
symbol, qty
)
)
sell_task = asyncio.create_task(
self.exchanges[opportunity['sell_exchange']].create_market_sell_order(
symbol, qty
)
)
buy_result, sell_result = await asyncio.gather(buy_task, sell_task)
return buy_result, sell_result
סיכון לביצוע חלקי: אחת ההזמנות עשויה שלא להתמלא או להתמלא חלקית. נדרש מנגנון איזון פוזיציות.
ניהול יתרות
איזון אוטומטי בין בורסות:
- ניטור יתרות כל N דקות
- אם סטיית היתרה עולה על 20% מהיעד → ייזום העברה
- ההעברה מתבצעת ברקע, מבלי לחסום את המסחר
- ניטור אישורי עסקאות
סוגי ארביטראז'
| סוג | תיאור | סיכונים | תשואה אופיינית |
|---|---|---|---|
| ארביטראז' ספוט | קנייה בבורסה אחת, מכירה באחרת | עיכוב העברה, עמלות | 0.1–0.3% לעסקה |
| ארביטראז' בסיס | שורט חוזים עתידיים + לונג ספוט | שינוי בסיס, נזילות | 0.5–2% בשנה |
| ריבית מימון | לונג ספוט + שורט חוזה תמידי עם מימון חיובי | שינוי פתאומי במימון | 0.01–0.05% לכל 8 שעות |
| מטבעות יציבים | קניית USDT/USDC בבורסה אחת, מכירה באחרת | החלקה, נזילות דלילה | 0.05–0.1% |
המערכת שלנו מתמודדת עם ארביטראז' ספוט וחוזים עתידיים, כמו גם ארביטראז' מטבעות יציבים, כדי למקסם תשואות.
מקרה מבחן שלנו: הפחתת זמן השהייה מ-150 אלפיות שנייה ל-5
עבור לקוח אחד שסחר ב-BTC/USDT בבינאנס וב-Kraken, זמן השהייה הראשוני היה 150 אלפיות שנייה עקב VPS באירופה. לאחר מעבר ל-AWS Tokyo (פינג של 1 אלפית שנייה לבינאנס) ואופטימיזציה של ביצוע ההזמנות עם import asyncio from decimal import Decimal class CrossExchangeArbitrage: def __init__(self, exchanges, min_profit_pct=0.05): self.exchanges = exchanges # dict: name -> ccxt exchange self.min_profit = min_profit_pct / 100 async def scan_opportunities(self, symbol): # Параллельно запрашиваем лучшие цены со всех бирж tasks = { name: asyncio.create_task(ex.fetch_ticker(symbol)) for name, ex in self.exchanges.items() } tickers = {name: await task for name, task in tasks.items()} opportunities = [] exchanges = list(tickers.keys()) for i, buy_exchange in enumerate(exchanges): for sell_exchange in exchanges[i+1:]: buy_price = tickers[buy_exchange]['ask'] sell_price = tickers[sell_exchange]['bid'] # Учитываем fees buy_cost = buy_price * (1 + self.get_fee(buy_exchange, 'taker')) sell_revenue = sell_price * (1 - self.get_fee(sell_exchange, 'taker')) profit_pct = (sell_revenue - buy_cost) / buy_cost if profit_pct > self.min_profit: opportunities.append({ 'buy_exchange': buy_exchange, 'sell_exchange': sell_exchange, 'buy_price': buy_price, 'sell_price': sell_price, 'profit_pct': profit_pct }) # И обратное направление buy_price2 = tickers[sell_exchange]['ask'] sell_price2 = tickers[buy_exchange]['bid'] buy_cost2 = buy_price2 * (1 + self.get_fee(sell_exchange, 'taker')) sell_revenue2 = sell_price2 * (1 - self.get_fee(buy_exchange, 'taker')) profit_pct2 = (sell_revenue2 - buy_cost2) / buy_cost2 if profit_pct2 > self.min_profit: opportunities.append({ 'buy_exchange': sell_exchange, 'sell_exchange': buy_exchange, 'profit_pct': profit_pct2 }) return sorted(opportunities, key=lambda x: x['profit_pct'], reverse=True) , זמן השהייה ירד ל-5 אלפיות שנייה — שיפור של פי 30. הרווח החודשי עלה מ-$1,200 ל-$10,000, מכיוון שהבוט תפס פערי מחירים שפספס קודם לכן.
תהליך העבודה
- ניתוח: אנו לומדים את הנפחים, הבורסות, זוגות המסחר והנזילות שלכם. אנו מגבשים מפרט.
- תכנון: ארכיטקטורת האלגוריתם, בחירת מחסנית טכנולוגית (Foundry, ethers.js, viem), הגדרת VPS.
- הטמעה: אנו כותבים קוד, משלבים APIs, ומקימים ניטור.
- בדיקות: בדיקות חוזרות על נתונים היסטוריים (אם זמינים), בדיקות fuzz סטוכסטיות על רשת בדיקה.
- השקה: העלאה לסביבת ייצור, כוונון פרמטרים, ניטור.
מה כלול ואחריות
- קוד מקור מלא עם הערות (Solidity/Vyper לחלק שעל השרשרת, Python/Node.js לבוט)
- תיעוד: ארכיטקטורה, הוראות הפעלה, תיאור סיכונים
- גישה לניטור (Grafana + Prometheus, התראות Telegram)
- הדרכה לצוות שלכם (2–3 מפגשים של שעתיים כל אחד)
- 30 ימי תמיכה לאחר ההשקה
- אחריות ללא פונקציות נסתרות (דלתות אחוריות) — הקוד פתוח לחלוטין לבדיקה
- אנו מפתחים פתרונות בלוקצ'יין מאז 2017, השלמנו למעלה מ-15 פרויקטים ב-DeFi וארביטראז'. אנו מבטיחים קוד שקוף ומסירה בזמן, עם תמחור החל מ-$5,000 עבור תצורה בסיסית.
לוחות זמנים משוערים
- גרסה בסיסית (2 בורסות, זוג אחד, ניטור פשוט): החל משבועיים
- גרסה מתקדמת (5+ בורסות, ניהול יתרות, ניהול סיכונים): מחודש
- גרסה ארגונית (10+ בורסות, רב-מטבעי, רמת HFT): מחודשיים
העלות מחושבת באופן אישי — כתבו לנו להערכה. הזמינו פיתוח אלגוריתם ארביטראז' בין-בורסאי והתחילו להרוויח מהפרשי מחירים.







