Избранное трейдера Игорь В.
Сегодня и завтра последний день для того, чтобы уменьшить подоходный налог на ММВБ в этом году. Так как, в режиме Т+2, завтрашние сделки на фондовом рынке пройдут 29 декабря, то эти два дня (26 и 27 декабря) последняя возможность изменить свой подоходный за 2017 год. Сделки четверга, 28 декабря, пройдут уже 3 января и на подоходный налог этого года уже не повлияют.
Что можно сделать тем, у кого по итогам года прибыль? Закрыть убыточные позиции, хоть на несколько секунд. Вы зафиксируете убыток по сделке и уменьшите налогооблагаемую прибыль. Если вы ждёте по этим позициям прибыль и собираетесь держать их дальше, просто выкупите их сразу после продажи. Комиссией придётся пожертвовать. А вот прибыльные позиции сегодня лучше не фиксировать, чтобы не увеличивать прибыль. Если планируете их зафиксировать, отложите на четверг.
Те, у кого по итогам года получился солидный убыток, могут его уменьшить. Это даст возможность уменьшить налогооблагаемую прибыль в следующем году. Надо делать наоборот, закрывать сегодня прибыльные позиции и не трогать убыточные. Если эти позиции планируете держать дальше, выкупайте их после продажи. Что это даст? Фиксация прибыли уменьшает наш налогооблагаемый убыток, так как налог мы всё равно не платим, ни с большого убытка, ни с маленького. Зато в следующем году налогооблагаемая прибыль будет меньше, так как цена покупки акции будет более высокой.
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
Как запустить и настроить:Приветствую!
В данном посте распишу подробно свою торговую систему, без которой уровни которые я даю сильно теряют эффективность. Ссылку на данный пост я буду прикреплять в каждом своем посте с обзором дня, как дополнение к уровням и логике движения.
ТОЧКА ВХОДА
Вход всегда только от уровня. Цена уровня — это цена входа. Люфт может быть максимально 3-5 пунктов, в зависимости от ситуации, и при условии что все это помещается в размер стопа.
Предпочтительно работать от ключевых уровней или их спутников.
Классификация уровней
ключевые — это месячные, недельные, дневные и 4часовые уровни
остальные — 15мин уровни.
спутники — как правило это 15мин уровни, которые формируются сверху и снизу ключевых уровней, в связи с тем что, цена периодически пробивает этот ключевой уровень. И образуется так называемая
зона.


План (А)
Когда на пятиминутном тайм фрейме менее 50-и пунктов то ставим лимитные заявки на покупку и на продажу
около 25% от депозита, на расстоянии 10 пунктов от текущей цены. Стоп лос ставим по 20 пунктов от лимитных заявок.
После того как сработала одна из лимитных заявок переносим встречную заявку (тейк профит) на 10 пунктов от цены
исполнения, ждем исполнения лоса или профита. Если профит то повторяем, если лос то переходим к плану (Б)
План (Б)
Ставим лимитные заявки в 20-и пунктах от текущей цены, на 50% от депозита, после того как сработала одна
из заявок переносим встречную заявку на 10 пунктов от цены исполнения. Если профит то повторяем план (Б) до признаков
узкого боковика, после этих признаков переходим к плану (А), если лос то переходим к плану (В).
План (В)
Ставим лимитные заявки по 40 пунктов от текущей цены на 100% от депозита, после исполнения одной из заявок
переносим встречную заявку на 10 пунктов от цены исполнения.Если профит повторяем до признака узкого боковика,
если и в третий раз сработал лос то ждем признаков узкого боковика и переходим к плану(А) и т.д. по кругу.
Признак узкого боковика:
Три прилипшие свечки к средней скользящий, moving average 8 периодов, на пяти минутном тайм фрейме.
Работает на фьючерсе доллар рубль.
Не работает в более широком временном тайм фрейме.

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, "Портфель: прибыли и убытки © ramirzaev@mail.ru")
-- исполнять цикл, пока пользователь не остановит скрипт или не закроет окно таблицы
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В рамках рассматриваемого сценария, цена по золоту выполнила минимальные условия для завершения импульса вверх, и хотя рост все еще может быть продолжен, все же можно начинать готовить торговый план.
Ниже будут приведены схематическое построение торгового плана, и размещение ордеров.
В EWP торговые планы не имеют каких-либо мудреных изысканий, и они в принципе очень простые. Качество построение торгового плана зависит не от совокупности, каких либо сигналов, которые дают индикаторы, качество торгового плана зависит от качества проведенного анализа структуры движения цены.

Схема начала построения торгового плана будет выглядеть, так как показано на картинке ниже из книги: Wayne Gorman & Jeffrey Kennedy — Visual Guide to Elliott Wave Trading 2013.c

В EWP основным паттерном является пяти волновая действующая модель. Таких, действующих моделей всего две, это импульс и диагональ. Ранее уже было описана модель диагональ, и в ближайшее время заметка о диагоналях будет продолжена. В данный момент речь пойдет об импульсах.
Импульс – это наиболее распространенный вид действующей волны, и так как импульс является основным паттерном в EWP то, все, абсолютно все модели как начинаются с импульсов так ими и заканчиваются. 
Существует всего несколько простых правил интерпретации ценового поведения внутри импульсов. Правило потому и называются правилом, что не допускает исключений и выполняется всегда.
