Избранное трейдера Иннокентий Антипов
В свое время у меня была задумка — посмотреть какой в реальности (включая комиссии) спред между спотом и фьючерсом и стОит ли его торговать. Так как, ни С#, ни Lua я, пока, не изучил, то пришлось писАть на Qpile…
Торговый функционал в скрипте не прописывал, поэтому его можно использовать только, как анализатор.
Кому надо – забирайте, так как я решил для себя дальше эту тему не развивать (по крайней мере пока)…
Выглядит интерфейс вот так:
Особенности:
— текущий фьючерс определяется автоматически, в день экспирации автоматически переключается на новый;
— перед использованием надо указать папку в настройках пользователя для расчетов;
— в скобках отражается средний процент за последние 500 замеров для объективности расчетов (цифру можно менять в настройках пользователя);
Settings= { Name = "Piton", N = 100, legend = "price2", line = { { Name = "Sint", Color = RGB(0, 132, 0), Type = TYPE_LINE, Width = 1 } } } function Init() return 1 end Candles = {}; function OnCalculate(index) local numCandles = getNumCandles(Settings.legend); if index <= Settings.N or numCandles <= Settings.N then return nil; end Candles, n, _ = getCandlesByIndex(Settings.legend, 0, index - Settings.N, Settings.N); if n ~= Settings.N then return nil; end -- Предварительный расчет sum1, sum2, sum3 = advancePaynemt(index); -- расчет коэффициента корреляции Пирсона r = sum3/math.sqrt(sum1*sum2); return r; end -- Предварительный расчет ---------------------------------------- function advancePaynemt(index) local sum1 = 0; local sum2 = 0; local sum3 = 0; local j = 0; -- Вычислить среднее арифметическое for i=index - Settings.N + 1, index, 1 do sum1 = sum1 + C(i); sum2 = sum2 + Candles[j].close; j = j + 1; end aver1 = sum1/Settings.N; aver2 = sum2/Settings.N; -- Вычислить сумму квадратов отклонений sum1 = 0; sum2 = 0; j = 0; for i=index - Settings.N+1, index, 1 do sum1 = sum1 + math.pow(C(i) - aver1, 2); sum2 = sum2 + math.pow(Candles[j].close - aver2, 2); j = j + 1; end -- Вычислить сумму произведений разности j=0; for i=index - Settings.N+1, index, 1 do sum3 = sum3 + (aver1 - C(i))*(aver2 - Candles[j].close); j = j + 1; end return sum1, sum2, sum3; endКак запустить и настроить:
Комплект индикаторов из серии «черпаем издалека и намазываем на график».
Сайт московской биржи по окончании торгов приводит данные об открытых позициях на срочном рынке. Эти данные содержат информацию в следующих разрезах:
Эта информация является официальной. Она не всегда совпадает с количеством открытых позиций, которые показывает терминал Quik. Вернее она всегда показывает немного больше открытых позиций, чем терминал. Как я понимаю, дело во внебиржевых сделках, которые в терминал не попадают.
Информация интересная. На предложение визуализировать её я с удовольствием прикинулся золотой рыбкой. Написан шаблон, генерирующий комплект индикаторов, которые выводят на график историю как сырых данных, так и результат определённых математических действий над ними.
вот вам портфель для QUIK (на вечерке возможны глюки, пока не проверял, жду вечерку).
он быстренько считает прибыль / убыток по каждой позиции и общую.
Считает внутри дня, и за месяц (в скрипте укажите ваш начальный баланс за месяц. Открывается скрипт простым Блокнотом)
Поставьте его, скажите какие есть ошибки? Баланс там не правильно показывает, или еще что.
как поставить: в QUIK нажимаем CTRL+F11 далее ДОБАВИТЬ (указываем файл), далее ПЕРИОД РАСЧЕТА поставьте на 1 секунду. ПРИМЕНИТЬ
далее снова CTRL+F11 — создать таблицу, выделяем наш скрипт, добавим все колонки (ДОБАВИТЬ ВСЕ) и жмем ДА
Когда будете писать ошибку, напишите какой у вас брокер.
Если все хорошо, можете просто написать что еще сделать.
>>> СКАЧАТЬ <<<
биржевая сводка
UPD1
14 июля в 19:47 нашел на вечерке ошибку.
Все поправил — можно обновиться
UPD2
15 июля в 10:40
Подправил работу со временем локальным и серверным.
Из-за этого выборка по позициям шла коряво в клиринг и выходные