Побудова графіка спреду у терміналі QUIK

У деяких торгових стратегіях використовуються ціни кількох активів. Скажімо, можна торгувати ф'ючерсом MX, дивлячись на ціни ф'ючерсів MX, SR GZ і виконуючи над ними деякі арифметичні перетворення. Наприклад, побудувати графік виду Spread := price(MX) - 5 * price(SR) - 5 * price(GZ) - 50000 за поточними котируваннями і будувати торгові ідеї на його основі.

Кому цікава візуалізація подібних спредів у терміналі QUIK 7-ї версії за допомогою lua-скриптів, ласкаво просимо під кат. Вважатимемо, що у нас є графік основного інструменту (MXH7) та графіки двох додаткових інструментів (SRH7, GZH7). Ці графіки вже побудовані в терміналі, встановлений однаковий таймфрейм (скажімо, 1 хвилина) і ним ідентифікатори MXH7_1min, SRH7_1min, GZH7_1min.

Створимо в папці установки терміналу підпапку LuaIndicators і помістимо туди скрипт SpreadIndicator.lua, наведений наприкінці посту (виділіть код, скопіюйте в блокнот і збережіть у файл із вказаним ім'ям). Додамо на графік MXH7 індикатор "SpreadIndicator" і задаємо йому параметри:

  • tag1 - мітка графіка, звідки береться ціна додаткового інструменту 1 (у нашому випадку SRH7_1min);
  • tag2 - мітка графіка, звідки береться ціна додаткового інструменту 2 (у нашому випадку GZH7_1min);
  • коефіцієнти k, k1, k2, a, якими обчислюється спред spread.
Формула для обчислення спреду така: spread: = k * price (security) + k1 * price (tag1) + k2 * price (tag2) + a.

Графік спреду оновлюватиметься під час оновлення графіка основного інструменту.

Код нескладно модифікувати для іншої кількості інструментів і формули для розрахунку спреду (див. функцію getSpread). Це гарна вправа для підвищення рівня володіння навичками програмування на lua.