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

בעמוד זה תמצא את כל המידע שדרוש למנהל המערכת בעבודה מול הממשק שלנו ל-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','Demo Platform Available','Hyper - TP Integration Username'
    במקרה שהוסיף רשומה חדשה, מציג pop-up ויוצא החוצה. כעת על מנהל המערכת להשלים הגדרות.

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

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

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

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

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

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

  • סימבול שנמצא ברשימת המחוקים - מדולג. זאת כל תכליתה של רשימת המחוקים, למנוע יבוא של סימבולים שאין בהם צורך בהייפר.
  • סימבול שנמצא ברשימת הארכיון מדולג אף הוא, אבל תופיע לגביו אזהרה ב-LOG של התוכנה, שכן זה לא אמור לקרות.
    Warning: The symbol "EURUSD^" is live on this server, but ARCHIVED on hyper database
    הארכיון אמור לשמור סימבולים שהיה בהם מסחר בעבר ומופיעים בדוחות היסטוריים.
    לכן חובה לשמור על ההגדרות המקוריות שלהם. יכול גם להיווצר מצב שבו נסנכרן עסקאות היסטוריות מלפני 1-3 שנים מהשרת MT4 ואז הממשק ישתמש בהגדרות הללו.
  • סימבול שקיים היום ברשימת ההווה (Normal) וגם קיים בשרת המסחר יקבל עדכון הגדרות, אלא אם הוגדר לו Manual Settings = YES.
    הגדרה זו על ידי מנהל המערכת בהייפר, מונעת כל עדכון למעט מחירי Bid, Ask ראשיים.
    הסיבה הנפוצה ליישם דגל Manual Settings היא במקרה וה-Contract Size שמוגדר לסימבול אינו משקף נאמנה את גודל החוזה ! (זהו מקרה חריג אבל לא נדיר).
    הבחינה היא כזאת: אם הכמות שבעסקה ב-MT4, כפול גודל החוזה בהגדרה שווה לכמות הנכס הנרכש בעולם האמיתי - אזיי ההגדרה האוטומטית תקינה !
    מקרה נדיר אחר הוא שמטבע הרכישה המיובא משרת MT4 אינו המטבע שבו הנכס נרכש ושבוא מופיעים המחירים ב-Feed.
    בשני המקרים לעיל אנו מגדירים ידנית את מטבע הרכישה וגודל החוזה ואז "נועלים" את הרשומה מפני יבוא הגדרות אוטומטי.
  • כאשר מותר לעדכן סימבול קיים, להלן השדות שמעודכנים בכל הפעלה מחדש של יישום הממשק:
    'Contract Size','Trading Status','Swap Type','Swap Long defined by Type','Swap Short defined by Type'
    אם בהגדרות הפלטפורמה בהייפר, שדה הדגל "Log Instruments Daily Events" מוגדר כ-NO אזיי הממשק יעדכן גם את השדה 'Description' ביחד עם השדות לעיל.
    לאחר מכן נבחנות ההגדרות בטבלה "hyp_Trading System Symbols Translation" במפתח MT4* ועלולים להתעדכן השדות הבאים:
    'Exposure Symbol A','Exposure Symbol B','Type','Contract Size'
  • בעת הוספה אוטומטית של סימבול חדש מה-MT4 אל הייפר, להלן השדות המיובאים חד פעמית, בנוסף על הרשימה מהסניף הקודם:
    'Description','Created On','Trading Platform','Follow TP','Exposure Symbol A','Exposure Symbol B','Type','Primary'

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

  • הייפר מבקשת משרת המסחר את רשימת הקבוצות המלאה שלו. אחסון ההגדרות מתבצע בטבלה הראשית: "hyp_TPM Policies"
    וגם בטבלה משנית "hyp_TPM Settings Matrix Symbol vs Group", אם בהגדרות הפלטפורמה בהייפר, שדה הדגל "Log Instruments Daily Events" מוגדר כ-YES.
  • קבוצות שכבר אינן קיימות מועברות לארכיון של הטבלה הראשית, המשנית נדרסת מחדש בכל יום.
    לבסוף נקבעת רשימת קבוצות פעילה ליצירת חשבון חדש (שדה רזרבי ברשומת הלקוח). אם שרת demo מחובר, אזיי תישמר גם רשימת קבוצות של שרת ההדגמה בשדה נפרד.
  • הנתונים נשמרים בדיוק כפי שנקלטים מהפלטפורמה, ללא מניפולציה. לכן על הדוחות שמשתמשים בהם לדעת את הלוגיקה מאחורי המספרים.
  • בשלב זה, היישום קובע את ערך השדה "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 בעסקאות הפתוחות, אל טבלה זמנית בזיכרון.
  • הטבלה "" תקבל את "צילום" רשימת העסקאות הפתוחות, עם המחיר הנוכחי, רווח/הפסד וכו. לאחר מכן עמודת ה-Swap נדרסת באמצעות הנתונים שנשמרו בסעיף הקודם.
  • הטבלה "hyp_TPM Equity History" תקבל את כל היתרות של חשבונות קיימים בשרת המסחר. בדגימה חיה מקבלים גם את מצב הגישה של הלקוח קצה לחשבון המסחר.
  • הטבלה "hyp_TPM Daily Risk Summary" תקבל "צילום מצב" של חישוב הסיכון עבור הפלטפורמה המחוברת.
    להזכירך: בניגוד למוצג על המסך בהייפר, בטבלה זו מאוחסנים נתוני החשיפה נטו של כל TP בנפרד וגם של כל ספק נזילות בנפרד.
  • מודול ה-RMS מתאפס: המודול מתוכנן לחשב P&L יומי וגם לספור את נפח המסחר (Volume) בכל יום בנפרד, לכן בשעת ה-M2M מתאפסים השדות הללו.