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

по

Автоматизация сигналов из TradingView за 2 минуты. Websockets Python

from websocket import create_connection
import json
import random
import string
import re
import pandas as pd
import csv
from datetime import datetime
from time import sleep

def filter_raw_message(text):
    try:
        found = re.search('"m":"(.+?)",', text).group(1)
        found2 = re.search('"p":(.+?"}"])}', text).group(1)
        print(found)
        print(found2)
        return found1, found2
    except AttributeError:
        print("error")
    

def generateSession():
    stringLength=12
    letters = string.ascii_lowercase
    random_string= ''.join(random.choice(letters) for i in range(stringLength))
    return "qs_" +random_string

def generateChartSession():
    stringLength=12
    letters = string.ascii_lowercase
    random_string= ''.join(random.choice(letters) for i in range(stringLength))
    return "cs_" +random_string

def prependHeader(st):
    return "~m~" + str(len(st)) + "~m~" + st

def constructMessage(func, paramList):
    #json_mylist = json.dumps(mylist, separators=(',', ':'))
    return json.dumps({
        "m":func,
        "p":paramList
        }, separators=(',', ':'))

def createMessage(func, paramList):
    return prependHeader(constructMessage(func, paramList))

def sendRawMessage(ws, message):
    ws.send(prependHeader(message))

def sendMessage(ws, func, args):
    ws.send(createMessage(func, args))

def generate_csv(a):
    out= re.search('"s":\[(.+?)\}\]', a).group(1)
    x=out.split(',{\"')
    
    with open('data_file.csv', mode='w', newline='') as data_file:
        employee_writer = csv.writer(data_file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
    
        employee_writer.writerow(['index', 'date', 'open', 'high', 'low', 'close', 'volume'])
        
        for xi in x:
            xi= re.split('\[|:|,|\]', xi)
            print(xi)
            ind= int(xi[1])
            ts= datetime.fromtimestamp(float(xi[4])).strftime("%Y/%m/%d, %H:%M:%S")
            employee_writer.writerow([ind, ts, float(xi[5]), float(xi[6]), float(xi[7]), float(xi[8]), float(xi[9])])
            


# Initialize the headers needed for the websocket connection
headers = json.dumps({
    # 'Connection': 'upgrade',
    # 'Host': 'data.tradingview.com',
    'Origin': 'https://data.tradingview.com'
    # 'Cache-Control': 'no-cache',
    # 'Upgrade': 'websocket',
    # 'Sec-WebSocket-Extensions': 'permessage-deflate; client_max_window_bits',
    # 'Sec-WebSocket-Key': '2C08Ri6FwFQw2p4198F/TA==',
    # 'Sec-WebSocket-Version': '13',
    # 'User-Agent': 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36 Edg/83.0.478.56',
    # 'Pragma': 'no-cache',
    # 'Upgrade': 'websocket'
})

    
# Then create a connection to the tunnel
ws = create_connection(
    'wss://data.tradingview.com/socket.io/websocket',headers=headers)

session= generateSession()
print("session generated {}".format(session))

chart_session= generateChartSession()
print("chart_session generated {}".format(chart_session))

# Then send a message through the tunnel 
sendMessage(ws, "set_auth_token", ["unauthorized_user_token"])
sendMessage(ws, "chart_create_session", [chart_session, ""])
sendMessage(ws, "quote_create_session", [session])
sendMessage(ws,"quote_set_fields", [session,"ch","chp","current_session","description","local_description","language","exchange","fractional","is_tradable","lp","lp_time","minmov","minmove2","original_name","pricescale","pro_name","short_name","type","update_mode","volume","currency_code","rchp","rtc"])
sendMessage(ws, "quote_add_symbols",[session, "BINANCE:BTCUSDT", {"flags":['force_permission']}])

sendMessage(ws, "resolve_symbol", [chart_session, "symbol_1","={\"symbol\":\"BINANCE:BTCUSDT\",\"adjustment\":\"splits\"}"])
sendMessage(ws, "create_series", [chart_session,"s1","s1","symbol_1","1",300])

sendMessage(ws, "quote_fast_symbols", [session,"BINANCE:BTCUSDT"])

sendMessage(ws, "create_study", [chart_session,"st1","st1","s1","Volume@tv-basicstudies-118",{"length":20,"col_prev_close":"false"}])
sendMessage(ws, "quote_hibernate_all", [session])

#st='~m~140~m~{"m":"resolve_symbol","p":}'
#p1, p2 = filter_raw_message(st)
#sendMessage(ws, "resolve_symbol", [chart_session,"symbol_1","={\"symbol\":\"BINANCE:BTCUSDT\",\"adjustment\":\"splits\",\"session\":\"extended\"}"])
#sendMessage(ws, "create_series", [chart_session, "s1", "s1", "symbol_1", "1", 2])
#sendMessage(ws, "create_study", [chart_session,"st4","st1","s1","ESD@tv-scripting-101!",{"text":"BNEhyMp2zcJFvntl+CdKjA==_DkJH8pNTUOoUT2BnMT6NHSuLIuKni9D9SDMm1UOm/vLtzAhPVypsvWlzDDenSfeyoFHLhX7G61HDlNHwqt/czTEwncKBDNi1b3fj26V54CkMKtrI21tXW7OQD/OSYxxd6SzPtFwiCVAoPbF2Y1lBIg/YE9nGDkr6jeDdPwF0d2bC+yN8lhBm03WYMOyrr6wFST+P/38BoSeZvMXI1Xfw84rnntV9+MDVxV8L19OE/0K/NBRvYpxgWMGCqH79/sHMrCsF6uOpIIgF8bEVQFGBKDSxbNa0nc+npqK5vPdHwvQuy5XuMnGIqsjR4sIMml2lJGi/XqzfU/L9Wj9xfuNNB2ty5PhxgzWiJU1Z1JTzsDsth2PyP29q8a91MQrmpZ9GwHnJdLjbzUv3vbOm9R4/u9K2lwhcBrqrLsj/VfVWMSBP","pineId":"TV_SPLITS","pineVersion":"8.0"}])


# Printing all the result
a=""
while True:
    try:
        sleep(1)
        result = ws.recv()
        pattern = re.compile("~m~\d+~m~~h~\d+$")
        if pattern.match(result):
            ws.recv()
            ws.send(result)
            print("\n\n\n hhhhhhhhhhhhhhhhhhhhhh "+ str(result) + "\n\n")
        print(result)
        a=a+result+"\n"
    except Exception as e:
        print(e)
        break
    
generate_csv(a)
'https://github.com/rushic24/tradingview-scraper'

Налоговый лайфхак или как сальдировать прибыли и убытки у разных брокеров

Друзья, 2020-й торговый год подошел к концу и хочу напомнить вам об одном маленьком лайфхаке, о котором многие не знают или забывают!

Прибыли и убытки у разных брокеров можно сальдировать и вернуть излишне уплаченный налог у прибыльного брокера.

В двух словах как это сделать?

1) Взять справку 2 НДФЛ у прибыльного брокера, где отражена сумма прибыли и уплаченного за вас налога в 2020 году.

2) Взять справку об убытках у убыточного брокера, где отражена сумма вашего убытка за 2020 год.

3) На основании двух этих справок заполнить в личном кабинете налоговой форму 3-НДФЛ.

4) Ждать возврата излишне уплаченного налога на свой счет.

Всем добра! Не теряйте деньги!

t.me/zhukovfinance

instagram.com/azhukov77

tinkoff.ru/invest/social/profile/Zhukovfinance

zhukovfinance.ru


Ответ на «Народные» ОФЗ-н – безрисковая «парковка» денег.

    • 13 января 2021, 14:26
    • |
    • хм
      Популярный автор
  • Еще
Почитал статью Андрея Хохрина. В которой сделан вывод

Сравнивая ОФЗ-н с другими вариантами максимально безрисковой “парковки” денег, сейчас сложно найти более удачный для этого инструмент. Нулевой рыночный риск заметно выделяет его от ОФЗ, а отсутствие налогообложения и более высокие ставки — от вкладов.

Если смотреть более широко, то отсутствие риска просадки цены будет хорошо смотреться в моменты серьезной рыночной волатильности, когда все остальные бумаги, в том числе ОФЗ, будут падать в цене.



В целом все верно описано, но почему то «эксперт» забыл о минусах народных ОФЗ, которые кардинально отличают их от вкладов и ОФЗ в доходности.

Какое то время я занимался закупкой этого инструмента через сбер брокер, в итоге отказался, т.к эффективные доходности по сравнению с вкладами и биржевыми ОФЗ ниже. 


1. По народным ОФЗ нельзя сделать налоговый вычет через ИИС, в отличие от вкладов (по которым можно сделать вычет на взнос по ИИС на 52 тыс руб в год), что дает минус к доходности порядка 1%.

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

Неожиданная комиссия при включенной единой денежной позиции (ЕДП/ЕБС)

Всем привет.

Хочу рассказать как нарвался комиссию, которую не ожидал при работе в режиме единой денежной позиции (ЕДП), у некоторых брокеров это еще называется единый брокерский счет (ЕБС). Сразу хочу поблагодарить всех кто помог разобраться в этом вопросе в моем прошлом посте на эту тему: https://smart-lab.ru/blog/669396.php

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

То есть если вы раньше например держали на срочке 1млн рублей под торговлю фьючерсом, то сразу возникает идея — включить  ЕДП и например на 900 тыс из этого миллиона купить ОФЗ или еще каких-то интересных вам бумаг. А для торговли фьючерсом оставить под вариационную маржу небольшую сумму (100тыс). Таким образом деньги не будут лежать без дела, будут приносить какой-то доход, будучи вложенными в какие-то бумаги и в то же время служить гарантийным обеспечением под фьючерсные позиции.

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

Наш рынок начала января напомнил мне "лихие" 90-е

    • 12 января 2021, 12:23
    • |
    • А. Г.
      Проверенный аккаунт
  • Еще
Когда трейдеры «крупняка» (Тройка, Реник, Ринако, Никойл и т. д.) созванивались с утра, выясняли нет ли у кого заказов от нерезов, и если не было, то договаривались об «игре» внутри дня  на РАО ЕЭС либо «вверх-вниз-вверх-вниз», либо «вниз-вверх-вниз-вверх».

Самое плохое, что по утренней динамике не было понятно — это «игра» или вниз, потому что пришел заказ на покупку (тогда днем было «вниз-вверх-вверх»), а вверх, потому что пришел заказ на продажу (тогда было «вверх-вниз-вниз»).

Мы тогда еще устраивали «проверку»: звонили в Тройку или Реник и если они соглашались на расчеты в рублях, то чаще всего это был заказ, а если отказывали на основании заявки «только доллары» (обычно они такие ставили в «стакан» классической РТС),  то, вероятней всего, это «игра».

Самая простая стратегия торговли

    • 22 декабря 2020, 12:02
    • |
    • Bishop
  • Еще
Самая простая стратегия торговли

Возьмите любой тикер и проведите несколько горизонтальных линий на графике.

Если вы обратите внимание, вокруг этих уровней всегда наблюдается плотное движение цены вверх и вниз.

Стратегия заключается в том, чтобы шортить инструмент ниже такого уровня и лонговать выше.

При этом абсолютно НЕВАЖНА точность установки уровня, всегда будет движение цены около него.

В данном аспекте уровень выступает просто ориентиром.

Одновременно можно работать с десятками ликвидных тикеров на доступных в торговом терминале биржах.

У меня для этих целей написан примитивный стабильный робот, который берёт на себя всю рутину по «переворотам» позиций.

На старте доходность портфеля традиционно крутится около нуля, потому что рынок некоторое время «гуляет» вокруг выбранных уровней и в первые дни совершается значительное количество переворотов позиций.

С течением времени цены всё дальше уходят от уровней вверх или вниз, поэтому резко падает количество сделок и начинает расти доходность.

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

Классификация сделок в торговых системах 2 (пример).

    • 17 декабря 2020, 21:04
    • |
    • 3Qu
  • Еще
Был у меня топик  "Классификация сделок в торговых системах" — в общем, не зашел. Но некоторые плюсанули, вот, для некоторых и напишу пример конкретного применения. Рекомендую прочитать предыдущий, иначе можете не понять этот топик.
К счастью, у меня оказался рояль в кустах — вялотекущий проект системы прогнозирования котировок, вычисляющей прогноз изменения цены на интервале Т по значению и состоянию цены в момент t — dС(t+Т). Ну, и общая формула прогнозирующей системы:
                              dC(t+T) = C(t+T) — C(t),
где C(t) — цена в момент t.
График теста системы я показывал в комментариях к предыдущему топику вот он:

Классификация сделок в торговых системах 2 (пример).
По Х (Predict)  — прогноз изменение цены, по У (Real) — реальное изменение цены через время Т. Не обращайте внимание на значения осей, это не сами изменения цены, это нормированные к диапазону системы значения изменений цен.

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

Система Каналья. Лечит неврозы, хандру и другие болезни, вызванные фондовым рынком. Идеальная система для новичков.

Цель данной статьи, показать, что активно-пассивное инвестирование с разумным подходом имеет место быть. Данный метод идеально подходит новичкам, так как  снимает психологическое давление от необходимости принятия решения, постоянно мониторить рынок, читать новости и тд. Не верьте тому кто говорит, что он не переживает относительно убытков, скорее всего он переживает их в два раза сильнее. 
Система Каналья. Лечит неврозы, хандру и другие болезни, вызванные фондовым рынком. Идеальная система для новичков.


Основная идея это выбрать максимально стабильные фишки с дивидендной поддержкой, в которых было бы не страшно «зависнуть», получая дивиденды.  Далее покупать каждые 4% просадки, и закрывать позицию каждые 4% роста.  Данную стратегию продвигает Григорий Богданов, как оптимальную стратегию с точки зрения комфортной для психики. Но обо всем по порядку. 

1. Манименеджмент.( риск-менеджмент и тд.)

ММ это наше все.(не путать ММ с маркет-мейкером) Контроль над рисками одно из самых главных на фондовом рынке. Можно срубить 100% за месяц и тут же за месяц все это слить. Нас интересует скромность, надежность и сложный процент на длительном периоде. 



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

Классификация сделок в торговых системах.

    • 14 декабря 2020, 20:54
    • |
    • 3Qu
  • Еще
Я в принципе не занимаюсь оптимизицией, как она обычно понимается, т.е. подбором параметров для получения высокой доходности. Я занимаюсь настройкой системы. Это, прежде всего, определение и уточнение границ области(ей), в которой производятся сделки и выход из них.
Для этого строятся всяческие графики, диаграммы и прочее, где отображаются сами сделки и их параметры.
Сделки разделяются на следующие классы:
1. системно правильные прибыльные
2. системно правильные убыточные
3. случайно прибыльные
4. случайно убыточные.
Сделки 1 и 2 производятся в рамках правил системы, и не требуют корректировки.
Сделки 3 и 4 производятся вне границ области, определенной системой, что требует уточнения логики системы с целью исключения этих сделок даже несмотря на их прибыльность.
Может также оказаться, что необходимо скорректировать область определения системы, и часть сделок 3 и 4 в последующем перекочуют в классификации в сделки 1 и 2.
Сделки классов 3 и 4 не всегда можно полностью исключить из системы, т.к. область определения может иметь достаточно сложную конфигурацию, и ее ограничение требует сложной логики. С этим, возможно, придется смирится.
Благодаря таким настройкам прибыль системы в итоге может даже уменьшится по сравнению с исходной, до настройки. Но мы тем самым почти гарантируем, что при следующих тестах, на других отрезках истории, и, в дальнейшем, на реале, прибыль останется стабильной.

Все, что нужно знать об инвестиционном налоговом вычете, который предусмотрен подп.1 п.1 ст.219.1 НК РФ, по обычному брокерскому счету (не ИИС)

Предположим, инвестор решил навести порядок в своих личных делах и решительно воспользоваться инвестиционным налоговым вычетом, который предусмотрен подп.1 п.1 ст.219.1 за 2020г. (ну а вдруг он есть, а инвестор не знал о нем как о сущности и только сейчас прочитал? Может можно что-то получить назад?).

Я представил наиболее полный кейс, который учитывает все нюансы – в инете только простенькие примеры попадались.

Итак, инвестиционный налоговый вычет по подп.1 п.1 ст.219.1 НК РФ — это вычет в размере положительного финансового результата, но не всего по факту результата, а с лимитом, рассчитываемого как Кцб х 3 000 000 руб. В свою очередь, Кцб рассчитывается вот по такой страшной, на первый взгляд, формуле:
Показать в полный размер

Физический смысл Кцб станет понятен позже.

Этот тип вычета уменьшает только положительный финансовый результат от операций с ценными бумагами (акциями, облигациями и паями) в текущем налоговом периоде и его нельзя крыть об уплаченный НДФЛ с зарплаты и возмещать неиспользованный остаток вычета или весь вычет из бюджета подачей декларации. Также нельзя переносить неиспользованный остаток вычета на будущее. Это не предусмотрено ст.219.1 НК РФ.

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

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