Избранное трейдера Чужой
--Массив с Тикерами, добавьте нужные тикеры aTickerList = {"MSNG", "GAZP", "LKOH", "SIBN", "GMKN","ROSN", "SBER", "TATN", "NVTK", "IRAO", "RSTI", "SBERP", "PHOR", "SNGS", "TRNFP", "VTBR", "FEES", "MVID", "RASP", "MFON", "AFLT", "MAGN", "ALRS", "MTSS", "MOEX", "RTKM", "MGNT", "NLMK", "SNGSP", "CHMF", "MTLR", "HYDR", "MFON", "RSTI", "PLZL", "BANEP", "POLY" }; --Функция поиска цены function fGetPrice(sTickerName, sNum) --Подключаемся к источнику данных local ds=CreateDataSource("TQBR", sTickerName, INTERVAL_D1); while (Error=="" or Error == nil) and ds:Size() ==0 do sleep(10) end; if Error ~="" and Error ~=nil then message("Error: "..Error, 1) end; local sSize=ds:Size(); local sCurrentPrice=ds:O(sSize); local sLastWeekPrice7=0; local sLastWeekPrice14=0; --Берем цену закрытия свечи неделю назад sLastWeekPrice7=ds:C(sSize-4); --Берем цену закрытия свечи 2 недели назад sLastWeekPrice14=ds:C(sSize-8); --Вычисляем проценты local sPrc7=math.floor((100-((sLastWeekPrice7*100)/sCurrentPrice))*100)/100; local sPrc14=math.floor((100-((sLastWeekPrice14*100)/sCurrentPrice))*100)/100; --Заполняем таблицу значениями SetCell(t_id, sNum, 0, tostring(sTickerName)); SetCell(t_id, sNum, 1, tostring(sCurrentPrice),sCurrentPrice); SetCell(t_id, sNum, 2, tostring(sLastWeekPrice7),sLastWeekPrice7); SetCell(t_id, sNum, 3, tostring(sLastWeekPrice14),sLastWeekPrice14); SetCell(t_id, sNum, 4, tostring(sPrc7),sPrc7); SetCell(t_id, sNum, 5, tostring(sPrc14),sPrc14); --Текущая цена больше цены прошлой недели - раскрашиваем зеленым if sCurrentPrice>sLastWeekPrice7 then fGreen(sNum); end; --Текущая цена меньше цены прошлой недели - раскрашиваем красным if sCurrentPrice<sLastWeekPrice7 then fRed(sNum); end; --Текущая цена больше цены прошлой недели и цена прошлой недели больше цены позапрошлой недели --раскрашиваем желтым if sCurrentPrice>sLastWeekPrice7 and sLastWeekPrice7>sLastWeekPrice14 then fYellow(sNum); end; end; --- Функция создает таблицу function CreateTable() -- Получает доступный id для создания t_id = AllocTable(); -- Добавляет 6 колонок AddColumn(t_id, 0, "Тикер", true, QTABLE_INT_TYPE, 15); AddColumn(t_id, 1, "Сегодня", true, QTABLE_INT_TYPE, 15); AddColumn(t_id, 2, "Неделя", true, QTABLE_INT_TYPE, 15); AddColumn(t_id, 3, "2 Недели", true, QTABLE_INT_TYPE, 15); AddColumn(t_id, 4, "Неделя (%)", true, QTABLE_INT_TYPE, 15); AddColumn(t_id, 5, "2 Недели (%)", true, QTABLE_INT_TYPE, 15); -- Создаем t = CreateWindow(t_id); -- Даем заголовок SetWindowCaption(t_id, "7 Days"); -- Добавляем строки for k,v in pairs(aTickerList) do InsertRow(t_id, k); end; end; --- Функции раскрашивают ячейки таблицы function fRed(col) SetColor(t_id, col, -1, RGB(255,168,164), RGB(0,0,0), RGB(255,168,164), RGB(0,0,0)); end; function fGreen(col) SetColor(t_id, col, -1, RGB(157,241,163), RGB(0,0,0), RGB(157,241,163), RGB(0,0,0)); end; function fYellow(col) SetColor(t_id, col, -1, RGB(249,247,172), RGB(0,0,0), RGB(249,247,172), RGB(0,0,0)); end; --Основная функция function main() -- Создаем таблицу CreateTable(); --Пробегаемся по массиву тикеров for k,v in pairs(aTickerList) do fGetPrice(v, k); end; end;как выглядит в квике:
Есть один старый анекдот:
Пришел мужик на базар курицу покупать, идет и цену спрашивает.
- Сколько стоит курица?
- 3 рубля.
- А сколько ваша курица стоит?
- 3 рубля.
- А у вас почем курица?
- 10 рублей!
- Как 10? А почему так дорого, ведь она ничем не отличается?
- Понимаешь, мужик, очень деньги нужны.
Я всегда вспоминаю этот анекдот, когда слышу о том, что соотношение стоп-лосса к тэйк-профиту должно составлять значение равное 1:2, или 1:3, или даже выше. Видимо те, кто дают такие советы, надеются, что чем выше они установят это соотношение, тем больше будет их прибыль. Почему бы тогда не установить это соотношение равным, к примеру, 1:10 или даже 1:100? Вот прибыль тогда будет, мешком не унести! Заживем!
К сожалению, на рынке не все так просто и чтобы получить больше прибыли недостаточно, как в том анекдоте, одного желания. Так каким же должно быть соотношение стоп-лосса к тэйк-профиту? В данной статье я постараюсь дать ответ на этот вопрос.
«Тройка» как звено в цепочке одной большой прачечной.
«Кошелек российской элиты. Как устроена офшорная империя «Тройки Диалог». Расследование OCCRP» https://meduza.io/feature/2019/03/04/koshelek-rossiyskoy-elity.
Хочется когда-нибудь прочитать такую же историю про Дойчебанк
Дневная доходность здесь — около 50%! Причем здесь количество прибыльных сделок — 53%, убыточных (вместе с нулевыми) — 47%, соотношение средней прибыли к среднему убытку — 1.05. То есть, при таком вроде бы незначительном преимуществе в расчете вероятностей результат оказывается очень значительным — эффект большого количества сделок, то есть достаточной статистической выборке даже внутри одного дня.
В данном случае мы не пытаемся что-то предсказывать, а четко определяем вероятности и планируем свои действия в соответствии с их величиной. Проблема здесь в том, что вычислить эти величины довольно сложно, в связи с тем, что присутствует влияние множества факторов, которые должны быть учтены в определении вероятностей
Суть проблемы: ищем алгоритм, с небольшим профит фактором и большим количеством сделок. После написания и тестирования разнообразных подходов, решил вернуться к истокам и обучить модель ML. Фичи взял из старых работ плюс skew из одной из статей Виталия.