В середине 2015-го года я сделал простую, но достаточно функциональную утилиту для копирования сделок на языке программирования QPILE, потому, как новый язык программирования QLUA тогда имел много багов и недоработок. Программа оказалась популярна среди частных управляющих, как альтернатива сервисам автоследования COMON, EasyMANi и пр.
С течением времени появлялись новые пожелания по доработке существующего дубликатора. Однако, в связи с отсутствием возможности перестановки и удаления заявок на срочном рынке для языка QPILE, пришлось написать совершенно новую программу.
Почти четыре месяца назад, 18 декабря, начал разработку новой программы для копирования сделок для QUIK. Предыдущую программу на QPILE я написал менее, чем за месяц. Сначала рассчитывал сделать за пару месяцев, но проект оказался сложнее раза в два, чем предполагал. Ушло более 100 часов работы над программным кодом. Потом, часов 10 на описание. Пишу программы не каждый день и в своё удовольствие.
risk_level | NUMBER | Уровень риска клиента. Возможные значения:
|
function cnd(x) -- taylor series coefficients local a1, a2, a3, a4, a5 = 0.31938153, -0.356563782, 1.781477937,-1.821255978, 1.330274429 local l = math.abs(x) local k = 1.0 / (1.0 + 0.2316419 * l) local w = 1.0 - 1.0 / math.sqrt(2 * math.pi) * math.exp(-l * l / 2) * (a1 * k + a2 * k * k + a3 * (k^3) + a4 * (k^4) + a5 * (k^5)) if x < 0 then w = 1.0 - w end return w end -- The Black-Scholes option valuation function -- is_call: true for call, false for put -- s: current price -- x: strike price -- t: time -- r: interest rate -- v: volatility function black_scholes(is_call, s, x, t, r, v) local d1 = (math.log(s / x) + (r + v * v / 2.0) * t) / (v * math.sqrt(t)) local d2 = d1 - v * math.sqrt(t) if is_call then return s * cnd(d1) - x * math.exp(-r * t) * cnd(d2) else return x * math.exp(-r * t) * cnd(-d2) - s * cnd(-d1) end endПроверено вчера на путах сишки. Расчет совпал с табличными значениями «теор цена» на июньских, сентярьских, декабрьских досках опционов.
MA Color — это модифицированная скользящая средняя, которая меняет цвет в зависимости от направления тренда.
Индикатор помогает визуально определять направление тренда, особенно на мелких таймфреймах.
Settings = { Name = "MA Color", MAPeriod = 29, -- Период MA MAType = 0, -- Тип усреднения (0 = SMA, 1 = EMA, 2 = SMMA, 3 = LWMA) line = { { Name = "MA Up", -- Линия роста MA Color = RGB(0, 255, 0), -- Зелёный (рост) Type = TYPE_POINT, Width = 2 }, { Name = "MA Down", -- Линия падения MA Color = RGB(255, 0, 0), -- Красный (падение) Type = TYPE_POINT, Width = 2 } } } -- Функция расчёта скользящей средней (без рекурсии) function MovingAverage(index, period, matype) if index < period then return nil end -- Проверяем, есть ли достаточно дан