Избранное трейдера Егор Коняхин

по

STATDIV3 доработанный индикатор для quik на языке lua

если индикатор больше 0, то покупаем, если ниже то продаем

скачать можно здесь:dropmefiles.com/09FCu
как устанавливать смотрите предыдущие статьи: https://smart-lab.ru/blog/528424.php
название STATDIV3 это доработанный STATDIV


поведение индикатора на графике:
STATDIV3 доработанный индикатор для quik на языке lua


сам код индикатора:
Settings={
Name="STATDIV3",
period=50,
  line=
  {
    {
      Name="curve",
      Color=RGB(0,0,255),
      Type=TYPE_LINE,
      Width=1
    },
    {
      Name="line",
      Color=RGB(255,0,0),
      Type=TYPE_LINE,
      Width=1
    },
    {
      Name="MA",
      Color=RGB(0,0,255),
      Type=TYPE_LINE,
      Width=1
    },
    {
      Name="MA2",
      Color=RGB(0,128,128),
      Type=TYPE_LINE,
      Width=1
    },
    {
      Name="line2",
      Color=RGB(0,0,255),
      Type=TYPE_LINE,
      Width=1
    },
    {
      Name="line3",
      Color=RGB(0,128,128),
      Type=TYPE_LINE,
      Width=1
    }
  } 
}

function Init()
  cache_ind={}
  cache_ind2={}
  cache_ind3={}
  return 2
end

function OnCalculate(index)
  if index < Settings.period then
    return nil
  else
    local sum1=0
    local sum2=0
    local sum0=0
    local sum02=0
    local sum03=0
    for i=index-Settings.period+1, index do  
    do
      if C(i) > O(i) then
        sum1 = sum1 + C(i) - O(i)
        sum2 = sum2 + C(i) - O(i)
      else
        sum2 = sum2 + O(i) - C(i)
      end  
    end 
    cache_ind[index] = sum1/sum2    
    if index > Settings.period+12 then 
--[[
      sum0 = 1*cache_ind[index]+
            (1)*cache_ind[index-1]+
            (1)*cache_ind[index-2]+
            (1)*cache_ind[index-3]+
            (1)*cache_ind[index-4]+
            (1)*cache_ind[index-5]+
            (1)*cache_ind[index-6]+
            (1)*cache_ind[index-7]+
            (1)*cache_ind[index-8]+
            (1/2)*cache_ind[index-9]+
            (1/3)*cache_ind[index-10]+
            (1/4)*cache_ind[index-11]+
            (1/5)*cache_ind[index-12]
--]]
      sum0 = 1*cache_ind[index]+
            (1/2)*cache_ind[index-1]+
            (1/3)*cache_ind[index-2]+
            (1/4)*cache_ind[index-3]+
            (1/5)*cache_ind[index-4]+
            (1/6)*cache_ind[index-5]+
            (1/7)*cache_ind[index-6]+
            (1/8)*cache_ind[index-7]+
            (1/9)*cache_ind[index-8]+
            (1/10)*cache_ind[index-9]+
            (1/11)*cache_ind[index-10]+
            (1/12)*cache_ind[index-11]+
            (1/13)*cache_ind[index-12]

    end
--[[
    sum0 = sum0/(1+1+1+1+1+1+1+1+1+1/2+1/3+1/4+1/5)
--]]
    sum0 = sum0/(1+1/2+1/3+1/4+1/5+1/6+1/7+1/8+1/9+1/10+1/11+1/12+1/13)

       
    cache_ind2[index] = sum0
    if index > Settings.period+50 then   
      sum02 = 1*cache_ind2[index]+
            (1)*cache_ind2[index-1]+
            (1)*cache_ind2[index-2]+
            (1)*cache_ind2[index-3]+
            (1)*cache_ind2[index-4]+
            (1)*cache_ind2[index-5]+
            (1)*cache_ind2[index-6]+
            (1)*cache_ind2[index-7]+
            (1/2)*cache_ind2[index-8]+
            (1/3)*cache_ind2[index-9]+
            (1/4)*cache_ind2[index-10]+
            (1/5)*cache_ind2[index-11]+
            (1/6)*cache_ind2[index-12]
--[[
      sum02 = 1*cache_ind2[index]+
            (1/2)*cache_ind2[index-1]+
            (1/3)*cache_ind2[index-2]+
            (1/4)*cache_ind2[index-3]+
            (1/5)*cache_ind2[index-4]+
            (1/6)*cache_ind2[index-5]+
            (1/7)*cache_ind2[index-6]+
            (1/8)*cache_ind2[index-7]+
            (1/9)*cache_ind2[index-8]+
            (1/10)*cache_ind2[index-9]+
            (1/11)*cache_ind2[index-10]+
            (1/12)*cache_ind2[index-11]+
            (1/13)*cache_ind2[index-12]
--]]
    end
    sum02 = sum02/(1+1+1+1+1+1+1+1+1/2+1/3+1/4+1/5+1/6)
--[[
    sum02 = sum02/(1+1/2+1/3+1/4+1/5+1/6+1/7+1/8+1/9+1/10+1/11+1/12+1/13)
--]]
    cache_ind3[index] = sum0 - sum02
    if index > Settings.period+50 then   
      sum03 = 1*cache_ind3[index]+
            (1/2)*cache_ind3[index-1]+
            (1/3)*cache_ind3[index-2]+
            (1/4)*cache_ind3[index-3]+
            (1/5)*cache_ind3[index-4]+
            (1/6)*cache_ind3[index-5]+
            (1/7)*cache_ind3[index-6]+
            (1/8)*cache_ind3[index-7]+
            (1/9)*cache_ind3[index-8]+
            (1/10)*cache_ind3[index-9]+
            (1/11)*cache_ind3[index-10]+
            (1/12)*cache_ind3[index-11]+
            (1/13)*cache_ind3[index-12]
    end
    sum03 = sum03/(1+1/2+1/3+1/4+1/5+1/6+1/7+1/8+1/9+1/10+1/11+1/12+1/13)

  end  

  if sum1/sum2 > 0.5 and sum03 > 0 then
    sum1 = sum03
  else
    if sum1/sum2 < 0.5 and sum03 < 0 then
      sum1 = sum03 
    else 
      sum1 = 0
    end
  end

  return sum1, 0
end

end
 всем удачи!
  • обсудить на форуме:
  • Quik Lua

Доработал индикатор STATDIV на lua для quik

пользоваться можно так:
если касная кривая выше 0,5 и синяя выше зеленой то логуем
если красная ниже 0,5 и синяя ниже зеленой то шортим
принимаю пожелания по изменению кода индикатора
Доработал индикатор STATDIV на lua для quik


скачать можно здесь:
dropmefiles.com/y4kpv

как установить:
в папке quik создаете папку LuaIndicators туда кидаете текстовый файл с раcширением .lua и содержанием приведенного индикатора, потом запускаете quik и добавляете как обычный индикатор к графику с именем STATDIV

продолжение темы: smart-lab.ru/blog/528145.php

код:

Settings={
Name=«STATDIV»,
period=25,
  line=
  {
    {
      Name=«curve»,
      Color=RGB(255,0,0),
      Type=TYPE_LINE,
      Width=1
    },
    {
      Name=«line»,
      Color=RGB(255,0,0),
      Type=TYPE_LINE,
      Width=1
    },
    {
      Name=«MA»,
      Color=RGB(0,0,255),

( Читать дальше )
  • обсудить на форуме:
  • Quik Lua

Одна хорошая новость и одна тревожная (про рубль и банк)

Хорошая новость. Вчера Минфин разместил ОФЗ на рекордную дневную сумму – на 91,4 млрд.р. Время рекордов: предыдущий максимум состоялся всего 2 недели назад и был скромнее: 27 февраля было размещено ОФЗ а 57 млрд.р. 450-миллиардный план заимствований 1 квартала почти выполнен (сейчас привлечено 382 млрд.р.).

Рост спроса на ОФЗ, во-первых, постепенно снижает кривую доходности. Короткие бумаги уже дают мене 7,5% годовых. А это в перспективе марта-апреля может привести к снижению ключевой ставки до тех же 7,5%. Запас ставки к инфляции есть (по итогам февраля, уровень инфляции – 5,2%), деньги на рынок идут и стимулировать их бОльшими процентами не требуется. Плюсы для широкого облигационного рынка и нынешних держателей российских облигаций в развитии этого сценария очевидны.
Одна хорошая новость и одна тревожная (про рубль и банк)
По данным Минфина.

Во-вторых, высокий спрос на ОФЗ – это и отражение отработанной схемы. Россия не может и, похоже, уже не хочет занимать деньги на внешнем рынке. И Россия – 6-я экономика мира, причем со смехотворным уровнем долга (внешний и внутренний госдолг всего около 200 млрд.долл.). Отличный заемщик. Иностранные деньги научились пользоваться отечественными долгами. Как бы драматичен не был прошлогодний исход иностранного капитала, он оказался не ужасающим. И в марте, судя по ситуации, процент иностранных покупателей отечественного госдолга вновь приблизится к 30%. А наработанные механизмы покупки рублевых облигаций и, считайте, рублей – это и залог хотя бы временной устойчивости самого рубля. В прошлом году рубли активно продавались, в текущем, несмотря на традиционны отток капитала, покупаются. И вряд ли эта покупка завершена.



( Читать дальше )

скрипт для quik

скрипт для отслеживания бумаг по системе BWS:

--Массив с Тикерами, добавьте нужные тикеры
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;
как выглядит в квике:

( Читать дальше )
  • обсудить на форуме:
  • QUIK

Крах брокера-банка. Что делать?

    Много букв. Читая смарт-лаб, вижу, что достаточно часто у людей возникает вопрос, что делать если у брокера (банк) отзывают лицензию. Расскажу внутреннюю кухню, что происходит когда назначена Временная администрация ЦБ РФ, а затем Ликвидатор АСВ.
   Сегодня рассмотрим кейс при таких условиях:
1. Вашим Брокером является кредитная организация;
2. У кредитной организации  есть брокерская лицензия;
3. У кредитной организации  есть депозитарная лицензия;
4. Субброкерская схема.
5. После решения суда банк подлежит ликвидации.
   Все мы знаем, как обстоят дела с отзывами лицензий у банков. Соответственно, при отзыве  лицензии на осуществление банковской деятельности,  автоматом аннулируются лицензии на осуществление брокерской, депозитарной и дилерской деятельности (у банка могут быть другие лицензии профессионально участника рынка ценных бумаг), все лицензии аннулируются.
   Предвестником (одним из) отзыва лицензии, является невозможность банком получить  овернайт или закрывается внутредневной лимит под залог ценных бумаг в НКО АО НРД. Считайте, что утром перед началом работы у вас во всех офисах и отделениях банка высадится десант из назначенной ЦБ РФ Временной администрации.

( Читать дальше )

Софт для парного трейдинга (арбитража)

    • 10 марта 2019, 23:00
    • |
    • Burim
  • Еще

Добрый день лудоманы !

Ввиду отсутствия прав публикации в разделе алготрейдинга опубликую пост здесь.

В свое время я разработал и написал программку для парного трейдинга на форекс — математическая идея была правда не моя но я в свое время пришел к этой идее независимо от команды использовавшей этот принцип в своем софте.

Принцип на самом деле классический, который состоит в использовании более быстрого инструмента и более медленного с измерением расхождения и отклонении такового относительно среднего значения. Расхождение более установленного (опытным путем) определенного порога следует принимать как сигнал входа в сделку на отстающем инструменте в ожидании что система придет в равновесии (расхождение нормализуется) выход из сделки осуществляется по расхождению в другую сторону также с установленным опытным путем значением.

Я использовал это на форекс беря «быстрый инструмент» на СМЕ — фьючерс на валюту с котировок Rithmic, а «медленный» спот цену на



( Читать дальше )

О вычислении дельты опциона


О вычислении дельты опциона 

Дискуссии о правильных и неправильных методах вычисления дельты опциона. Дошел до темы «Липкая денежность» против «липкого страйка».

Больше всего смущает то, что в работе Блэка и Шолеса, на которую постоянно ссылаются оппоненты, нет вообще никаких упоминаний о «кривой волатильности», волатильность у БШ есть константа. Чем «кривее» кривая IV для конкретного рынка, тем меньше модель БШ подходит для его описания, это вся информация, которую кривая IV в себе содержит.

Спор о том, следует ли учитывать ее наклон при вычислении дельты, подобен спору о количестве чертей, способных уместиться на острие иголки. Мне кажется, правильнее изменить модель БШ, чем стараться подогнать ее неверные результаты под реальные рынки.

Напомню об одном из возможных подходов к такой модификации.

1.            Собираем статистику — набор исторических пар {d(Fut),d(ImpVol)};

Где d(Fut) – дневное приращение БА

d(ImpVol) – приращение волатильности опционов на центральном страйке за тот же день.



( Читать дальше )

Дело было днем, делать было нечего!

Сижу счас в рынке, жду исполнения приказов. Рынок не подчиняется, огрызается. Рядом лежит планшет самсунг. 
дело в том, что я люблю не только посидеть, но и полежать. 
    И вот я что сделал:Дело было днем, делать было нечего!
    Я сделал два монитора. Теперь я могу спокойно взять планшет андроид и пойти в другую комнату и там полежать, глядя на рынок через планшет))))
    Страшно удобно.
Не все смерды знают, но ваш планшет или смартфон на Android можно использовать как полноценный второй монитор для компьютера или ноутбука. Причем речь идет не об удаленном доступе с Android к компьютеру, а именно о втором мониторе: который отображается в параметрах экрана и на который можно выводить отдельное от основного монитора изображение

Теперь я, убирая снег возле дома,  либо  сидя на унитазе — я всегда вижу рынок!)))))))))))) А вы так сможете?
     Вот ссылка на полезную фичу
remontka.pro/android-as-2nd-monitor/

   Читайте Хемингуэя и будет вам польза! 

Ваш все тот же самый 
             S. Hamster

НДФЛ по Брокерским счетам и ИИС. Особенности переноса убытка.

Разбираем очень интересный реальный кейс:

за 2018 год Физлицом резидентом с одной стороны получен убыток по брокерскому счету (Операции с ФИСС) у брокера ХХХ на сумму около 3 млн руб,
 а с другой прибыль по ИИС в Открытии — 750 тыс руб, тип счета не определен, НДФЛ не возмещался.
В 2019 году уже образовалась прибыль почти 2 млн руб по основному брокерскому счету и небольшой + по ИИС
При выводе прибыли брокер хочет удержать НДФЛ за текущий год 13%(и это нормально), далее предлагается подать уточнение в налоговую по форме 3-НДФЛ чтобы оформить возврат удержанного брокером налога за 2019 (корректировка налоговой базы на сумму убытка в 2018)
-----------
Получившийся отрицательный финансовый результат может быть учтен налогоплательщиком как при расчете налога в текущем периоде (в случае, если по иным операциям получена прибыль), либо (если в текущем году налогооблагаемый доход по иным операциям отсутствует) получившийся убыток может быть перенесен на последующие годы ст. 220.1 НК РФ.  

( Читать дальше )
  • обсудить на форуме:
  • ИИС

....все тэги
UPDONW
Новый дизайн