Избранное трейдера KSN

по

Мой сценарий следующего мирового кризиса(апдейт октябрь 2021)

    • 06 октября 2021, 14:10
    • |
    • Nickma
  • Еще
Ситуация в мире идет строго по плану — возле сентябрьского ФРС случилась недолгая и несерьезная коррекция, после которой российские активы продолжили бурный рост. Газпром также по плану перебил истхай, хотя в нынешних условиях и 400р по нему — неприлично дешево.
Этих супербенефициаров несложно найти — Русагро, Мечел, НКНХ, Русал/ЭН+, Газпром, все нефтяные ВИНК, золотодобытчики(особенно самый дешевый к капиталу Петропавловск), дешевые тарифные компании внутреннего рынка с большими дивидендами(энергосбыты, сети). Есть и самый простой вариант — индексный фонд РТС, на фоне укрепления рубля и большой доли сырьевиков — он будет одним из первых по доходности среди страновых индексов.

Бенефициары продолжили переоценку — в прошлый раз я писал о росте Русагро, Мечела, НКНХ — теперь по списку пошел Русал/ЭН+ и нефтегаз, выросший широким фронтом за месяц на 10-30%. В нем тоже переоценка только началась. (С НКНХ нужно быть осторожней — реорганизация несет большие риски).

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

Индикатор Загзаг для Quik'а - лучший демонстратор тренда (и волн Эллиота). Даром

Всем известен старинный индикатор Пробоя. Этот индикатор для Quik'а найдёте на smart-lab.ru/blog/704033.php
Когда-то по нему торговали, покупая на пробое вверх максимума предыдущих N баров и продавая на пробое минимума. Похоже, сегодня эта стратегия вышла из моды.

Возможен другой подход к отслеживанию экстремумов. Регистрировать пробой не на фиксированном числе баров (по ширине графика), но на фиксированном уходе цены от предыдущего экстремума (по высоте графика). Это столь же известный индикатор Зигзаг. Минимальный уход цены от предыдущего экстремума — размах зигзага, необходимый для смены тренда, я именую силой тренда.

Мало кто пытался строить торговую стратегию на основе Зигзага. Самое ходовое возражение против Зигзага — он не предсказывает тренд. Абсурд. Никто и ничто не предсказывает будущего!
Более того. Зигзаг даёт самое объективное и наглядное представление о чередовании трендов заданной силы.

Я некоторое время назад уже предлагал вниманию публики индикатор зигзага для

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

Пополнение карты Сбера с карты ВТБ с наименьшими затратами. Полная инструкция.

Пополнение карты Сбера с карты ВТБ с наименьшими затратами. Полная инструкция.

 

Итак, друзья мои, сегодня я намереваюсь причинить пользу тем, кто любит пользоваться банковскими услугами, не вставая с дивана.

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

 



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

Мой сценарий следующего мирового кризиса(апдейт)

    • 18 июня 2021, 08:07
    • |
    • Nickma
  • Еще

Прошло 1,5 года с момента прошлого поста и мир действительно пошел по данному сценарию.

Что уже реализовалось:
— валюты-убежища активно обесцениваются инфляцией и отрицательными ставками.
— сырье раллирует, золото в том числе.
— держатели кеша и надежных облигаций западных стран в минусе, не говоря об упущенной выгоде.
— шорты западных и российских индексов не были выгодными.

Часть прогноза еще не реализовалась, но и не отменилась:
— нефть должна сильно подорожать. Вдобавок к инфляции доллара добавились снижение инвестиций в отрасль и прошедший кризис перепроизводства.
— рубль упал, РТС несильно вырос, однако это все равно вопрос времени — капитал компаний вырос, прибыль сильно выросла, доллар обесценился — а цена в долларах та же. Такой дисбаланс не может долго сохранятся, пружина сжимается и итог может быть только один — мощное ралли в РТС. Рубль вероятно тоже укрепится к доллару, как тот уже упал ко всем сырьевым валютам на доковидные уровни. Нужно сказать спасибо Байдену и Трампу, которые запугиванием санкциями держат нашу валюту дешевле ее равновесной ценности, чем делает российский экспорт сверхрентабельным и повышает конкурентоспособность наших производителей. Этот процесс с некоторым лагом непременно проявится в росте как рынка, так и экономики.
— в Китае процесс замедления пошел — рост юаня и кризис перевозок сильно подняли в цене стоимость его товаров, а рост сырья повысил издержки — его конкурентоспособность падает. Поскольку с финансами в Китае все довольно плохо — в банковской системе дыра и валютный курс несвободный — когда-нибудь произойдет крупная девальвация. Но такие масштабные процессы могут очень долго протекать в скрытом виде и проявляются обычно тогда, когда все забудут с чего все началось.
— Американские индексы выросли, однако рост этот не был обеспечен сопоставимым ростом качества его компаний, а был вызван монетарными методами. Финансовые власти США(как и многие люди в мире) уверовали в незыблемость доллара и что любое безумие ему сойдет с рук — печататают деньги даже на такие противоречащие здравому смыслу вещи, как устранение естественных коррекций безумных хаев рынка и стимулирование граждан не работать большими пособиями. За все это придется заплатить — а платить добровольно(сильно повышать ставку, рубить все пузыри, увеличивать налоги и резать социалку) они конечно не захотят, поэтому все это принудительно сделает инфляция.



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

Моя история или как правильно выводить крипту если она есть.

Волею судеб, досталось мне как-то немного майнеров. Был один хороший человек, который втарил асиков на пике их стоимости, в 2017-18г.  Хоть я и предупреждал его — «если даже ты в эту тему полез — бечь оттуда надо немедля!» — но кто слушает голос разума, да еще знакомого. В итоге, крипта рухнула, чел не отбил даже 20% стоимости, асики остались лежать на пыльном складе. К времени начала роста крипты, у части майнеров хешрейта как раз хватало, чтобы отбить пожираемое электричество 1:1, а цена самого устройства снизилась до 5.000р.
И он мне их отдал на запчасти.
Не знаю зачем собственно, но «там такие крутые вентиляторы! Уууу! по 120к рублей за пару вышли, остальное в мусор». Забегая вперед — когда крипта пошла в рост, эту часть майнеров очень быстро расхватали на сайте объявлений будущие теоретические миллионеры. К сожалению заработок даже с нынешним ростом крипты на этих моделях в районе 5-10$ в месяц, но парни не теряют надежду.

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

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

Разбираемся с налогами: большой и полезный пост

ИСТОЧНИК

👨🏻‍💼 Сегодня хочу остановиться над системой налогообложения доходов, полученных от инвестирования.

«Лучший способ рассказать детям о налогах — съесть 13% от их мороженого» ©


По большому счёту, ничего сложного в налогах нет, но почему-то большинство начинающих инвесторов этой теме не уделяют должного внимания, а в некоторых случаях знания в этой сфере очень поверхностные, хотя есть особенности, которые могут значительно сократить издержки. Об этих особенностях я и предлагаю поговорить более подробно.

Налогообложение буду рассматривать с точки зрения обычного Гражданина РФ (резидента), совершающего сделки с помощью брокера на бирже. С точки зрения нерезидентов смысл тот же, только ставки, как правило, выше.

Разбираемся с налогами: большой и полезный пост

Итак, в нашей стране в обычной ситуации доход от инвестиций облагается налогом на доходы физических лиц в размере



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

Автологин для квика на javascript

Надоело логиниться в квик каждый день по 10 раз, всё время за логином-паролем лазить в файл и копипастить. Сделал скрипт, к-й это автоматизирует. Работает на javascript, так что от версии Windows зависеть не должно.

Сам скрипт кладётся в файл типа C:\Util\Js\Q.js или куда угодно, только не у всех на виду. На этот скрипт делается ярлык, он кладётся на рабочий стол куда-то в угол, и ему прописывается горячая клавиша типа Ctrl-Alt-X или любая другая буква. После этого вы запускаете квик, появляется окно логина, нажимаете Ctrl-Alt-X и через полсекунды оно срабатывает. Важно, что ярлык должен быть на рабочем столе, иначе горячая клавиша не работает. 

Вообще вводить данные в другую программу можно двумя способами: copy&paste и эмуляция клавиш. Я в данном случае пошёл по второму пути, хотя и первый тоже реализуем и даже чем-то лучше, т.к. там не надо парится с языком. Из-за этого, если вы хотите использовать этот скрипт, нужно проверить ряд моментов и при необходимости внести исправления. 

⦁ В варианте, к-й я выкладываю, логин/пароль должны быть прописаны прямо в скрипте, но можно и читать из файла. У меня дома рабочий вариант вообще ищет их в rtf-файле где много всяких данных. Если логин/пароль положить во внешний файл, то их можно конечно и закодировать. 
⦁ Чтобы отработало правильно, надо чтобы текущий язык ввода (по сути язык ввода по умолчанию в системе) в квике был русский. Если это не так, то вначале надо поменять bEngSystem=true
⦁ У меня логин русский, а пароль английский, так что между ними производится переключение клавиатуры. Если у вас что угодно из этого не так, надо в нужных местах убрать или добавить переменную LangSwitch, к-я содержит клавиши «Alt-Shift». Если у вас опять же язык переключается по-другому, там надо прописать другие клавиши.
⦁ У меня вводится и логин и пароль. Если у вас вводится только пароль, то поменять тоже нужно и не сложно. 

В общем, можно было бы написать более универсальную версию, чтобы определяеть, когда надо переключать языки автоматом, но мне не нужно, а кому надо разберутся. Или же можно переписать через copy&paste. Делать полностью автоматизированный логин, когда вообще ничего нажимать не нужно я не хочу, потому что тогда любой, кто получит доступ к вашему компьютеру сможет получить доступ и к вашим деньгам, просто кликнув на квике. Так хоть комбинацию клавиш знать надо. 

bEngSystem=false; //язык системы по умолчанию
LangSwitch="%+!";

WshShell=WScript.CreateObject("WScript.Shell");
InitKeys();
KeysSeq=GetData();
if (KeysSeq) EnterData(KeysSeq);

//------------------------------------------------------------------------

function GetData(){
//(Возможно) читаем данные из файла и преобразуем в последовательность клавиш
//"!" означает паузу для специальных клавиш, к-е требуют время обработки
var DataFN, oStream, Data, Pos1, Pos2, Line;

if (0){ //данные в файле
	DataFN='C:/...';
	FSO=new ActiveXObject("Scripting.FileSystemObject"); 
	oStream=FSO.OpenTextFile(DataFN, 1); Line=oStream.ReadAll(); oStream.Close();
	}
else Line='имя:password';

//Tab должен быть и вначале, потому что при фокусировке квика текущее поле - список серверов
Line="{Tab}!"+Line.replace(/:/g, "{Tab}!"+LangSwitch); 
//Переключение языка в самом начале если логин русский
if (bEngSystem) Line=LangSwitch+Line; 
//конвертация русских символов
Line=Line.replace(/[А-Яа-я]/g, RusCB);

return Line;
}

function EnterData(KeysSeq){
var ret;

WScript.Sleep(300); //Пауза позволяет убрать руки от клавиатуры до того, как скрипт начал работать

ret=WshShell.AppActivate("Идентификация пользователя"); if (ret==0) return;
WScript.Sleep(100); 

aSeq=KeysSeq.split('!');
for(var i=0; i<aSeq.length; i++){
	Seq=aSeq[i]; 
	if (Seq!=''){
		WshShell.SendKeys(Seq); WScript.Sleep(100); 
		}
	}

WshShell.SendKeys("{Enter}");
//WshShell.SendKeys("%+"); WScript.Sleep(100); //switch to Russian
//WshShell.SendKeys("{Tab}"); WScript.Sleep(100); 
//WshShell.SendKeys("^V"); WScript.Sleep(100); //paste
}

function RusCB(s){
var n, ch, i;

if (s.length==1){
	ch=s;
	}
else{ //rtf
	//код символа в Ansi
	s=s.substr(2); n=parseInt(s, 16); ch=String.fromCharCode(n);
	}

//Преобразовать в Utf и найти в русских клавишах
i=RusKeys.indexOf(Ansi2Utf(ch));
//Найти соотв. латинскую клавишу
return LatKeys.charAt(i);
}

//------------------------------------------------------------------------

function Ansi2UtfN(Code){
if (Code>=192 && Code<=255) Code+=848;
else if (Code==168) Code=1025; else if (Code==184) Code=1105;
return String.fromCharCode(Code);
}

function Utf2AnsiN(Code){
if (Code>=1040 && Code<=1103) Code-=848;
else if (Code==1025) Code=168; else if (Code==1105) Code=184;
return String.fromCharCode(Code);
}

function Ansi2Utf(Str, bRev){
var Buf='', Ch, Res='', c=0, L, n, f;

L=Str.length; f=(!bRev ? Ansi2UtfN : Utf2AnsiN);
for(n=0; n<L; n++){
	Ch=Str.charCodeAt(n); Buf+=f(Ch); c++;
	if (c>=100){Res+=Buf; Buf=''; c=0;}
	}
return Res+Buf;
}

//------------------------------------------------------------------------

function alert(S){WScript.Echo(S);}

function InitKeys(){
//Проблема в том, что влияет текущий язык в той программе!
//Можно нажимать только английские клавиши. Если надо нажимать русские, надо вычислить какие им соответствуют английские
RusKeys="йцукенгшщзхъфывапролджэячсмитьбю"; LatKeys="qwertyuiop[]asdfghjkl;'zxcvbnm,.";
RusKeys=RusKeys+RusKeys.toUpperCase(); LatKeys=LatKeys+LatKeys.toUpperCase();
}

Есть другие решения: Автологин для Quik 8 x64.
  • обсудить на форуме:
  • QUIK

Заполнение 3 НДФЛ при наличии сальдированных убытков

    • 08 марта 2021, 00:39
    • |
    • OUBee
  • Еще

Пришло время сделать 3-НДФЛ, чтобы получить  социальный (за медицинские услуги) и  инвестиционный вычеты, заплатить дивиденды, полученные от иностранных эмитентов (W8-ben подписана).

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

Что найдено

В личном кабинете при заполнении 3-НДФЛ ждет сюрприз от ВТБ и ФНС:

  • от ФНС — задвоение всех данных по доходам за 2020 год,
  • от ВТБ странная 2-НДФЛ, которая содержит такие данные, что по мнению ФНС надо еще внести в казну значительное количество тысяч (у меня получалось в разных вариантах от 40 до 125 тысяч). Все потому, что часть вычетов на приобретение бумаг и вычетов по убыткам была передана не принимаемым со стороны ФНС образом.

ВТБ действует строго по поговорке «От пирожка, предложенного москвичом, нельзя отказываться, потому что обязательно запихнет и не факт, что в рот» и заталкивает в личный кабинет ФНС декларацию.
ФНС ее отобразить нормально не может, потому что она содержит данные поперек логики применения вычетов, и теряет часть данных о вычетах, что  приводит к необходимости ввести данных о доходах в 3-НДФЛ заново.



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

Данные из QUIK в Python. Построение Дельта графика.

Данные из QUIK в Python. Построение Дельта графика.Построение нестандартных графиков в Python при помощи библиотеки finplot.
Можно строить почти любые нестандартные графики: Range, Renco, Delta.
В качестве примера скрипт для построения Дельта графика.
График строиться с момента запуска по поступающим данным из таблицы обезличенных сделок.
Для получения данных из КВИКа используется PythonServer Евгения Шибаева (огромное спасибо автору!!!)

Тапками не кидайтесь, программировать только учусь.

# В КВИКе запускаем луа-скрипт QuikLuaPython.lua
import socket
import threading
from datetime import datetime, timezone
import pandas as pd
import finplot as fplt

fplt.display_timezone = timezone.utc


class DeltaBar():
    def __init__(self):
        self.df = pd.DataFrame(columns='date_time open high low close delta delta_time_sec'.split(' '))
        self.df.loc[len(self.df)] = [0, 0, 0, 0, 0, 0, 0]

    def parser(self, parse):
        if parse[0] == '1' and parse[1] == 'RIH1':
            if abs(self.df.iloc[len(self.df) - 1]['delta']) >= 500:
                self.df.loc[len(self.df)] = [0, 0, 0, 0, 0, 0, 0]  # Добавляем строку в DF

            self.df.iloc[len(self.df) - 1]['close'] = float(parse[4])  # Записываем последнюю цену как цену close бара

            if self.df.iloc[len(self.df) - 1]['date_time'] == 0:
                self.df.iloc[len(self.df) - 1]['date_time'] = \
                    datetime.strptime(f'{parse[7]} {parse[8][0:-1]}', "%d.%m.%Y %H:%M:%S.%f").replace(microsecond=0)

            if self.df.iloc[len(self.df) - 1]['open'] == 0:
                self.df.iloc[len(self.df) - 1]['open'] = float(parse[4])

            if float(parse[4]) > self.df.iloc[len(self.df) - 1]['high']:
                self.df.iloc[len(self.df) - 1]['high'] = float(parse[4])

            if (float(parse[4]) < self.df.iloc[len(self.df) - 1]['low']) or \
                    (self.df.iloc[len(self.df) - 1]['low'] == 0):
                self.df.iloc[len(self.df) - 1]['low'] = float(parse[4])

            if parse[5] == '1026':
                self.df.iloc[len(self.df) - 1]['delta'] += float(parse[6])

            if parse[5] == '1025':
                self.df.iloc[len(self.df) - 1]['delta'] -= float(parse[6])

            self.df.iloc[len(self.df) - 1]['delta_time_sec'] = \
                datetime.strptime(f'{parse[7]} {parse[8][0:-1]}', "%d.%m.%Y %H:%M:%S.%f") - \
                self.df.iloc[len(self.df) - 1]['date_time']
            self.df.iloc[len(self.df) - 1]['delta_time_sec'] = self.df.iloc[len(self.df) - 1]['delta_time_sec'].seconds


def service():
    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    sock.bind(('127.0.0.1', 3587))  # Хост-этот компьютер, порт - 3587
    while True:
        res = sock.recv(2048).decode('utf-8')
        if res == '<qstp>\n':  # строка приходит от клиента при остановке луа-скрипта в КВИКе
            break
        else:
            delta_bar.parser(res.split(' '))  # Здесь вызываете свой парсер. Для примера функция: parser (parse)
    sock.close()


def update():

    df = delta_bar.df
    # Меняем индекс и делаем его типом datetime
    df = df.set_index(pd.to_datetime(df['date_time'], format='%Y-%m-%d %H:%M:%S'))
    # print(delta_bar.df)

    # pick columns for our three data sources: candlesticks and TD
    candlesticks = df['open close high low'.split()]
    volumes = df['open close delta_time_sec'.split()]
    if not plots:
        # first time we create the plots
        global ax
        plots.append(fplt.candlestick_ochl(candlesticks))
        plots.append(fplt.volume_ocv(volumes, ax=ax.overlay()))
    else:
        # every time after we just update the data sources on each plot
        plots[0].update_data(candlesticks)
        plots[1].update_data(volumes)


if __name__ == '__main__':
    delta_bar = DeltaBar()
    # Запускаем сервер в своем потоке
    t = threading.Thread(name='service', target=service)
    t.start()

    plots = []
    ax = fplt.create_plot('RIH1', init_zoom_periods=100, maximize=False)
    update()
    fplt.timer_callback(update, 2.0)  # update (using synchronous rest call) every N seconds

    fplt.show()
  • обсудить на форуме:
  • QUIK

Как я декларацию 3-НДФЛ за 2020 год подавал: вычет ИИС-А, 241 дивидендная выплата от иностранных компаний

Дисклеймер:
Здесь описан МОЙ ОПЫТ. Это не инструкция к действию для всех и каждого. Тот способ, которым я отчитываюсь за дивиденды иностранных компаний, можно использовать на свой страх и риск: ваш налоговый инспектор может отказать в таком способе подачи и попросить вас вписать каждую дивидендную выплату отдельной строкой в 3-НДФЛ. Если у вас мало выплат за год (менее 40), рекомендую вписывать их отдельной строкой! Как это делается, я рассказывал в прошлом году (ЧИТАТЬ или СМОТРЕТЬ).

 

Моя проблема некоторым постоянным читателям известна: особенность стратегии (покупаю 100 американских компаний по отдельности) имеет очевидные минусы, один из которых — огромное количество мелких дивидендных выплат, почти каждый день!

По дивидендам от российских компаний (их порядка 50-60 поступило) за меня отчитывается брокер. Это прекрасно!

По дивидендам от иностранных компаний я отчитываюсь сам. Я напомню, что штраф за неподачу этих данных составляет всего 1000₽. Здесь скорее вопрос гражданской ответственности: я требую соблюдения законов и моих прав от государства. Я отвечаю тем же.



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

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