Избранное трейдера Светлана
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'
Начал работать, примерно, год назад, т.е. новичок. Пользуюсь Квиком. Торгую вручную в сроках от дней до месяцев и бесконечности. Т.е. не совсем смарт-лабовский формат, но, возможно, кому-нить пригодится. Личный опыт и вопросы. Итак.
1) Горячие клавиши!Сколько раз, в течение жизни, я мысленно благодарил одного из своих преподов в ВУЗе. Курс он читал какой-то незначащий, типа «Пакеты прикладных программ», что ли, но крепко-накрепко вдолбил в голову: работая в любой программе, первым делом, выучивай горячие клавиши!Это так сильно помогает, что странно, почему этому в школе не учат.
В Квике какие-то клавиши заданы, какие-то можно назначать, но, похоже, не все. Постоянно пользуюсь Ctrl+E (редактирование), Alt+G (график), Alt+I (информация об облигации), Ctrl+N (копия окна), Alt+T (показывать окно поверх других). Сильно не хватает клавиш для работы с шаблонами и вкладками. Например, переключаться между вкладками можно по Alt+1...Alt+9 можно, а между шаблонами нельзя. Загружать/удалять/переименовывать вкладки нельзя итд.
Вопрос: этих клавиш, действительно, нету и нельзя назначить или мне не по глазам?
Налоги — штука полезная для общества, но коварная для несведущего инвестора.
Случаются такие парадоксальные ситуации. Инвестору вдруг понадобились деньги. Решил их вывести с брокерского счета, благо торгует успешно, есть прибыль. Но ожидая вывести одну сумму, получает намного меньшую. Вплоть до того, что она будет стремиться к нулю. Инвестору кажется, что налог съел всю прибыль. Как же так?
Все дело в расчетах налога при выводе денежных средств с брокерского счета.
Когда вы снимаете деньги со своего брокерского счета, брокер рассчитывает ваш финансовый результат и удерживает налог, который потом перечисляет в бюджет.
Если сумма налога от финансового результата по сравнению с суммой вывода:
Не понятно? Давайте на примерах.
1️⃣ Допустим, инвестору приспичило вывести 100 000 рублей с брокерского счета. Весь год он успешно торговал. Прибыль по сумме всех операций составила 700 000 рублей. Тогда при выводе средств будет начислен налог (13%) — 91 000 рублей. В итоге инвестору капнет на счет всего 9 000 рублей 😳.
🧮 ММК первым среди отечественных сталеваров представил свою финансовую отчётность по МСФО за 4 квартал и 12 месяцев 2020 года, которая оказалась лучше ожиданий.
С октября по декабрь, на фоне роста объёмов продаж и ценового ралли на мировом рынке стали, компания смогла нарастить выручку на 18,3% (кв/кв) до $1852 млн, а также показатель EBITDA более чем на треть – до $474 млн. При этом по итогам заключительного отрезка минувшего года рентабельность по EBITDA выросла до 25,6% (кварталом ранее она составляла 22,4%).
📉 А вот финансовые результаты 2020 года отметились отрицательной динамикой, чего и следовало ожидать, учитывая серьёзное негативное влияние пандемии на деловую активность и цены на сталь, особенно в первом полугодии, а также плановую реконструкцию стана 2500 горячего проката. Впрочем, уже в четвёртом квартале стан 2500 вышел на уровень заявленной мощности после реконструкции. Выручка по итогам 12 месяцев сократилась на 15,5% до $6,40 млрд, показатель EBITDA снизился на 17,0% до $1,49 млрд, а чистая прибыль составила $604 млн, растеряв почти 30% от своего прошлогоднего результата.
Продолжаем следить за данными федеральной таможенной службы. С этими показателями коррелирует деятельность Газпрома, а значит можно сделать выводы о его финансовых результатах.
В ноябре объем экспорта природного газа увеличился на 1% относительно прошлого месяца и снизился на 8% относительно прошлого года. За январь-ноябрь 2020 года экспорт составил 178,4 млрд куб. м, снизившись на 10% относительно 2019 года.
Если ориентироваться на данные Газпрома, то скорее всего экспорт в декабре также будет ниже прошлого года. Однако тут не учитывается экспорт в Китай и Турцию, который компенсирует падение поставок в Европу. При этом в январе 2021 года поставки уже выше, чем годом ранее. При этом компания заявляет, что показатели экспорта в январе самые высокие за историю.
Экспорт «Газпрома» в страны дальнего зарубежья – 19,4 млрд куб. м газа. Это на 45,4% (на 6,1 млрд куб. м) больше, чем в январе прошлого года, и лучший показатель для этого месяца за всю историю экспортных поставок компании.