פיתוח אלגוריתם מסחר דינמי ברשת עם ATR ו-recentering

רשת סטטית נשברת במגמות ובפניות חדות — הרווח נאכל על ידי ירידה. אנו מפתחים מסחר דינמי ברשת עם ATR ו-recentering לפי דרישה: הרשת מתאימה את עצמה לתנודתיות ומתארגנת מחדש לפי המחיר. אתה מקבל אלגוריתם עם סיכון מבוקר והיגיון פעולה ברור.

שירותי פיתוח בלוקצ'יין

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1376
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1350
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    798
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1093
  • פיתוח לוגו חברת AIDER
    פיתוח לוגו חברת AIDER
    1035
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1132

מסחר בגריד דינמי: היכן נשברת הרשת הסטטית

רשת סטטית נבנית פעם אחת: הרמות מוצבות במרווח שווה, ומכאן והלאה האלגוריתם רק מציב פקודות לימיט. כל עוד המחיר נע בטווח עם משרעת צפויה, זה עובד.

ברגע שהתנודתיות משתנה — והיא משתנה כל הזמן — המרווח מפסיק להתאים לתנועה: בשוק רגוע הפקודות מופעלות לעתים רחוקות מדי, ובתנועה חדה המחיר חולף על פני כמה רמות בנר אחד, והרשת לא מספיקה לעבוד.

מכאן נכנסת לפעולה המכניקה של מיצוע הפוזיציה, וכאן הרשת הסטטית נשברת באמת. כל רמה שנחצית מוסיפה נפח לכיוון אחד, מחיר הכניסה הממוצע נע לעבר המחיר הנוכחי, אבל הטווח נשאר כשהיה. אם המחיר יוצא מגבולו, הרשת מפסיקה לייצר עסקאות, והפוזיציה המצטברת תלויה עם ירידה מתמשכת.

ככל שהמחיר נשאר מחוץ לטווח זמן רב יותר, כך הנפח גדול יותר וה�יציאה יקרה יותר — מלכודת מיצוע קלאסית, שבה האלגוריתם כבר לא מנהל סיכון, אלא רק ממתין להיפוך.

מסחר בגריד דינמי פותר זאת אחרת. מרווח הרשת מחושב מחדש מהתנודתיות הנוכחית — בדרך כלל באמצעות ATR, שנותן הערכה של מהלך המחיר הממוצע ומרחיב או מצמצם את הרמות באופן אוטומטי.

כשהמחיר נע לקצה הטווח, מופעל recentering: הרשת נעה בעקבות השוק, שומרת על מבנה עבודה ומונעת מהפוזיציה להיתקע מעבר לגבול. המיצוע במקרה זה מוגבל בכללים — תקרה על הנפח, מרווח ההשלמה ותנאי עצירה.

התוצאה — רשת שנושמת יחד עם השוק: בקטע רגוע אוספת יותר עסקאות, ובקטע חד לא צוברת נפח מיותר. נבחן כיצד זה נסגר בקוד ואילו פרמטרים קובעים את התנהגות האלגוריתם.

מה נותן גריד אדפטיבי עם ATR ו-recentering

שליטה בשפל תחת שליטה בקטעים תנודתיים

ATR קובע את צעד הרשת לא לפי אחוז קבוע, אלא לפי טווח המחיר הנוכחי: בשוק רגוע הרמות מתכווצות, באימפולס — מתרחבות. זה מסיר את הגורם העיקרי לשפלים עמוקים בגריד סטטי — רשת צפופה שהמחיר עובר דרכה מבלי לרכוש ולו רמה אחת. בקטעים היסטוריים עם התרחבות תנודתיות השפל מצטמצם פי כמה, כי הפוזיציה נבנית בשלבים ולא בבלוק אחד.

יותר מחזורי עסקאות סגורים

כאשר הצעד מתאים את עצמו, וגבולות הטווח מחושבים מחדש דרך recentering, המחיר חוזר לעתים קרובות יותר לתוך אזור העבודה וסוגר זוגות פקודות. מספר מחזורי העסקאות שהושלמו גדל — עם אותו הון ואותו אופק.

עבור הלקוח זוהי תוצאה ישירה: המחזור בתוך הרשת גבוה יותר, ורמות "תקועות" שאינן פעילות — פחות.

התאוששות מהירה יותר לאחר טרנד

לאחר תנועה חד-כיוונית חזקה, recentering מזיז את הרשת לאזור שיווי משקל חדש, במקום להמתין לחזרה לישן. זמן היציאה מהשפל מתקצר: האלגוריתם אינו מחזיק את ההון בצד עד שהמחיר יחזור לרמות מיושנות. הגריד האדפטיבי נשאר בשוק וממשיך לצבור מחזורים במקום שבו הסטטי פשוט עמד ללא פעילות.

צפיות במקום כיוונון ידני מחדש

הפרמטרים של ATR והלוגיקה של recentering מתוארים באופן פורמלי, ולכן התנהגות האלגוריתם ניתנת לשחזור בבדיקות ואינה תלויה במי ומתי הפעיל מחדש את הבוט. הלקוח מקבל מערכת שניתן לבדוק על נתונים היסטוריים ועל פורוורד, ולא אוסף של החלטות ידניות.

השוואת מצבים: סטטי, ATR-גריד, recentering

שלושה מצבים פותרים משימות שונות, והבחירה ביניהם אינה שאלה של "מה טוב יותר", אלא שאלה של כיצד המחיר מתנהג במכשיר שלכם.

גריד סטטי מחזיק רמות קבועות ופועל כל עוד השוק נע בטווח צדדי; ATR-גריד מחשב מחדש את צעד הרשת לפי התנודתיות; recentering מזיז את כל המבנה בעקבות המחיר כדי לא לצאת מהטווח. להלן השוואה לפי תנאי היישום והמגבלות.

מצב מתי מתאים מגבלות
גריד סטטי טווח צדדי יציב, טווח צר, תנודתיות צפויה כאשר המחיר יוצא מגבולות הרשת הפוזיציה נתקעת; הפעלה מחדש ידנית, הון לא מנוצל
ATR-גריד התנודתיות משתנה, אך אין מגמה מכוונת השהיה: ATR מחושב לפי נרות קודמים, בהפיכה חדה הצעד לא מספיק להתכוונן
Recentering המחיר נכנס למגמה, יש צורך לשמור על הטווח הזזות תכופות של הרשת חותכות רווח בעמלות; נדרש טריגר מדויק, אחרת הפוזיציה "ננסרת"

מה לקחת בחשבון בבחירה

המצב הסטטי שקוף וצפוי: היגיון הרשת אינו משתנה, איתור תקלות פשוט, אך כל הרחבת טווח דורשת התערבות. ATR-גריד מסיר חלק מהעבודה הידנית — צעד הרשת מתאים את עצמו לתנודתיות הנוכחית, ולכן הרשת לא "מתכווצת" בשוק שקט ולא הופכת לדלילה מדי בשוק פעיל. Recentering מוסיף שכבה שלישית: הרשת לא רק משנה צעד, אלא עוברת כולה, ושומרת על המחיר באזור העבודה.

המגבלות של שלושת המצבים זהות במהותן — אלו עמלות, החלקה וסיכון של הצטברות פוזיציה נגד המגמה. ההבדל הוא באיזו תדירות המצב מאלץ אתכם להתערב וכמה הוא רגיש לשינוי במצב השוק. בפועל משלבים בין המצבים: ATR קובע את הצעד, recentering — את הגבולות, וקטע סטטי נשאר עוגן לחישוב נקודת הכניסה.

לפני היישום אנו מריצים את המצב הנבחר על נתונים היסטוריים של המכשיר שלכם ובוחנים כיצד הוא מתנהג בשינוי תנודתיות ובקטעי מגמה — דווקא שם מתגלות המגבלות שאינן נראות בטווח הצדדי.

כיצד אנו מיישמים מסחר דינמי ברשת (grid trading)

יישום מסחר דינמי ברשת מתחיל בביקורת: אנו בוחנים באילו זוגות ובאילו מצבי נזילות (liquidity) מתרכזת הפעילות, כיצד מתנהגת התנודתיות במהלך היום, והיכן רשת עם מרווח קבוע מפסיקה לעבוד.

בשלב זה אנו מגדירים את טווח הריסנצ'ורינג (recentering) — עד כמה רחוק המחיר יכול לסטות מהמרכז לפני שיש לבנות מחדש את הרשת, ואיזו תקופת ATR מספקת אות יציב בכלי הנבחר.

לאחר מכן אנו מתכננים את הסכמה: מקשרים את מרווח הרשת לערך ה-ATR הנוכחי, מגדירים את ההיגיון לחישוב מחדש של הרמות בעת יציאה מגבולות הטווח, ואת כללי ההשהיה ברגעים של נרות חריגים. הסכמה נקבעת לפני כתיבת הקוד — כך שכיוונון הפרמטרים מתבצע לפי המסמך, ולא לפי אינטואיציה.

  1. ביקורת שוק וכלי — אוספים סטטיסטיקות של תנודתיות, נזילות וספריד, ומגדירים טווחי מחיר עובדים.
  2. תכנון הסכמה — מתארים את הקשר בין ATR למרווח הרשת, תנאי הריסנצ'ורינג, ומגבלות על מספר ההזמנות הפעילות.
  3. כיוונון פרמטרים — מגדירים את תקופת ה-ATR, מכפיל המרווח, גבולות הטווח וספי ההשהיה עבור הזוג הספציפי.
  4. מימוש וחיבור — כותבים את ההיגיון לחישוב מחדש של הרמות, מתחברים ל-API של הבורסה, ומגדירים טיפול בכשלים ובניסיונות חוזרים.
  5. בדיקה על נתונים היסטוריים — מריצים את האסטרטגיה על תקופות עבר, כולל תנועות חדות וטווחי מסחר צדדיים, ובוחנים את השיא השלילי (drawdown) ואת תדירות הריסנצ'ורינג.
  6. הרצת בדיקה — מוציאים את האלגוריתם לנפח קטן, ומשווים את ההפעלות בפועל לאלו המחושבות.
  7. מסירה — מוסרים את הקונפיגורציות, את ההיגיון לחישוב מחדש ואת ההוראות לשינוי פרמטרים.

הבדיקה אינה מסתיימת בנתונים היסטוריים: אנו מדמים בנפרד תרחישים שבהם המחיר יוצא מהטווח וחוזר — דווקא שם הרשת הדינמית מציגה את ההבדל לעומת הרשת הקבועה. בסיכום אנו משווים בין הרמות המחושבות לאלו בפועל, מתקנים את הפערים, ורק לאחר מכן מרחיבים את הנפח.

המסירה כוללת לא רק את האלגוריתם העובד, אלא גם סכמת פרמטרים ברורה: אילו ערכים אחראים למה וכיצד לשנות אותם בעת שינוי מצב השוק. תארו את המשימה — ונחזור עם הערכה ותוכנית יישום.

ארטיפקטים: קונפיגורציות, מדיניויות, תיעוד

לאחר הרצת אלגוריתם grid trading דינמי לעבודה, על הלקוח לקבל לא רק גישה לחשבון המסחר, אלא גם סט מלא של ארטיפקטים שלפיהם ניתן להפעיל את המערכת, לפתח אותה ולהעביר אותה לצוות אחר. להלן — מה כלול באספקה.

  • קובצי קונפיגורציה — פרמטרים של הרשת, צעד ומספר הרמות, מקדמי מכפיל ATR, ספי recentering וכללי בנייה מחדש של הטווח. נשמרים במאגר, מנוהלים בגרסאות, שינויים עוברים סקירה.
  • סכמות ודיאגרמות — מפת זרימות הנתונים בין ממשקי הבורסה, מודול חישוב האינדיקטורים, מנוע הפקודות ומערכת רישום הפוזיציות. בנפרד — לוגיקת מצבי הרשת בעת הפעלת תנאי עצירה.
  • מדיניויות ניהול סיכונים — מגבלות על חשיפה לפי instrument, drawdown מקסימלי, כללי עצירת האלגוריתם בעת תנודתיות חריגה וסדר התערבות ידנית.
  • נהלי הפעלה — כיצד להפעיל ולעצור את האסטרטגיה, כיצד לשנות פרמטרים ללא הפעלה מחדש, מה לעשות בעת ניתוק החיבור לבורסה וכיצד לשחזר את מצב הרשת.
  • דיווח וניטור — סט מדדים (מילוי רמות, רווח ממוצע למחזור, תדירות recentering), dashboard וכללי התראות בעת סטייה מהתנהגות צפויה.
  • תיעוד פריסה — הוראות להקמת סביבה, משתני סביבה, תלויות וסדר עדכון גרסאות ללא השבתה.
  • יומן בדיקות — תוצאות הרצות על נתונים היסטוריים ובמצב הדמיה, כולל תרחישי קצה: גאפים חדים, נזילות נמוכה, טווח צדדי ממושך.
  • חבילת מסירה — הרשאות גישה, סכמת ארכיטקטורה, אנשי קשר אחראיים ותוכנית העברת ידע לצוות הלקוח.

כל ארטיפקט מאושר בשלב התכנון, ולא נמסר בדיעבד — כך הלקוח רואה מה בדיוק יקבל לידיו עוד לפני תחילת הפיתוח.

מקרה בוחן: הפחתת drawdown ב-40% לאחר הטמעת ATR grid

מה היה לפני

הלקוח הגיע עם grid סטטי קלאסי בשוק הספוט: רשת הרמות הוצבה פעם אחת לפי מסדרון המחיר ומכאן ואילך לא חושבה מחדש. כל עוד השוק נע בטווח — הכול עבד. ברגע שהחל יציאה מגמתית מהטווח, הרשת נותרה תלויה בצד הרחק מהמחיר: פקודות לא בוצעו, וחלק מהפוזיציה נותרה במינוס ללא אפשרות למיצוע.

ה-drawdown בקטע ההיסטורי הגיע ל-34% מההון שהוקצה, ושיעור הזמן שבו ה-grid למעשה סחר לא עלה על 40% — בשאר הזמן האלגוריתם עמד מחוץ לשוק.

מה שינו

כתבנו מחדש את הלוגיקה ל-grid trading דינמי: גבולות המסדרון מחושבים כעת לא כקבוע, אלא מהתנודתיות דרך ATR — הטווח האמיתי הממוצע בחלון. רוחב צעד הרשת מקושר ל-ATR הנוכחי, ולכן בשוק רגוע הרשת מתהדקת, ובהתרחבות תנודתיות היא נמתחת ואינה נשברת בדחף אחד.

המרכיב השני — recentering: כאשר המחיר יוצא מגבול המסדרון בשיעור נתון של ATR, הרשת לא "ממתינה", אלא נבנית מחדש סביב מרכז חדש, תוך שמירה על הפוזיציות שכבר נפתחו וחישוב מחדש של רמות עתידיות בלבד.

בנפרד הגדרנו הגנה מפני בנייה מחדש כוזבת: recentering מופעל לא על כל פירצה בגבול, אלא לאחר אישור — המחיר חייב להישאר מעבר לרמה למספר נרות נתון. זה הסיר את הטלטול של הרשת על רעש ואת העסקאות המיותרות.

מדדים לפני ואחרי

מדד לפני אחרי
drawdown מקסימלי 34% 20%
שיעור הזמן בשוק 40% 78%
צעד רשת ממוצע קבוע אדפטיבי לפי ATR

ה-drawdown ירד ב-40% ביחס למקורי, זמן המסחר הפעיל גדל כמעט פי שניים. את הלוגיקה בנינו ב-TradingView לבדיקת אותות והעברנו למודול הרצה עם backtest על נתונים היסטוריים והרצה על חשבון בדיקה לפני העלאה לפעילות.

במה שונה מסחר דינמי ברשת (grid trading) מבוט DCA?

בוט DCA פועל לפי לוח זמנים קבוע מראש: קונה במנות שוות במרווחים שווים או בירידות מוגדרות מהמחיר הממוצע. ההיגיון אינו מסתכל על מה שקורה בשוק — לא על התנודתיות ולא על כיוון התנועה.

זה הופך את ההתנהגות לצפויה, אך גם לעיוורת: במגמה ממושכת האיזון צובר פוזיציה נגד התנועה, והמחיר הממוצע מתרחק יותר ויותר מהשוק.

מסחר דינמי ברשת בנוי אחרת. רשת הרמות מחושבת מחדש לפי התנודתיות הנוכחית — הצעד בין ההזמנות מתרחב כשהשוק סוער, ומצטמצם בתקופות רגועות. ATR קובע את הצעד הזה כחלק מהטווח הממוצע של המחיר, ולכן הרשת לא "מתכווצת" בטווח צר ולא נמתחת עד כדי כך שההזמנות מפסיקות להתבצע. Recentering מזיז את כל המבנה בעקבות המחיר, כשהוא יוצא מגבולות המסדרון העובד.

ההבדל המרכזי הוא בתגובה למגמה. בוט DCA ממשיך לאזן כלפי מטה עד שנגמרת היתרה או שמופעל הסטופ. הרשת הדינמית מזהה תנועה מכוונת או מזיזה את המרכז, או משהה את הצבת ההזמנות נגד המגמה, תוך שמירה על אזור עבודה סביב המחיר העדכני.

זה לא מבטל את הסיכון, אבל משנה את טבעו: במקום צבירת פוזיציה מפסידה, הבוט מנהל את הטווח שבו הוא סוחר.

גם ניהול הסיכונים בנוי אחרת. אצל בוט DCA המגן העיקרי הוא מגבלה על נפח הפוזיציה הכולל. אצל הרשת הדינמית מתווספות הגבלות על רוחב המסדרון, הסטייה המקסימלית של המרכז והשהיה כאשר התנודתיות יוצאת מהטווח המחושב. именно הפרמטרים האלה, ולא עצם קיומה של הרשת, קובעים אם האסטרטגיה תשרוד מגמה חדה או תישאר בדשדוש.

ספקות טכניים בנוגע ל-dynamic grid trading

dynamic grid trading מעורר את מרבית השאלות בדיוק במקום שבו התאוריה נגמרת והשוק האמיתי מתחיל: כיצד הרשת מתנהגת בטרנד ממושך, מה קורה ל-drawdown בתנועה חדה ועד כמה אפשר בכלל להתאים אותו לנכס ספציפי. להלן ניתוח של הספקות הטכניים שאיתם מגיעים לרוב לפני ההתחלה.

מה קורה לרשת כאשר השוק נכנס לטרנד יציב בכיוון אחד?

רשת סטטית בטרנד צוברת פוזיציה נגד התנועה ונכנסת ל-drawdown. רשת דינמית בונה את עצמה מחדש: האלגוריתם עוקב אחר הכיוון באמצעות מסנן ATR, וכאשר הטרנד מאושר הוא מזיז את הטווח (recentering), במקום להמשיך לבצע averaging לתוך הפסד.

סף ההפעלה ניתן להגדרה — משמרני (מזיזים לעתים רחוקות יותר, פחות הפעלות שווא) ועד אגרסיבי (עוקבים מהר יותר אחר המחיר, אך עלויות הבנייה מחדש גבוהות יותר).

כיצד נשלט ה-drawdown והאם ניתן להגדיר לו גבול?

ה-drawdown מוגבל על ידי שלושה פרמטרים: גודל הפוזיציה המקסימלי לרשת, המרווח בין הרמות וסטופ קשיח על ה-drawdown הכולל של התיק. עם הגעה ללימיט האלגוריתם מפסיק לצבור פוזיציה וממתין — במקום averaging אינסופי. הגבול מוגדר מראש, ולכן התרחיש הגרוע ביותר ידוע לפני ההפעלה, ולא מתברר בדיעבד.

עד כמה גמיש הגדרת מרווח הרשת ועבור אילו נכסים זה עובד?

המרווח נקשר ל-volatility דרך ATR, ולא לאחוז קבוע — בנכס רגוע הרשת צפופה יותר, בנכס תנודתי רחבה יותר, כדי שהרעש לא יוציא אותה. מספר הרמות, מכפיל המרווח וגבולות הטווח מוגדרים בנפרד. הגישה עובדת על כלים נזילים עם volatility צפויה; בנכסים בעלי נזילות נמוכה העלויות אוכלות את היתרון.

כיצד נבדקת האסטרטגיה לפני הפעלה על כספים אמיתיים?

מריצים על נתונים היסטוריים תוך התחשבות בעמלות וב-slippage, ולאחר מכן — על חשבון בדיקה בזמן אמת. בודקים לא את התשואה, אלא את היציבות: כיצד מתנהג ה-drawdown בתקופות טרנדיות ובדשדוש, כמה עסקאות ביום, באיזו תדירות מופעל ה-recentering. רק לאחר מכן מעבירים את הפרמטרים לחשבון העבודה.

תארו את הנכס ואת האופק — נחזור עם הערכת פרמטרים ותוכנית לבדיקת האסטרטגיה.

בואו נדון במשימה שלכם ב-grid trading

לפני שנציע ארכיטקטורה, עלינו להבין את המשימה שלכם: באילו זוגות וטיימפריימים פועלת האסטרטגיה, איזה הון מוקצה לרשת, אילו בורסות וסוגי חשבונות מעורבים. מכך תלוי כיצד להגדיר את צעד הרשת, טווח ה-recentering ורגישות מסנן ה-ATR לתנודתיות. תארו את המשימה — נחזור עם הערכה ותוכנית עבודה.

מה נבהיר ונקבע כבר בהתחלה:

  • לוגיקת הרשת: צעד בין הרמות, מספר הפקודות, פיזור הנפח בין הרמות והתנהגות כאשר המחיר יוצא מגבולות הטווח.
  • לוגיקת ה-recentering: לפי איזה טריגר מזיזים את הרשת — פריצת גבול, סחיפה מצטברת של המחיר או אות ATR, וכיצד מעבירים פוזיציות שלא נסגרו.
  • תפקיד ה-ATR: תקופת החישוב, מכפיל להתאמת הצעד, חיתוך התרחבויות שווא של תנודתיות והשהיית מסחר בתנאים חריגים.
  • ניהול סיכונים: drawdown מקסימלי, מגבלה על פוזיציות בו-זמניות, סטופ לפי האסטרטגיה וכללי עצירה עם מיצוי הטווח.
  • אינטגרציה עם הבורסה: חיבור REST ו-WebSocket, מגבלות על קצב הבקשות, טיפול בביצועים חלקיים ובניתוקי חיבור.
  • תשתית: היכן רץ הבוט, כיצד נשמר מצב הרשת, כיצד מתאוששים לאחר הפעלה מחדש ללא אובדן פוזיציות.
  • ניטור ודיווח: מדדי תשואה, לוג עסקאות, התראות על סטיות ודרך התאמה בין הפוזיציות בפועל לבין המחושבות.

לאחר הניתוח נחזור עם הערכת לוחות זמנים, הרכב העבודה ותוכנית הטמעה — עם שלבים, נקודות בקרה ותוצאה ברורה בכל אחד מהם.