התקנת דוגם ציטוטים
מדובר ביישום בצד השרת שמטרתו לדגום אל מסד הנתונים של הייפר ציטוטי מחירים מלאים ממסחר בורסאי, בין בנקאי וכו'. היישום פועל 24 שעות 7 ימים בשבוע ללא הפסקה.היישום תומך במספר גרסאות של פרוטוקול FIX המקובל בתעשיה למטרה זו וגם ב-API של MT4 וגם MT5. כתוב באופן יעיל ואינו מכביד על שרתי המסחר ועל מסד הנתונים.
- יכולת דגימה גבוהה: עד 1200 ציטוטים בשנייה. ניתן לחבר מספר יישומים בו זמנית למסד נתונים אחד עבור מערכות הדוגמות נכסים רבים.
-
שרידות: היישום משתמש ב-RAM של השרת לאגירה בזמן אמת ובתתי תהליכים לאריזה ושמירה מרוכזת במסד הנתונים של הייפר.
היישום תומך במצב ניתוק ממסד הנתונים הראשי עד לאגירה של 2GB של ציטוטים (אח"כ זה תלוי במשאבי השרת המריץ). - תומך במשימות נוספות: למשל צבירת קפיצות מחיר (מעל אחוז מוגדר מראש) בטבלת אירועים. השוואת מחירים לפידים אחרים ועוד.
- מבצע אריזה של קבצי הנתונים בפורמט בינארי, בכל 6 שעות שעון UTC, אל מסד הנתונים של הייפר.
שלב 1: התקנת יישום הממשק בשרת.
עליך לבחור היכן להתקין את יישום הממשק. בהתקנות פרטיות יתכן שתרצה להתקין את היישום על אותה המכונה שבה מותקן גם שרת ה-Database (היישום sye server).בד"כ מקובל להתקין את היישום על שרת חישובים, בנפרד ממסד הנתונים ועם רוחב פס יציב ואיכותי אל מול מקור הציטוטים (שיקול גאוגרפי וגם של מערכות הרשת בין מקור הציטוט לדוגם).
תלוי בדרישות הפרויקט... היכן שנדרש דיוק (אלפיות שנייה) עדיף כמה שיותר קרוב אל המקור ועם כמה שפחות נתבים ומערכות אבטחה בדרך.
על מנת להתקין את יישום הממשק, בצע את הפעולות הבאות:
- פתח את כלי ההתקנה של הייפר (SYE Support & Setup). בחר בקטגוריה Server Side Applications.
- מתוך רשימת האפליקציות בחר ב Feed Ticks Sampler ולחץ על המשך.
- אשר את תנאי השימוש ולחץ על המשך.
- בחר בנתיב ההתקנה ולחץ על .
- עליך להעתיק את קובץ ה- lic של מסד הנתונים בתוך התיקייה שבה הותקן הממשק. חובה לשים רק קובץ אחד שכן היישום יטען את הראשון שימצא בתיקייה של עצמו.
- וודא מראש שכל ההגדרות דרך יישום הייפר מוכנות, בהתאם לשלב 2 בעמוד הזה.
- כעת הפעל את היישום ועבור לשלב 3, בכדי ללמוד כיצד להגדיר נכון את קובץ ה- INI המקומי.
בתיקיית Feed Ticks Sampler שנוצרה, יופיעו הקבצים הבאים:
שם קובץ וסיומת | תיאור |
---|---|
Hyper_Price_Feed_RT_Sampler.exe | קובץ היישום של הדוגם, מכיל את כל הקוד בקובץ אחד. |
Hyper_Price_Feed_RT_Sampler.ini | קובץ הגדרות מקומי, נערך מתוך היישום, ייווצר רק לאחר ההפעלה הראשונה של היישום. |
Appl_Self_Upgrade.exe | יישום עדכון אוטומטי ואתחול עצמי. |
mtmanapi.dll mtmanapi64.dll |
קובץ ספריה של MetaTrader4 Manager 32/64 bit |
MT5APIManager.dll MT5APIManager64.dll |
קובץ ספריה של MetaTrader5 API 32/64 bit |
הסבר קצר למנהלי המערכת:
כל היישומים מתוצרת SYE למערכות ההפעלה Windows בנויים מקובץ exe עיקרי שמכיל בתוכו קוד למעבדי אינטל ו-AMD.איננו נוהגים לפצל קוד לקבציי DLL למעט ספריות קוד מספק צד שלישי (במקרה זה אין לנו ברירה אחרת).
את כל היישומים ניתן להעתיק בין מחשב למחשב - אין באמת משמעות לתוכנת ההתקנה.
אין קבצים חבויים או קבצים המותקנים בתיקיות של מערכת ההפעלה.
למעשה באפשרותך להעתיק את כל תיקיית האוטומציות שלך לשרת גיבוי ולהפעילן משם במידת הצורך.
דאג להרשאות כתיבה בתיקייה שבה מותקן היישום ! בין היתר עבור מנגנון העדכון האוטומטי.
בנוסף, אפשר הרשאות לכתיבת קבצים זמניים (cache) המתרחשת בתיקיית ה- App Data/Local של השרת.
שלב 2: הגדרות שנעשות ביישום הייפר, לפני הפעלת דוגם הציטוטים.
בד"כ הדגימה נעשית מפלטפורמת מסחר שמחוברת להייפר בכל מקרה ולכן אנו נשענים על מרבית ההגדרות מהטבלאות של הייפר ולא מקובץ ה-INI המקומי.כך שמנהל המערכת יוכל להגדיר כל דבר במקום אחד.
כפי שיוסבר בהמשך, היישום תלוי גם ברשימת הסימבולים בהייפר ובהגדרות מקדם המחיר (Tick Price Coefficient) - בהתאם לממשק הדגימה ולהגדרות ב-INI.
בכדי להתחבר לשרת MT4 או MT5 יש לוודא מראש כי הפלטפורמה מוגדרת בטבלה hyp_Trading Systems List, ממנה היישום יקרא את כתובות השרתים (מקור וגיבוי).
מספר חשבון manager וסיסמה נלקחים מהשדות
MT4 Login & MT4 Password
בקובץ ה-INI.
התקנת דגימה מפרוטוקול FIX
בגלל מבנה פרוטוקול FIX, בו הלקוח צריך להירשם לקבלת ציטוטים, המודול נסמך על טבלת המכשירים של הייפר.בראשית האתחול המודול מבצע שאילתה על המכשירים הסחירים (לפי השדה 'Trading Status') וגם שמשויכים לפלטפורמה המצוטטת (ערך השדה Data Source צריך להיכלל ברשימת הפלטפורמות בשדה 'Exist on TP' בטבלת המכשירים).
אם רשימת המכשירים ריקה או שלא ניתן לטעון פרופיל הגדרות לפי השדה 'Feed by Fix Protocol WS' בקובץ ה-INI... המודול יוצא ונסגר על שגיאה (מפורטת ב-LOG המקומי).
להלן אופן ההגדרה של פרוטוקול FIX ברשומת ה-Web Services של הייפר:
שם השדה | תיאור |
---|---|
Hyper Service ID | כינוי המערכת הוא טקסט חופשי להגדרתך. ובלבד שיהיה מועתק לשדה 'Feed by Fix Protocol WS' בקובץ ה-INI. |
URL | כתובת IP או DNS המוביל אל שרת הציטוטים. |
Terminal / ID |
TCP Port למעשה זהו חלק מכתובת היעד של שרת הציטוטים. מטעמי נוחות החלטנו להפריד את מספר הפורט מהכתובת עצמה.
אם רושמים את המילה TLS בנוסף, אזי יפתח חיבור מאובטח. אחרת יפתח socket רגיל. ערך לדוגמה:
4019 TLS
יפתח חיבור מאובטח (זיהוי אוטומטי בין TLS 1.3 ועד לתקן SSL3 הישן) בפורט 4019.
|
Username | שם משתמש |
Password | סיסמה לחשבון |
Param1 | FIX SenderCompID מחרוזת שהוגדרה בשרת הציטוטים, בד"כ מכילה בתוכה את ה- Username. |
Param2 | FIX TargetCompID מחרוזת שמגדירה לשרת המקבל להיכן מיועדות הבקשות שלנו. מעין "שם שרת פנימי" לניתוב. |
Param3 | FIX SubTargetCompID מחרוזת זו אינה חובה. במערכות בהן היא נדרשת, היא משמשת כשדה המשך לשדה הקודם, למטרת הניתוב. |
Param4 |
שדה מסוג טקסט המשמש כדגל בוליאני "לא ידידותי בכוונה". המחרוזת
'Hyper Feed'
תפעיל את המתג וכל ערך אחר יחשב ככלום.
אם המתג דולק, אזי הסימבולים המיובאים יעדכנו את המחירים גם בטבלאות:
hyp_Trading System Symbols
hyp_Trading System Feed History |
ערך שנקבע בקוד המערכת הוא Keep-alive בכל 90 שניות.
קיימים המון מימושים לפרוטוקול FIX, המודול מזהה את מערכת היעד לפי שלושת הפרמטרים האחרונים בטבלה לעיל...
להלן חלק ממחרוזת ההרשמה לדוגמה:
262=Feed;263=1;146=Count;55=EUR/USD;55=GBP/USD;
Gold-i Price Server
היישום של gold-i שומר קובץ טקסט בדיסק. דוגם הציטוטים שלנו קורא אותו מידי שעה ומשלים בעזרתו את טבלת הציטוטים בהייפר.להלן אופן ההגדרה של היישום ברשומת ה-Web Services של הייפר:
שם השדה | תיאור |
---|---|
Hyper Service ID |
"Gold-i-Plugin_R1"
יש לשים את המחרוזת המדוייקת כאשר השני תווים בסוף הם בהתאם ל- Data Source של השרת מסחר.
|
Folder |
כאן עליך למלא את הנתיב המקומי שבו הקבצים מאוחסנים. לדוגמה:
c:\Program Files (x86)\Gold-i Ltd\Gold-i Price Server-Real1\logs\
|
Param1 = Last Sync Date | היום האחרון שסונכרן - גם אם באופן חלקי. מסכת השדה YYYY-MM-DD |
Param6 = Last Sync Position |
בסנכרון רגיל, בכדי לחסוך משאבים השדה הזה מאחסן את מיקום השורה האחרונה אשר נקראה מהקובץ.
זהו ערך אוטומטי ואין להתערב בו למעט מצב שבו רוצים לשחזר קריאה ואז לאחר קביעת התאריך בשדה הקודם יש לאפס את השדה הזה. אין להזין ידנית ערך שאינו אפס, זה עלול לפגוע בקריאה. |
Sync Delay in Minute | אם צריך לקרוא את הנתונים בעיכוב, למשל לסנכרן עד לפני 5 דקות מעכשיו. כרגע המודול עצמו קורא בעיכוב של כמה דקות באופן ייזום. |
שלב 3: הגדרות מקומיות (קובץ INI)
עם ההפעלה הראשונה ובכל פעם ששדות חיוניים ריקים בקובץ ה-INI... יפתח דיאלוג עם רשימת השדות הבאה:שם השדה | תיאור |
---|---|
DATA SOURCE |
סימול מקור המידע (הפלטפורמה) בשני תווים. בד"כ בהייפר תמצא הגדרת פלטפורמה בטבלה hyp_Trading Systems List בעלת סימול זהה. רק במקרה של יבוא מחירים בפרוטוקול FIX ללא קשר ל-TP כלשהו, ניתן להמציא קוד (חד ערכי) ולוותר על הגדרות בטבלה הנ"ל. שם המשתמש של היישום ברשת הייפר יהיה Feed_Sampler_DS כאשר DS מבטא את שני התווים מהשדה הזה. |
Hyper Database Custom IP | כתובת IP לגישה ישירה למסד הנתונים של הייפר. שדה חריג שמתאים להתקנות סגורות או לסביבת פיתוח. |
Select Connection Type |
איזה מודול יופעל לדגימה ? אפשר להתקין את היישום מספר פעמים במקביל על אותו מסד נתונים ולהגדיר מודולים שונים.
בכדי להבין את קובץ ה-INI מחוץ ליישום, הערך המספרי מצויין בסוגריים לאחר שם האפשרות.
|
Feed by Fix Protocol WS | שם הגדרת web service בהייפר עבור הטמעת פרוטוקול FIX (מכל הגרסאות). ראה כותרת נפרדת לנושא, שלב 2 השדה Hyper Service ID. |
MT4 Login MT4 Password |
עבור התממשקות ל-MT4 וגם MT5 יש להגדיר את צמד השדות הללו וכמובן שחייבת להיות רשומה בטבלה hyp_Trading Systems List, משם נלקחת כתובת ה-IP להתחברות. |
Get Tick Price Coefficient From Hyper |
ברירת המחדל של היישום הזה היא לגבות את כל הפיד של השרת. מבלי לסנן דבר ולפי הגדרות השרת.
אולם המציאות שונה מהתיאוריה, אצל לקוח אחד התגלה מצב שבו יבוא ההגדרות שלנו אינו פועל על פי הנוסחה ונאלצנו להגדיר את הפרמטרים ידנית. לכן גם ביישום MT4 Integration אין עדכון של השדה ברשומות סימבולים קיימות. רק בעת הוספת סימבול חדש מתבצע החישוב מול שרת המסחר. |
Save Symbols from Hyper List |
האם לשמור פידים רק עבור סימבולים הקיימים בטבלה של הייפר, או לשמור כל סימבול פעיל בפלטפורמה ?
אם הערך NO, אזי רשימת הסימבולים תיקבע על פי קבוצות ההרשאה אליהן יש ל- manager account גישה. |
Zip Pack Offset in Minutes |
כאשר ישנם מספר ממשקי דגימה באותו מסד נתונים, יש לפצל את זמני האריזה שלהם בכדי להקל את העומס על הדיסק SSD.
השדה הזה מגדיר הפרש בדקות. התקנה נכונה תהיה ערך אפס לפלטפורמה הראשונה ואז 2 דקות תוספת לכל פלטפורמה. לדוגמא: בהתקנה של 3 שרתי מסחר מול הייפר אחת, השרת האחרון יתחיל ב-4 דקות איחור לעומת הראשון. |
לאחר הפעלת היישום, עיין בקובץ Hyper_Price_Feed_RT_Sampler_log.txt בכדי לוודא שהכל פועל כשורה. להלן דוגמאות לתוכן הנרשם.
להלן דוגמה לקובץ ה-log המקומי בתהליך התחברות מוצלח לשרת MetaTrader:
Login_To_MT4_Manager OK
Use Different Tick Price Coefficient for USOIL - MT4: 100; Hyper: 1 דוגמה להגדרות בהייפר המתקנות את יחס ההמרה הנקלט מהפלטפורמה
MT4_Refresh_Symbols OK
MT4_Groups_Request OK אם היישום מוגדר כך שיקלוט את כל הסימבולים הזמינים - שורה זו תופיע
Final Symbols list has 150 records. הודעה על כמות הסימבולים המצוטטים. ערך שגוי אמור להתריע בפני מנהל המערכת
Seem that setup was successful. next "Download_Feed_From_API" on 2021-04-12 18:00:00
Use Different Tick Price Coefficient for USOIL - MT4: 100; Hyper: 1 דוגמה להגדרות בהייפר המתקנות את יחס ההמרה הנקלט מהפלטפורמה
MT4_Refresh_Symbols OK
MT4_Groups_Request OK אם היישום מוגדר כך שיקלוט את כל הסימבולים הזמינים - שורה זו תופיע
Final Symbols list has 150 records. הודעה על כמות הסימבולים המצוטטים. ערך שגוי אמור להתריע בפני מנהל המערכת
Seem that setup was successful. next "Download_Feed_From_API" on 2021-04-12 18:00:00
שלב 4: תהליך אריזה בכל 6 שעות
דגימת הפיד מתבצעת אל תוך הטבלה hyp_TPM Feed Storage Buffer, מנה חדשה נכתבת מידי 15 או 30 שניות.בכל 6 שעות בשעון UTC (בשעות 06:00, 12:00, 18:00 ואז בחצות), מתבצעת אריזה של "רבע יום" בפורמט הטבלאי של הייפר, בקובץ ZIP המאוחסן במסד הנתונים של הייפר בתיקייה (DB object) בעלת שם זהה לטבלה.
תהליך האריזה מופעל בעיכוב של 12 שעות. כלומר ה-"רבע יום הראשון" נארז בשעה 18:00 UTC ולמעשה יוצא ממסד הנתונים אל אחסון ZIP.
בכדי לבחון את תקינות הנתונים בשעות המסחר, עליך לוודא כי הטבלה מלאה בהתאם לכללים שהוסברו לעיל.
לדוגמה: בחינה של הטבלה ביום שני בשעה 20:00 UTC צריכה להכיל דגימות רצופות משעה 06:00 UTC ועד לרגע הדגימה (עד דקה אחורה בגלל שיטת ההזרמה אל הייפר).
ליישום אין ממשק ויזואלי
המעקב והשליטה על האריזה נעשה דרך הטבלה hyp_TPM Live Feed Sampler Settings - באמצעות ממשק DB של הייפר.בעזרת הטבלה ניתן להזיז את היישום לארוז את המנה הבאה או לחזור למנה היסטורית במידה והנתונים עדיין בטבלת ה- Buffer.
בכדי לעצור את מודול האריזה - למשל כאשר מתקנים את הנתונים או מסנכרנים רטרו מחדש... עדיף למחוק את הרשומה לפני שמעלים את היישום !
להלן הסבר אודות השדות בטבלה:
שם השדה | תיאור והערות |
---|---|
Data Source | סימול מקור הנתונים (הפלטפורמה המצוטטת) |
Archive From Date | המנה הבאה תהיה מתאריך |
From Quarter | המנה הבאה (לפי התאריך מהשדה הקודם) |
בהתקנה חדשה: לאחר 24 שעות של עבודה תקינה, עליך להגדיר ידנית את התאריך ומספר המנה הבאה לאריזה. מטעמי ביצועים היישום אינו מנסה לזהות אוטומטית ממתי אפשר לדגום אלא מסתמך על ההגדרות בטבלה הזו.
לדוגמה: אם יש לך דגימות החל מתאריך ה-2.2 בשעה 04:00 UTC ועברו לפחות 18 שעות... עליך להגדיר רשומה עם התאריך 2.2 והחל ממנה 1.
אין צורך לאתחל את היישום, הוא כבר יקרא את ההגדרה לבד ויתחיל באריזה. הטיימר הפנימי מכוון על כל 5 דקות.
פתרון בעיות
בכוונת תחילה לא ניתן לאתחל את היישום או לסגור אותו בשליטה מרחוק בפקודות המקובלות בהייפר. במקום זאת יש להוסיף את האות F בתחילת כל פקודה.כך שהפקודה לסגירה תהיה 'FTerminate' והפקודה לאתחול תהיה 'FSelf Restart'.
היישום מייצר קובץ LOG המתעד בתוכו בעיות ואת תהליכי האריזה של "חבילות ציטוטים". Watchdog מופעל בכל 3 שניות ומאתחל את היישום במקרה של תקלה או ניתוק מהמקור !
להלן דוגמה ללוג תקין:
Starting FIX protocol Tick Storage for TS ["TFIX_Proto_Ticks_Sampler"]
First Ticks Storage data arrived, for TS ["TFIX_Proto_Ticks_Sampler"] הודעת אישור על תחילת קליטת ציטוטים
====== Pack_Feed_Package "TS" 02/01/2018 Part 1 ====== הודעה על התחלת אריזה של רבע יום
Query return 324418 for Feed_TS_2018_01_02_Q1 הודעה על כמות הציטוטים שנארזת כעת. ברגע שעלו 20 רשומות ומעלה... זה נחשב לשאילתה תקינה
====== Pack_Feed_Package "TS" 02/01/2018 Part 2 ======
Query return 1807775 for Feed_TS_2018_01_02_Q2
First Ticks Storage data arrived, for TS ["TFIX_Proto_Ticks_Sampler"] הודעת אישור על תחילת קליטת ציטוטים
====== Pack_Feed_Package "TS" 02/01/2018 Part 1 ====== הודעה על התחלת אריזה של רבע יום
Query return 324418 for Feed_TS_2018_01_02_Q1 הודעה על כמות הציטוטים שנארזת כעת. ברגע שעלו 20 רשומות ומעלה... זה נחשב לשאילתה תקינה
====== Pack_Feed_Package "TS" 02/01/2018 Part 2 ======
Query return 1807775 for Feed_TS_2018_01_02_Q2
* כאשר משחקים עם הערכים בטבלה hyp_TPM Live Feed Sampler Settings, אין צורך לאתחל את היישום ! ההגדרות בטבלה הזאת נבדקות בכל 5 דקות כך ששינוי הערכים נכנס לתוקף באופן אוטומטי עם שמירתם.