Избранное трейдера Игорь В.

по

Настройки ИТС Квик для активного интрадея/скальпинга . Продолжение . Контрольное окно с упрощёнными таблицами и Графиком .

Надоел чёрный цвет, пока перейду на белый. )) 
Итак, независимо от того, торгуешь по стакану сам, или вместо тебя льёт робот хочется видеть состояние поз, заявок и сделки на графике. Для этого делаем отдельное окошко, лучше на отдельном монике, или его части. Выносим график, табличку сделок, табличку позиций, и табличку стоп-заявок. И все таблички настраиваем — только для очень актуальной текущей информации . 
1) Таблица Сделок: Сокращаем число параметров до трёх: 1.операция, 2. цена, 3 количество. Чтобы операция не занимала много места — визуализируем цветовыми настройками вот так :  *прим- для каждого инструмента можно создать отдельные таблички и отдельные окна контроля, если скальпинг или алго работает на более чем двух инстр.
Настройки ИТС Квик для активного интрадея/скальпинга . Продолжение . Контрольное окно с упрощёнными таблицами и Графиком .

2) подобным же образом настраиваем Стоп-заявки. Это для тех кто предпочитает СЕРВЕНЫЕ , а не виртуальные. Хотя на серверных проскальзывание бывает больше, я последнее время выбираю их.

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

Как и обещал ГРААЛЬ от знакомого трейдера. Часть 2. Идеология рынка.

ИДЕОЛОГИЯ РЫНКА

Большинство на рынке теряет деньги.
Это факт, закон рынка и неопровержимая статистика.
Логическое следствие 1:  «Искать причину движения цены надо не в производных прошлых цен, а в структуре позиций, занятых разными группами игроков.» 
Логическое следствие 2:  Поэтому смысл всего рыночного анализа сводится к тому, что нужно определить в какую сторону открыто «большинство» и на каких уровнях в текущий момент.
Логическое следствие 3: «Большинство»  — это слабые деньги. Потому как они всегда проигрывают сильным деньгам, т.е. меньшинству.
Логическое следствие 4: Если предположить, что «большинство» направленно может открыть свои позиции, что на ценовых пиках и происходит, то  мы вынуждены признать что всегда есть некий «контрагент толпы».  Более того, если 95-99% трейдеров по статистике проигрывали и будут проигрывать, то соот-но есть некая прослойка в 1-5%, которая всегда принимает выигрыш. Деньги ведь никуда не деваются, а только перераспределяются между участниками. Далее, следуя логике,  общее число денежных ср-в у меньшинства (1-5%)  больше, чем «толпы».

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

Заплатить налоги за 2017 год: пришло время декларировать доход

Всем добрый вечер! Давно не писала я, готовлю примеры заполнения декларации 3-НДФЛ для получения вычета по убыткам, по декларированию дохода.

Сразу хочу обратить внимание: форма декларации 3-НДФЛ за 2017 год обновлена и сдавать ее нужно уже по новой форме. Скачать программу для заполнения вы сможете на официальном сайте ИФНС совершенно бесплатно!.

Чтобы я смогла всем помочь, подсказать, дать “картинки” нужного расчета и заполнения — пишите мне ваши вопросы, комментарии, я буду знать, что вас больше всего волнует и помогу, отвечу всем.

Отвечаю на все вопросы, касающиеся налогообложения (НДФЛ, сальдирование убытков, инвестиционный вычет, заполнение налоговых деклараций и иных налогов).

Для тех, кто торгует через иностранного брокера — бывает так, что мы получаем в руки отчет брокера и там в валюте у нас убыток. Но, когда мы формируем отчет в рублях, то финансовый результат может оказаться иным, потому что курс меняется.Так вот, делать вывод об обязанности декларирования дохода нужно делать тогда, когда вы видите свои цифры в рублях, а не в валюте!

Пишите, жду ваших вопросов...


Последняя возможность уменьшить подоходный налог 2017

Сегодня и завтра последний день для того, чтобы уменьшить подоходный налог на ММВБ в этом году. Так как, в режиме Т+2, завтрашние сделки на фондовом рынке пройдут 29 декабря, то эти два дня (26 и 27 декабря) последняя возможность изменить свой подоходный за 2017 год. Сделки четверга, 28 декабря, пройдут уже 3 января и на подоходный налог этого года уже не повлияют.

Что можно сделать тем, у кого по итогам года прибыль? Закрыть убыточные позиции, хоть на несколько секунд. Вы зафиксируете убыток по сделке и уменьшите налогооблагаемую прибыль. Если вы ждёте по этим позициям прибыль и собираетесь держать их дальше, просто выкупите их сразу после продажи. Комиссией придётся пожертвовать. А вот прибыльные позиции сегодня лучше не фиксировать, чтобы не увеличивать прибыль. Если планируете их зафиксировать, отложите на четверг.

Те, у кого по итогам года получился солидный убыток, могут его уменьшить. Это даст возможность уменьшить налогооблагаемую прибыль в следующем году. Надо делать наоборот, закрывать сегодня прибыльные позиции и не трогать убыточные. Если эти позиции планируете держать дальше, выкупайте их после продажи. Что это даст? Фиксация прибыли уменьшает наш налогооблагаемый убыток, так как налог мы всё равно не платим, ни с большого убытка, ни с маленького. Зато в следующем году налогооблагаемая прибыль будет меньше, так как цена покупки акции будет более высокой.



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

Лучший трейлинг на свете! Часть 3.

Продолжаю разбирать возможности ТСЛаб по организации  трейлинг стопов средствами «из коробки». 
Сегодня речь пойдет о трейлинге позиции по параболе.



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

Quik. Индикатор корреляции

    • 02 ноября 2017, 16:21
    • |
    • Karim
  • Еще
Написал на досуге по просьбе одного из участников смартлаба индикатор корреляции.
Индикатор простенький, считает коэффициент корреляции Пирсона
для двух выбранных инструментов на заданном таймфрейме.
Выкладываю исходный код. Может кому то пригодится.

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

Как запустить и настроить:


Архив исходника на QLua: https://yadi.sk/d/OxDvAekV3PLn2z
  • обсудить на форуме:
  • QUIK

Торговая система

    • 08 октября 2017, 13:18
    • |
    • Maks
  • Еще

Приветствую!

В данном посте распишу подробно свою торговую систему, без которой уровни которые я даю сильно теряют эффективность. Ссылку на данный пост я буду прикреплять в каждом своем посте с обзором дня, как дополнение к уровням и логике движения.

ТОЧКА ВХОДА

Вход всегда только от уровня. Цена уровня — это цена входа. Люфт может быть максимально 3-5 пунктов, в зависимости от ситуации, и при условии что все это помещается в размер стопа.

Предпочтительно работать от ключевых уровней или их спутников.

Классификация уровней
ключевые — это месячные, недельные, дневные и 4часовые уровни
остальные — 15мин уровни.
спутники — как правило это 15мин уровни, которые формируются сверху и снизу ключевых уровней, в связи с тем что, цена периодически пробивает этот ключевой уровень. И образуется так называемая
зона.
Торговая система



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

Справочник Lua для Quik

    • 09 сентября 2017, 22:26
    • |
    • Dzam
  • Еще

Справочник Lua для Quik

 
В статье речь пойдет о новом справочнике luaq.ru
У каждого разный подход к созданию роботов: одни заказывают у разработчиков, другие используют программы и строят алгоритмы из кубиков, третьи пишут сами использую языки программирования.


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

Пользуйтесь

План (А)

Когда на пятиминутном тайм фрейме менее 50-и пунктов то ставим лимитные заявки на покупку и на продажу
около 25% от депозита, на расстоянии 10 пунктов от текущей цены. Стоп лос ставим по 20 пунктов от лимитных заявок.
После того как сработала одна из лимитных заявок переносим встречную заявку (тейк профит) на 10 пунктов от цены
исполнения, ждем исполнения лоса или профита. Если профит то повторяем, если лос то переходим к плану (Б)


План (Б)

Ставим лимитные заявки в 20-и пунктах от текущей цены, на 50% от депозита, после того как сработала одна
из заявок переносим встречную заявку на 10 пунктов от цены исполнения. Если профит то повторяем план (Б) до признаков
узкого боковика, после этих признаков переходим к плану (А), если лос то переходим к плану (В).


План (В)

Ставим лимитные заявки по 40 пунктов от текущей цены на 100% от депозита, после исполнения одной из заявок
переносим встречную заявку на 10 пунктов от цены исполнения.Если профит повторяем до признака узкого боковика,
если и в третий раз сработал лос то ждем признаков узкого боковика и переходим к плану(А) и т.д. по кругу.


Признак узкого боковика:

Три прилипшие свечки к средней скользящий, moving average 8 периодов, на пяти минутном тайм фрейме.


Работает на фьючерсе доллар рубль.

Не работает в более широком временном тайм фрейме.

 


Таблица "Портфель" в QUIKе


    Представляю таблицу для портфельных инвестиций. В квике до сих пор такого нет. Цвет строки меняется если Прибыль%<>5%. Обновление каждые 5 сек.
Таблица "Портфель" в QUIKе

Для её создания необходимо:
1. Создать файл «tablePortfolio.txt» в папке «C:\QUIK\Scripts». Если папки нет, создать её.
2. Скопировать туда код скрипта
3. Сохранить, выбрав кодировку «ANSI», иначе вместо русских букв могут быть кракозябры.
4. Сменить расширение файла с ".txt" на ".lua"
5. Запустить скрипт командой Сервисы->Lua  скрипты->Добавить (выбрать файл tablePortfolio.lua) ->Запустить

Код скрипта:
IsRun = true
class_code="TQBR"

function main()
   -- Получает доступный id для создания
   t_id = AllocTable()   
   
   -- добавить столбцы
   AddColumn(t_id, 1, "Бумага",       true, QTABLE_STRING_TYPE, 20)
   AddColumn(t_id, 2, "Кол-во",       true, QTABLE_INT_TYPE,     7)
   AddColumn(t_id, 3, "Цена покупки", true, QTABLE_DOUBLE_TYPE, 14)
   AddColumn(t_id, 4, "Цена текущая", true, QTABLE_DOUBLE_TYPE,   14)
   AddColumn(t_id, 5, "Прибыль, р",   true, QTABLE_DOUBLE_TYPE,   14)
   AddColumn(t_id, 6, "Прибыль, %",   true, QTABLE_DOUBLE_TYPE, 14)
   t = CreateWindow(t_id)

   for iRow=1, getNumberOf("depo_limits")-1, 1 do
      rowInPortfolioTable = getItem("depo_limits", iRow) -- получить текущую строку из таблицы "Лимиты по бумагам"            
      qtyBoughtLots  = tonumber(rowInPortfolioTable.currentbal)         
      limitKind = rowInPortfolioTable.limit_kind          
      if qtyBoughtLots>0 and limitKind<1 then      
         InsertRow(t_id, iRow)-- добавить новую строку вниз таблицы   
      end
   end
   local rows, columns = GetTableSize (t_id)
   InsertRow(t_id, rows+1) -- добавить новую строку вниз таблицы для "Итого"
   
   SetWindowCaption(t_id, "Портфель: прибыли и убытки    © [email protected]") 

   -- исполнять цикл, пока пользователь не остановит скрипт или не закроет окно таблицы
   while IsRun do 
      if IsWindowClosed(t_id)==true then
         IsRun=false
      end

      local currentPrice=0
      local qtyBoughtLots=0
      local profitAbs = 0
      local profitPerc = 0
      local currentSecCode= ""
      local fullNameOfInstrument = ""
      local limitKind = 0
      local rowInPortfolioTable = {}    -- строка из таблицы "Лимиты по бумагам"
      local tableInstrument = {}    -- данные "Таблицы текущих торгов"
      local iRowInOutTable = 1
	  local totalInvest = 0
	  local totalPortfolio = 0
	  local totalProfit = 0
	  local totalPercent = 0

      for iRow=0, getNumberOf("depo_limits")-1, 1 do
         rowInPortfolioTable = getItem("depo_limits", iRow) -- получить текущую строку из таблицы "Лимиты по бумагам"         
         
         qtyBoughtLots  = tonumber(rowInPortfolioTable.currentbal)
         
         limitKind = rowInPortfolioTable.limit_kind 
         
         if qtyBoughtLots>0 and limitKind<1    then      -- если кол-во лотов >0 и тип лимита T0
            currentSecCode = rowInPortfolioTable.sec_code
            fullNameOfInstrument =  tostring(getParamEx(class_code, currentSecCode, "SHORTNAME").param_image or "0") --"LONGNAME"
            avgPrice       = tonumber(rowInPortfolioTable.awg_position_price)                  
            currentPrice = GetAskPrice(currentSecCode)   
            profitAbs = (currentPrice-avgPrice)*qtyBoughtLots      
            profitPerc    = 100*currentPrice/avgPrice   - 100
			
			totalInvest = totalInvest + avgPrice*qtyBoughtLots  
			totalPortfolio = totalPortfolio + currentPrice*qtyBoughtLots   
            
            SetCell(t_id, iRowInOutTable, 1, fullNameOfInstrument) -- "Бумага"
            SetCell(t_id, iRowInOutTable, 2, tostring(qtyBoughtLots)) -- "Кол-во"RemoveZero(tostring(qtyBoughtLots)))
            SetCell(t_id, iRowInOutTable, 3, tostring( math_round(avgPrice, 3) ))  -- tostring(avgPrice))   -- "Цена покупки"
            SetCell(t_id, iRowInOutTable, 4, RemoveZero(tostring(currentPrice)))   -- "Цена текущая"
            SetCell(t_id, iRowInOutTable, 5, tostring( math_round( profitAbs, 0)) ) -- "Прибыль, р"
            SetCell(t_id, iRowInOutTable, 6, tostring(math_round(profitPerc, 1)) .."%") -- "Прибыль, %"
            
            if profitPerc >5 then       -- окрашиваем
               ColourRowInGreen(iRowInOutTable)
            elseif profitPerc<-5 then 
               ColourRowInRed(iRowInOutTable)
            else 
               ColourRowInYellow(iRowInOutTable)
            end   
            iRowInOutTable = iRowInOutTable+1
         end
      end
      totalProfit = totalPortfolio - totalInvest 
      totalPercent   = 100*totalProfit/totalInvest  
	  SetCell(t_id, iRowInOutTable, 1, "Итого") 
      SetCell(t_id, iRowInOutTable, 3, tostring( math_round(totalInvest, 0) ))  
      SetCell(t_id, iRowInOutTable, 4, tostring( math_round(totalPortfolio, 0)))  
      SetCell(t_id, iRowInOutTable, 5, tostring( math_round( totalProfit, 0)) ) 
      SetCell(t_id, iRowInOutTable, 6, tostring(math_round(totalPercent, 1)) .."%") 
	  
	  if profitPerc >5 then       -- окрашиваем
               ColourRowInGreen(iRowInOutTable)
            elseif profitPerc<-5 then 
               ColourRowInRed(iRowInOutTable)
            else 
               ColourRowInYellow(iRowInOutTable)
            end   
            iRowInOutTable = iRowInOutTable+1
      sleep(5000) -- пауза 5 сек.
      end
   --message("script table portfolio finished")
end


function ColourRowInRed(num_row)
   SetColor(t_id, num_row, QTABLE_NO_INDEX, RGB(255,150,150), RGB(0,0,0), RGB(255,150,150), RGB(0,0,0))
end
function ColourRowInYellow(num_row)
   SetColor(t_id, num_row, QTABLE_NO_INDEX, RGB(255,255,200), RGB(0,0,0), RGB(255,255,200), RGB(0,0,0))
end
function ColourRowInGreen(num_row)
   SetColor(t_id, num_row, QTABLE_NO_INDEX, RGB(150,255,150), RGB(0,0,0), RGB(150,255,150), RGB(0,0,0))
end
function GetAskPrice(inp_Sec_Code )
   local ask = tostring(getParamEx(class_code, inp_Sec_Code, "OFFER").param_value or 0)
   return ask
end
-- Округляет число до указанной точности
function math_round (num, idp)
   local mult = 10^(idp or 0)
   return math.floor(num * mult + 0.5) / mult
end
-- удаление точки и нулей после нее
function RemoveZero(str)
   while (string.sub(str,-1) == "0" and str ~= "0") do
      str = string.sub(str,1,-2)
   end
   if (string.sub(str,-1) == ".") then 
      str = string.sub(str,1,-2)
   end   
   return str
end
function OnStop()
   DestroyTable(t_id)
   IsRun = false   
end
  • обсудить на форуме:
  • QUIK

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