תיאור הפעולה מאחורי הקלעים

בעמוד זה תמצא את כל המידע שדרוש למנהל המערכת בעבודה מול הממשק שלנו ל-MT4. מטרת התוכן כאן היא לתת לך את הכלים לאבחן בעיות או ליצור פתרונות לאתגרים בהטמעה.
להזכירך, כברירת מחדל בהגדרות ה-INI, היישום לוקח הפסקה מפעילות הסנכרון השוטפת וחישוב סיכון (RMS) החל מיום שבת בשעה 01:00 UTC ועד ליום ראשון בשעה 19:00 UTC.

סדר פעולות חד פעמיות לאחר הפעלת היישום

כל כשלון באחד מהשלבים המתוארים ברשימה, גורם לכתיבת הודעת שגיאה ב-log.txt וסגירה מיידית של היישום.

  1. חיסול כל תתי התיקיות מתוך התיקייה בה נמצא היישום, למעט תיקיות ששמן כולל את המילה Email, תיקיות אלו אמורות להכיל קבצים לצירוף להודעות הדוא"ל (ראה עמוד אודות ההתקנה).
  2. קישור לקובץ ה-mtmanapi.dll ויצירת מחלקות תוכנה מול ה-API. בחינת תאימות גרסה בין ה-DLL לבין יישום הממשק.
  3. הפעלת דיאלוג הגדרות קובץ ini במידה ושדה חובה נמצא ריק. מדובר בחלון ויזואלי. במידה והמשתמש לחץ על Cancel, היישום נסגר מיד.
  4. טעינת הגדרות מה-ini באופן חד פעמי. כל שינוי בקובץ בזמן שהיישום פעיל, לא ישפיע על התנהגות היישום !
  5. התחברות לשרת הייפר ובחינת עדכון גרסה.
    רק בסעיף זה, אם התחברות נכשלה - היישום נשאר פעיל, ממתין 60 שניות ואז מפעיל מנגנון אתחול עצמי בניסיון להתגבר על התקלה.
  6. טעינת הגדרות ERP / CRM של הייפר, לרבות טבלת סניפים והגדרות תיבות דוא"ל.
  7. מתבצע כיול שעון מקומי בהתאם למוגדר בטבלת הפלטפורמות. אם לא מוגדר הממשק יפעל על UTC בלבד.
    עם זאת זמני העסקאות מועתקים תמיד מהרשום בפלטפורמה. תקלה אפשרית תהיה בהמרה של זמני ביצוע העסקאות לזמן UTC בשדות הנפרדים שהוקצו לכך.
  8. קישור לשדות ייעודיים לפי שם ויזואלי (אנגלית בלבד), כמתואר בעמוד ההתקנה. במידה וחסרים שדות חובה, תופיע ההודעה:
    This application cannot run because Mandatory fields are missing (setup spare fields on hyper clients).
  9. במידה והטמעת הפלטפורמה נעשית בפעם הראשונה, אזי תיווצר רשומת "hyp_Trading Systems List" חדשה, אחרת ידרסו ערכי השדות הבאים:
    'Data Source','Channel Purpose','Platform Type','Connected to Hyper Database','Hyper - TP Integration Username'
    במקרה שהוסיף רשומה חדשה, מציג pop-up ויוצא החוצה. כעת על מנהל המערכת להשלים הגדרות.

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

  1. מתחבר לשרת MT4 בפעם הראשונה, על פי שדות ההגדרה מתאפשר להגדיר עד 4 כתובות (2 לשרת ראשי ועוד 2 לגיבוי).
  2. טוען משרת הייפר את רשימת הלקוחות הקיימים ועסקאות פתוחות על פי Data Source. מבצע אופטימיזציה של הרשימות לקראת ריצה.
  3. נכנס אל PUMP MODE וממתין עד 60 שניות לסנכרון עם מטה.
  4. מסנכרן רשימת סוחרים זמינים ב-manager מול רשימת הסוחרים מהייפר. אם המערכת מוגדרת במצב "עוקב", אזי יושלמו חשבונות חדשים שלא היו קיימים. אם המערכת במצב CRM אזי תשלח התראה והם לא יוספו.
    * תיקון שיוך חשבונות מחייב אתחול היישום כי אין דרך לחזור על התיאום הזה.

זהו. נכנס לסנכרון שוטף...

הסבר על יבוא הגדרות משרת ה-MT4 אל הייפר

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

כעת הייפר מבקשת משרת ה-MT4 את רשימת הסימבולים המלאה שלו. עבור כל סימבול מהשרת מתבצע התהליך הבא:

  • סימבול שנמצא ברשימת המחוקים - מדולג. זאת כל תכליתה של רשימת המחוקים, למנוע יבוא של סימבולים שאין בהם צורך בהייפר.
  • סימבול שנמצא ברשימת הארכיון מדולג אף הוא. הארכיון אמור לשמור סימבולים שהיה בהם מסחר בעבר ומופיעים בדוחות היסטוריים.
    לכן חובה לשמור על ההגדרות המקוריות שלהם. יכול גם להיווצר מצב שבו נסנכרן עסקאות היסטוריות מלפני 1-3 שנים מהשרת MT4 ואז הממשק ישתמש בהגדרות הללו.
  • סימבול שקיים היום ברשימת ההווה (Normal) וגם קיים בשרת המסחר יקבל עדכון הגדרות חלקי ובתנאי שהשדה 'Follow TP' מצביע על שרת המסחר הזה !
    להלן השדות שמעודכנים בכל הפעלה מחדש של יישום הממשק:
    1. 'Exist on TP','Trading Status','Swap Type','Swap Long defined by Type','Swap Short defined by Type'
    2. אם בהגדרות הפלטפורמה בהייפר, שדה הדגל 'Log Instruments Daily Events' מוגדר כ-NO אזי הממשק יעדכן גם את השדה 'Description' ביחד עם השדות לעיל.
    3. לאחר מכן נבחנות ההגדרות בטבלה "hyp_Trading System Symbols Translation" במפתח MT4* ועלולים להתעדכן השדות הבאים:
      'Exposure Symbol A','Exposure Symbol B','Type','Contract Size'
  • סימבול שקיים היום ברשימת ההווה (Normal) עובר השוואת הגדרות "קנה מידה". במקרה של חוסר התאמה תופיע התראה בקובץ log text של היישום:
    במקרה של חוסר התאמה בשדה 'Contract Size' תופיע התראה בנוסח Check symbol Contract Size
    במקרה של חוסר התאמה בשדה 'Tick Price Coefficient' תופיע התראה בנוסח Check symbol Price Coefficient

    בכל מקרה של חוסר התאמה, תעלה רשומת כשלון לטבלה sye monitor עם הטקסט: 'MT4 DS Profit_Mode different then hyper'
  • בעת הוספה אוטומטית של סימבול חדש מה-MT4 אל הייפר, מיובאים כל השדות הקיימים בפלטפורמה לרבות:
    'Description','Created On','Trading Platform','Follow TP','Type','Primary'

יבוא קבוצות המשתמשים MT4 Groups והגדרות פרטניות לכל קבוצה

  • הייפר מבקשת משרת המסחר את רשימת הקבוצות המלאה שלו. אחסון ההגדרות מתבצע בטבלה הראשית: "hyp_TPM Policies"
    וגם בטבלה משנית "hyp_TPM Settings Matrix Symbol vs Group", אם בהגדרות הפלטפורמה בהייפר, שדה הדגל "Log Instruments Daily Events" מוגדר כ-YES.
  • קבוצות שכבר אינן קיימות מועברות לארכיון של הטבלה הראשית, המשנית נדרסת מחדש בכל יום.
    לבסוף נקבעת רשימת קבוצות פעילה ליצירת חשבון חדש (שדה רזרבי ברשומת הלקוח).
  • הנתונים נשמרים בדיוק כפי שנקלטים מהפלטפורמה, ללא מניפולציה. לכן על הדוחות שמשתמשים בהם לדעת את הלוגיקה מאחורי המספרים.
  • בשלב זה, היישום קובע את ערך השדה "Trading Status", עבור הסימבולים שה-Follow TP שלהם זהה ל-Data Source של היישום.
    מדובר בהרשאות הגישה של הסוחרים לכל סימבול: Active / Close Only / Disabled. כל ההגדרות מגובות לכל שרת בנפרד בטבלה hyp_TPM Instrument Daily Events בכל מקרה.
    ההגדרה הראשית מגיעה מהסימבול עצמו ב-MT4 אבל אם לאף סוחר אין גישה לסימבול מסוים (הדגל Trade אינו מסומן ב- Security Group) אזי הסימבול יסומן כ-Disabled !

דגימה חיה של מצב החשבונות והעסקאות

לפי השעה שהוגדרה בהייפר עבור הממשק לפלטפורמה, תתבצע דגימת Mark to Market לטבלאות הייפר, בלי קשר למה שקורה בפלטפורמה (ובלי קשר לשעה שבה שרת המסחר מבצע לעצמו M2M) !
שדה ההגדרה בטבלת הפלטפורמות בהייפר, נקרא 'Mark to Market Hour UTC' ובאחריות מנהל המערכת להתאים אותו לשרת המסחר או לשעת הדיווח הנדרשת על ידי הרשויות (כל פרויקט לגופו).
בזמן M2M יבוצעו הדגימות הבאות:

  • 5 דקות לפני זמן ה-M2M מתבצעת דגימת Swap בעסקאות הפתוחות, אל טבלה זמנית בזיכרון.
  • הטבלה "hyp_TPM Positions PnL History" תקבל את "צילום" רשימת העסקאות הפתוחות, עם המחיר הנוכחי, רווח/הפסד וכו'.
    לאחר מכן עמודת ה-Swap נדרסת באמצעות הנתונים שנשמרו בסעיף הקודם.
  • הטבלה "hyp_TPM Equity History" תקבל את כל היתרות של חשבונות קיימים בשרת המסחר.
    בדגימה חיה ערך השדה 'Sync Status Flag' = 'S' ומקבלים גם את מצב הפעילות של חשבון המסחר (פעיל / קריאה בלבד וכו).
  • הטבלאות "hyp_TPM Daily Risk Summary" יקבלו "צילום מצב" של חישוב הסיכון עבור הפלטפורמה המחוברת.
    להזכירך: בניגוד למוצג על המסך בהייפר, בטבלאות אלו מאוחסנים נתוני החשיפה נטו של כל TP בנפרד וגם של כל ספק נזילות בנפרד.
  • מודול ה-RMS מתאפס: המודול מתוכנן לחשב P&L יומי וגם לספור את נפח המסחר (Volume) בכל יום בנפרד, לכן בשעת ה-M2M מתאפסים השדות הללו.