שפה אלגוריתמית QPILE לתכנות רובוטי מסחר עבור QUIK

Программирование

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

מידע כללי על QPILE

QPILE הוא קיצור המייצג QUIK Programmable Interface and Logic Environment.

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

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

השפה מתארת ​​את מבנה הטבלה: מינוי עמודות ושורות, נוסחאות. באחרון, ניתן להשתמש בפעולות מתמטיות, משתנים, נתונים מטבלאות אחרות לחישוב. קוד התוכנית שנטען משרת QUIK או מהדיסק של המשתמש מעובד על ידי מתורגמן השפה, שמחשב את הערכים בנוסחאות. לטבלאות של תוכנית אחת יש מקור נתונים אחד, אך החישובים אינם משוכפלים ואינם משפיעים על יעילות המערכת. בעבודה עם טבלאות QUIK, לטבלאות ב-QPILE יש פונקציות סטנדרטיות. QUIK במקום העבודה מצויד במפרק קוד QPILE. https://articles.opexflow.com/software-trading/torgovyj-terminal-quik.htm השפה מאפשרת לתאר טבלאות חדשות במבנה נתון, להדגיש תאים עם ערכים מסוימים, לחשב שדות על סמך ביטויים מתמטיים ולוגיים. המשתמש יקבל התראות בצורה של אות קול או הודעת טקסט. ניתן לערוך טבלאות ב-QPILE, להדפיס, להעתיק, לייצא באמצעות שרת ODBC ו-DDE. הנתונים הראשוניים הם מטבלאות QUIK:

  • עסקאות, לרבות לביצוע ולא אישיות;
  • הזמנות, לרבות פקודות סטופ, לעסקאות ללא מרשם ולהזמנות – דוחות לעסקאות בעסקאות פשרה;
  • “תיק לקוח”, “קנה/מכירה”
  • נתונים מעמדות המשתתף לפי כסף, חשבונות מסחר, מכשיר.

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

עבודה עם שולחן

כדי לטעון את קוד התוכנית, עליך לבחור בתפריט השירותים ולאחר מכן ב-QPILE scripts. אתה יכול גם להשתמש בשילוב Ctrl+F11. לאחר שתצטרך ללחוץ על “הוסף” ובחר את הקובץ הרצוי. יש לו סיומת qpl ושמה יופיע ברשימת הסקריפטים הזמינים.
שפה אלגוריתמית QPILE לתכנות רובוטי מסחר עבור QUIKאם ישנה שגיאה בתוכנית, המערכת תבצע הודעה ב”חלון הודעות”, שתכיל את שם הקובץ הפגום ומספר השורה עם השגיאה. אם לא נמצאו כשלים בקובץ, הנתונים הבאים יצוינו בשדות:

  • שם שולחן;
  • מספר עמודות ולקוחות;
  • רשימת מזהים ולקוחות;
  • רשימת הפרמטרים וקוד המקור של הקובץ.

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

QPILE בונה

סוגי מידע

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

ביטויים

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

פונקציות

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

  1. פונקציות מתמטיות המאפשרות להחזיר את הערך של הסינוס, הקוסינוס, הטנגנס, הקוטנגנט של הארגומנט, לחשב את המעריך של הארגומנט, ליצור מספר אקראי וכו’.
  2. פקודות כלליות : NEW_GLOBAL לאתחול משתנה גלובלי ו-MESSAGE לפתיחת הודעות.

פונקציות לעבוד איתן:

  • אוספי חפצים (אוסף) . הם מאפשרים לך ליצור אוסף חדש, להחזיר את מספר האלמנטים הנדרש, להחליף או להכניס את הערכים הרצויים.
  • מערכים אסוציאטיביים (MAP) . עזרה ליצור ולנהל את המערך.
  • קבצים – עבודה עם קבצי טקסט, שמירה על יומן יומן של התוכנה. שם הקובץ עשוי להכיל את הנתיב אליו.
  • מיתרים .
  • גרפים . פונקציות GET_CANDLE כדי לגשת לנתוני נרות ו-GET_CANDLE EX להחזרת מערך אסוציאטיבי.
  • יישומים . יצירת פקודות ושליחתן למערכת המסחר.
  • תגיות . הבנייה וההתקנה שלהם על התרשים. הוספה, מחיקה של אחת או כל התוויות, קבלת והגדרת פרמטרים עבור תווית ספציפית.

יש גם פונקציות עבור:

  1. לגישה לשורות של טבלאות QUIK שרירותיות ולרשימות של פרמטרים זמינים . גישה לנתוני טבלאות מקום העבודה. אלה כוללים GET_ITEM להחזרת ה-MAP ו-GET_NUMBER_OF להחזרת מספר הערכים.
  2. לעבוד עם טבלה הניתנת לתכנות . פקודות אלו פועלות על הטבלה OWN. ניתן לקרוא אותו על ידי הפונקציות הסטנדרטיות מהפסקה הקודמת ועל ידי פונקציות אלו. קבוצה זו כוללת פקודות להוספה, שינוי ומחיקה של שורה עם אינדקס, וניקוי מוחלט של הטבלה OWN.

כדי לקבל ערכים השתמש:

  1. טבלאות של עסקאות שוטפות . קבלת פרמטרי חילופי מידע באמצעות פקודות GET_PARAM (_EX).
  2. ציטוט חלונות . השגת הערכים של ציטוטי מכשירים.
  3. טבלאות של עמדות לפי מכשירים וכסף . השגת נתונים על לקוח, חברה, מכשיר, חשבון פקדון לפי קוד.

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

תוכניות איתור באגים

שליטה שלב אחר שלב על פעולת התוכנית מתבצעת בחלון “ניפוי באגים”. הוא נפתח מתפריט ההקשר “התחל חישוב במצב ניפוי באגים”. ניתן לפתוח אותו גם עם הפקודה breakpoint() וששורת התוכנית תסומן באדום. החלון מכיל שדות עם קוד תוכנית וערכי משתנים. בתחתית החלון ישנם כפתורים “השלב הבא”, “המשך ביצוע”, “עצור חישוב”. לחיצה על F5 תמשיך את ביצוע התוכנית, השילוב Shift + F5 יפסיק איתור באגים, מקש F10 יפנה לשורה הבאה.

QPILE או LUA?

LUA היא שפת תכנות חדשה ליצירת רובוטים למסחר. כמו QPILE, הוא מיושם במסוף QUIK. https://articles.opexflow.com/programming/lua.htm אתר המוקדש לפיתוח רובוטי מסחר למסחר מציג את היתרונות של שפת LUA על פני QPILE. אז, הוא יכול לתפקד כסקריפט ובית-קוד לא מהול, מצויד בכלי מפתחים ומנגנוני תכנות מונחה עצמים. ניתן לחבר אובייקטים שנכתבו בשפות תכנות אחרות לתוכניות LUA. LUA מספק 8 סוגי נתונים, כולל metatables. שפת LUA היא רב-הליכי, מהירה ועסקאות ואירועי מסוף הם אסינכרוניים. LUA נפוץ יותר מ-QPILE, ונכתבו עבורו הרחבות רבות.

שפת QPILE הוצאה משימוש כעת. מומחים בפורומים ממליצים להשתמש ב-LUA. למרות שעדיין נעשה שימוש בתוכניות שימושיות ויעילות.

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

כיצד ליצור רובוט מסחר ב-QPILE?

כדי ליצור יועץ מסחר, תזדקק לתוכניות הבאות:

  1. ITS Quik.
  2. עורך קוד פנקס++.
  3. מדריך ל-QPILE.
  4. תוסף XML לזיהוי קוד ב-Notepad++.

הורד והתקן את התוכנות הללו. אפשר את תחביר השפה על ידי הצבת userDefineLang.xml בנתיב C:\Users\User\AppData\Roaming\Notepad++\
שפה אלגוריתמית QPILE לתכנות רובוטי מסחר עבור QUIKראשית, בואו ניצור את אסטרטגיית המסחר הבאה. התסריט צריך לחשב Hi and Low עבור הנרות האחרונים בכל דקה, בדוק את המחיר הנוכחי של המכשיר. פוזיציה נפתחת בכיוון הנדרש אם מחיר המכשיר מגיע לערך המקסימלי או המינימלי לתקופה. כאשר מתקבל אות לקצר, המיקום הארוך נסגר אוטומטית. הרובוט משתמש בכלי GAZP, מסגרת הזמן מוגדרת לדקה אחת. עומק המדידה היי-נמוך מוגדר ל-5 נרות. כדי להיכנס ל-Long, נקבע כלל וצומת המחיר הנוכחי של הערך המקסימלי לתקופה. הרובוט יכנס לשורט אם המחיר הנוכחי יחצה את הערך המינימלי עבור 5 הנרות הללו. כתוב גוש קוד ב-Notepad++ עם הגדרות בסיסיות ותאריך ושעה של השרת. קוד זה מוצג בתמונה למטה.
שפה אלגוריתמית QPILE לתכנות רובוטי מסחר עבור QUIK4 שורות הקוד הראשונות יוצרות את כותרת התוכנית. בין שורות 6 ל-44 נמצא גוף התוכנית, המכיל את תוכן הרובוט. שורות 7 – 12 מכילות הגדרות משתמש, הכוללות את הקודים של המכשיר, הקבוצה והלקוח, מספר החשבון ב-MICEX. ערכים אלה אינם משתנים במהלך הפעלת התוכנית. שורות 13 – 16 הם הערכים ההתחלתיים של המשתנים. הם יאופסו לאפס בכל מעבר איטרציה. שורות 17 – 21 מכילות אינדיקציה לשימוש בתאריך ובשעה של השרת. נתונים אלה מועברים לפונקציה DATETIME ומומרים לפורמט טקסט. שורות 22 – 29 שולחות את הנתונים שהתקבלו לטבלה. יש לשמור את הקוד ולציין את סיומת qpl.
שפה אלגוריתמית QPILE לתכנות רובוטי מסחר עבור QUIKפתח את התוכנית ב-QUIK על ידי לחיצה על Ctrl+F10 ובחירה בקובץ ה-qpl שנוצר. השתמש בשילוב Ctrl+F11 כדי לפתוח את חלון “עבודה עם תיקים” והגדר את תקופת חישוב התיק ל-5 דקות. הקש Ctrl+F12 כדי להגדיר את העמודות להצגה בטבלה. התמונה מציגה את התוצאה של עבודת הרובוט.
שפה אלגוריתמית QPILE לתכנות רובוטי מסחר עבור QUIKבואו נוסיף עוד כמה פונקציות ותנאים לתוכנית שלנו.
לבלוק “הגדרות משתמש” מתווספות המשתנים NUMBER ו-INTERVAL, אשר ישמשו בפונקציה של השגת N הפסים האחרונים. הפונקציה DATETIME מגדירה את התאריך והשעה של השרת, ומתוכה נקראות פונקציות התאריך והשעה הנוכחיות CURDATE ו-CURTIME. השעה הנוכחית מומרה למספר בשורה 24. שורה 26 קובעת את הזמן שבו האלגוריתם יפעל מ-10:00:01 עד 18:40:00 UTC.
שפה אלגוריתמית QPILE לתכנות רובוטי מסחר עבור QUIK
שפה אלגוריתמית QPILE לתכנות רובוטי מסחר עבור QUIK
שפה אלגוריתמית QPILE לתכנות רובוטי מסחר עבור QUIKשפה אלגוריתמית QPILE לתכנות רובוטי מסחר עבור QUIKלרוב, אינדיקטורים, מתנדים, חישובים סטטיסטיים מחושבים על ידי N הנרות האחרונים של התרשים. ל-QPILE אין פונקציה לאיסוף מספר הנרות לפני N תקופות ככזה, אבל יש פונקציה GET_CANDLE הניגשת לנרות בתרשים לפי תאריך ושעה בפורמט טקסט. הקוד שלנו מכיל את הפונקציה לקבל את N הפסים האחרונים OHLC(). זה יוצר אוסף עם הפרמטרים של הנרות האחרונים המקוננים ברשימת COLLECTION. התוכנית בודקת את ערך ה-INTERVAL, ואם הוא אינו נופל בטווח 0…60, תוצג הודעה שהערך אינו תואם לטווח המותר. אוסף MAP עם נרות נוצר בשורה 88. לולאת FOR משקולת את התרשים לעומק הנדרש עם שלב ה-INTERVAL מהנר החדש לנר הישן. בשורה 90, לאחר הכרזת המחזור, הרובוט חוזר מרווח זמן אחורה. כאשר אתה מקבל נר עם GET_CANDLE, מקם אותו באוסף BARLIST באמצעות הפונקציה INSERT_COLLECTION_TEAM. כתוצאה מפעולת הפקודה OHLC(), BARLIST מתמלא בנרות האחרונים מתרשים המכשיר בכמות של NUMBER. מספר האלמנטים באוסף מתבקש על ידי הפקודה GET_COLLECTION_COUNT() ומדווח על ידי המשתנה BARCOUNT. תאריך, שעה של שרת, ערכים של משתני INSTRUMENT ו-BARCOUNT מדווחים על ידי פונקציית SET_VALUE() ב-OUTPUT. מערך זה נוצר על ידי הפקודה CREATE_MAP() . הנתונים נופלים לטבלה המותאמת אישית, אותה ניתן לראות בתמונה למטה. הערכים של המשתנים INSTRUMENT ו-BARCOUNT מדווחים על ידי הפונקציה SET_VALUE() ב-OUTPUT. מערך זה נוצר על ידי הפקודה CREATE_MAP() . הנתונים נופלים לטבלה המותאמת אישית, אותה ניתן לראות בתמונה למטה. הערכים של המשתנים INSTRUMENT ו-BARCOUNT מדווחים על ידי הפונקציה SET_VALUE() ב-OUTPUT. מערך זה נוצר על ידי הפקודה CREATE_MAP() . הנתונים נופלים לטבלה המותאמת אישית, אותה ניתן לראות בתמונה למטה.
שפה אלגוריתמית QPILE לתכנות רובוטי מסחר עבור QUIK

רובוטים למסחר ב-QPILE – פתרונות מוכנים

רובוט ממוצע נע

רובוט הדגמה לא מתאים למסחר אמיתי.
שפה אלגוריתמית QPILE לתכנות רובוטי מסחר עבור QUIKהרובוט כולל 5 פרמטרים. ערכי מזהה DATE, TIME, PRICE מוגדרים לרמה 30. מזהי MOVING ו-TP מוגדרים לאפס דיוק. קוד רובוט על ממוצע נע שנכתב תחת QPILE:

מחשבון עמדה נ’ מורושקין

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

מסנן נפח

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

אפשרויות יוונים

פורטפוליו לחישוב והצגת “יוונים” של אפשרויות. זה שונה משיטת Black-Showers.
שפה אלגוריתמית QPILE לתכנות רובוטי מסחר עבור QUIK

רובוט מסחר TRIX עבור QUIK

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

M4 Preprocessor

תוכנית לעבודה עם QPILE ו-Lua. כולל ארכיונים עם קבצי הפעלה, תיעוד וקבצי DLL עם ניתוח ביטוי רגולרי. כדי להשתמש בתוכנית, עליך לפרק את קבצי ההפעלה ולהציב regexp2 בנתיב C:\Windows. שיעורים על QPILE עבור QUIK: https://youtu.be/vMTXwDUujpI התקנת סקריפט על QPILE במסוף Quik: https://youtu.be/0B7qL8Svh7I קטע ב-github שמתאר את השימוש בשפה האלגוריתמית QPILE המובנית ב-QPILE תחנת עבודה של מערכת QUIK הממוקמת בקישור – https://euvgub.github.io/quik_user_manual/ch8.html. QPILE היא שפה מיושנת, אבל די פשוטה ונגישה אפילו לסוחרים מתחילים. רובוטים ותוכניות מסחר שהוכיחו את עצמם במשך זמן רב ממשיכים לעבוד על זה. עם זאת, למשימות מורכבות יותר עדיף להשתמש ב-LUA.

info
Rate author
Add a comment

  1. Владимир Геннадьевич Евсеев

    Reply