Избранное трейдера IliaM
По мне так, Bitcoin это лишь транзакционный инструмент.В основном для обхода китайцами валютных ограничений в своей стране. Тренд спроса задаётся оттуда. Ну остальной мир контрабандистов и оптимизатор ов периодически вносят свою лепту. Заходить и выходить в биток проще простого, через кэш....
pip install backtraderэто установит фреймворк, а потом
Алгоритм данной торговли был описан уважаемым Гном (https://smart-lab.ru/blog/499606.php) и, поскольку я являюсь любителем различных теорий Мартингейла и усреднения, написал робота по этой стратегии.
Подробно на алгоритме останавливаться не буду — читайте по ссылке у Гнома, там очень хорошо всё расписано.
Здесь — немного измененная реализация. Отличие в том, что позиции открываются не через равные промежутки цены, а чуть шире: еще должно прийти хотя бы минимальное подтверждение, что дальше не полетит (в данном случае использован вход обратно в канал Боллинджера, но это несложно поменять на что угодно).
Если полетит против нас вертикально, мы хотя бы не будет бессмысленно открывать кучу сделок на мгновенной длинной вертикальной палке.
Итак, представляю: «Судак-Тудак» Универсальный (одновременно для акций и фьючерсов).
Если хотите добавить инструменты (а они добавляются в массив aTickerList), не забудьте вписать их данные в массивы:
--Массив с Тикерами, добавьте нужные тикеры 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;как выглядит в квике:
Банкротство инвесткомпании «Энергокапитал» проявило серьезную проблему. В рамках него возникли требования о возврате клиентами компании средств с брокерского счета в конкурсную массу. Формально их исключение из имущества профучастника при банкротстве должно защищать клиентов. Однако практика ведения общих счетов позволяет конкурсному управляющему требовать возврата средств. При этом стоимость администрирования обособленных счетов высока, что невыгодно клиентам. Одновременно снижается и маржа брокера, что не устраивает бизнес.
В редакцию “Ъ” обратилась группа клиентов одного из старейших брокеров Санкт-Петербурга, компании «Энергокапитал», находящейся в состоянии банкротства. Осенью 2017 года 148 инвесторов получили уведомления о судебных исках о признании их последних сделок с компанией недействительными. Эти сделки заключались с брокером в рамках возврата клиентских средств в пределах одного месяца до объявления компании банкротом. Вместе с тем, согласно закону «О несостоятельности (банкротстве)», в конкурсную массу профучастника не включается имущество его клиентов, «находящееся на специальном брокерском счете». Тем не менее истец (в интересах конкурсного управляющего) настаивал, что сделки были заключены с «предпочтением», поэтому деньги должны быть возвращены в конкурсную массу.
Разбирательство по одному из первых исков закончилось в пользу ответчика — Арбитражный суд Северо-Запада «пришел к выводу об отсутствии оснований для признания сделки недействительной». Однако в дальнейших судебных инстанциях это решение было отменено. Тринадцатый арбитражный апелляционный суд посчитал, что довод ответчика о том, что имел место возврат имущества ответчика, не основан на нормах материального права