Избранное трейдера dimaz07
Про улыбку только ленивый не говорил. Ну и мы лениться не станем. Что бы пощупать улыбку своими руками вам надо. Пойти в туалет и не снимая штаны помыть руки, что бы потом включить эксель-калькулятор и скачать файлик
cloud.mail.ru/public/H7RV/k4MBtngy1
Дальше, ума много не надо. Из пакета «анализ данных» мы делаем «описательную статистику» и гистограмму распределения. (желтая заливка). Ручками, помытыми с мылом, ищем сигмы и строим нормальное распределение (зеленое). И начинаем все это сравнивать. Если от одного распределения отнять другое, то и получится улыбка или насколько наше распределение БА не совпадает с нормальным Гаусинским распределением. Так как данных мы брали много, но не очень то мы получим некоторые точки, и если построить точечный график и выбрать макет с линией, то вы построите, только не пугайтесь, регрессию по наименьшим квадратам. Можно через функцию в каРкуляторе-эксель «тенденция» сделать то же самое. Ну, в общем, то и все. Берем 3 сигмы, считаем цену страйков и можем присваивать им полученную волатильность. Как видно улыбка СИ с задранным правым краем, у РИ наоборот. Видно чем это обусловлено. Реальные распределения сдвинуты. Правда, наша улыбка получилась не такой красивой, но это мы поправим. И теперь, той части аудитории, которой все ясно, можно вернуться туда, где они руки мыли, а мы продолжим.
Регулярно слышу или читаю про то, как некоторые пытаются применить метод усреднения в своей торговле акциями, фьючерсами или валютой. Я ничего против этого метода не имею, когда он применяется с умом и с учётом вероятного риска увеличения потерь в торговле. Есть множество подобных методик, но, к сожалению, вижу, что новички часто всерьез рассматривают агрессивный метод усреднения как некий торговый грааль, который непременно их обогатит.
Как обычно рассуждают подобные персонажи? Приведу на примере одну из вариаций агрессивного метода усреднения.
1. Допустим, я покупаю некий инструмент — 1 лот за 1000 рублей в надежде, что его цена увеличится.
2. Если цена вырастет, то я в шоколаде, получаю прибыль, закрывая позицию. Если же цена идет в противоположную сторону (вниз), то я докупаю на тот же объем. Например, цена упала на 10 процентов, до 900 рублей. В этом случае снова производится покупка на то же количество (1 лот), что и в предыдущий раз. Итого, наша позиция увеличивается до 1900 рублей, 2 лотов.
3. Теперь, чтобы получить прибыль, цена инструмента должна превысить уже не 1000 рублей, а 950 рублей. Допустим, что это снова не происходит, а цена снижается еще на 10 процентов, до 810 рублей. Тогда снова производится покупка, но уже в объеме, равном сумме предыдущих покупок (количество лотов удваивается), то есть покупаем еще 2 лота по 810 рублей. Итого, у меня 4 лота, затратил я на них 3520 рублей.
4. Теперь, чтобы получить прибыль, цена инструмента должна превысить уже не 950 рублей, а 880 рублей. Если цена снова снижается на 10 процентов, то вся процедура повторяется: количество лотов удваивается, средняя цена покупки снижается. Так продолжается до тех пор, пока цена (наконец!) не разворачивается и не идет в нужную мне сторону, пересекая среднюю стоимость покупки.
--require "w32" -- говорят что нужна, на практике не увидел require "luacom" local isrun = true function OnStop(flag) isrun = false end function main() --w32.CoInitialize(nil) ML = luacom.CreateObject("matlab.application.single") assert(ML) ML.Visible = 1 -- не обязательно там все равно ничего в принципе не видно, но проще убить процесс если что t = tos(0) message("tos = " .. tostring(#t)) -- меньше 150 тк фильтр по "SPBFUT" ML:PutWorkspaceData("C1", "base", t); -- отправляем в МЛ под именем С1 message("Put") wd = ML:GetWorkspaceData('C1', 'base') -- а вот так получаем обратно message("C1(1,1) = " .. tostring(wd[1][1])) ML:Execute("r = TST;") -- в МЛ у меня эта функция пишет данные в файл и возвращает "1", если все гладко r = ML:GetWorkspaceData('r', 'base') -- на прямую результат возвращает криво, так наверно удобнее message("Execute TST = " .. tostring®) ML:Quit() ML = nil --w32.CoUninitialize(nil) message("end COM ML") end function tos(n) -- читает ТОС в матрицу начиная с "n" local outcell = {} local cnt = 0 nn = getNumberOf("all_trades") for i = n, 150 do -- для примера хватит 150 строчек, но максимум 1500 * 5 -- приходится ограничить - у LuaVM случается грыжа при передаче в МЛ более чем 2000*5 trade = getItem("all_trades", i) cc = trade["class_code"] if cc == "SPBFUT" then cnt = cnt + 1 dt = trade["datetime"] dt = dt.hour*10000 + dt.min*100 + dt.sec outcell[cnt] = {trade.trade_num, trade.sec_code, trade.qty, trade.price, dt} end end return outcell end
Не для пиара, а на пользу коллегам публикую журнал сделок и открытых позиций для квика.
https://github.com/9159340/TradeHistory
главный файл — TradeHistory.lua
Ниже — описание из документации.
Таблица открытых позиций.
Внешний вид
Колонки
Account – код брокерского счета
Comment – комментарий из сделки.
secCode – код инструмента
classCode – код класса
tradeNumber – номер сделки, используется только в таблице закрытых позиций
Перечисленные выше колонки – это разрезы учета сделок. Подробнее о работе с комментариями смотрите в разделе «Возможности».
lot – размер лота
dateOpen – дата открытия позиции (самой первой сделки)
timeOpen – время открытия позиции (самой первой сделки)