פיתוח אינדיקטור Volume Delta עבור TradingView ופלטפורמות מותאמות אישית

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

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

שאלות נפוצות

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

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

פיתוח אינדיקטור Volume Delta: איפה החישוב נשבר

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

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

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

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

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

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

מה נותן חישוב מדויק של דלתת נפח במסחר

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

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

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

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

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

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

Volume Delta: חישוב לפי עסקאות מול נרות מצטברים

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

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

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

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

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

שלבי ההטמעה: ביקורת, סכימה, הגדרה, בדיקה, מסירה

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

  1. ביקורת מקור הנתונים — אילו זרמי עסקאות ונרות מצטברים זמינים, האם קיים סימן יזם, באיזו השהיה מגיעים העדכונים, היכן ייתכנו החמצות ופתיחות מחדש.
  2. סכימת החישוב — כללי האגרגציה בחלון, רגע איפוס הערך המצטבר, ההתנהגות בגבול הסשן ובמעבר תקופה. התוצאה — מפרט שלפיו החישוב משוחזר באופן חד-משמעי.
  3. אב-טיפוס והשוואה — מחשבים על נתונים היסטוריים ומשווים לחישוב ידני של קטעי ביקורת; פערים מפרקים עד הסיבה, ולא מנטרלים במקדם התאמה.
  4. ממשק ופרמטרים — סט פרמטרים ניתנים לשליטה, ערכי ברירת מחדל, התנהגות הגרף בנתונים חלקיים ובמעבר תקופות.
  5. בדיקת החישוב — קרעים בציטוטים, נזילות נמוכה, התפרצויות נפח, סופי שבוע ארוכים, חישוב מחדש של היסטוריה: לכל תרחיש יש תוצאה מצופה ובדיקה.
  6. מסירה לתפעול — קוד מקור, האינדיקטור הבנוי, הוראות התקנה ועדכון, ופירוט ההיגיון עם הצוות שלכם.

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

הרכב האספקה: מודול חישוב, סכימות ותקנות

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

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

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

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

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

מה היה

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

מה שינינו ומה יצא

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

שיעור ההיפוכים הכוזבים ירד משליש מהאותות ל-6–8%, והפער בין הדלתה לזרם הבורסה — מ-15% לפחות מ-1%. חישוב מחדש של הנר הפעיל הואץ כמעט פי שניים, וההחמצות בעת חיבור מחדש הפסיקו להשפיע על הרינדור: הנר או מהימן, או מסומן כבלתי מהימן.

מה לעשות אם החישוב כבר הוטמע אך חורג מהזרם?

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

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

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

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

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

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

שאלות טכניות: חישוב, נתונים, תמיכה

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

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

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

כיצד מחושבת הדלתה היכן שאין זרם עסקאות בודדות?

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

מה לעשות עם החמצות בהיסטוריה?

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

כיצד מתוחזק האינדיקטור בשינוי פורמט הנתונים?

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

נדון במשימה ונחזור עם תוכנית והערכת עבודה

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

מה עוזר לנו להעריך במדויק את היקף העבודה:

  • מקור הנתונים. מהיכן מגיעות העסקאות: פיד הבורסה, ייצוא מהארכיון, זרם עצמאי; איזה היקף היסטוריה נדרש לחישוב מחדש והאם קיים קונטור בדיקה.
  • פלטפורמה וסביבה. האינדיקטור נדרש בתוך TradingView, במסוף עצמאי או בשניהם בבת אחת — מכך תלויים גם ההיקף וגם אופן אספקת הנתונים.
  • היגיון החישוב. כיצד מחשבים את הדלתה: לפי עסקאות טיק או לפי מיטב מחירי הביקוש וההיצע, איזה חלון אגרגציה והחלקה משתמשים.
  • תצוגה ואותות. היסטוגרמה לפי נרות, קו מצטבר, פער בין מחיר לנפח, התראות על התפרצויות — אילו אלמנטים מציירים ומתי מוסרים אות.
  • עומס. כמה כלים וטיים-פריימים פתוחים בו-זמנית וכמה קריטי הפיגור של התמונה אחרי הזרם.
  • אינטגרציות. האם נדרש ייצוא אותות למערכות חיצוניות ותיעוד (לוג) של היסטוריית החישובים.
  • מגבלות וקבלה. הרשאות גישה לנתונים, ערכי ייחוס להשוואה, קריטריונים לקבלת התוצאה.

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