Path: blob/master/ invest-robot-contest_tinkoff_invest_competition-master/app/parameters_of_trading.py
7824 views
import sys1import pandas as pd2import datetime3import tinvest as ti4from datetime import timedelta56client = ti.SyncClient(config.token_tinkoff_invest())789"""Профит-значение по позициям без учета комиссии"""10def profit_value():11return 1.11213"""Лимит всех позиций"""14def limit_all_position():15return 1001617"""Лимит шага усреднения"""18def limit_of_step_average():19return 102021"""Лимит по усредненному rsi_ в данной итерации универсален для всего трейдинга"""22def limit_rsi_on_stock():23return 802425"""Величина позиции ордера - если цена больше лимита - покупка 1 акции, если меньше - рассчитывается26величина позиции в акциях27"""28def position_of_stocks(price, limit_of_average_step):29if price > limit_of_average_step:30return 131else:32position = round(limit_of_average_step/price)33return position3435"""current_price*position_of_average - вычитается из-за особенностей расчета payment-а - последний ордер всегда не считается"""36def sell_after_average_price_evalute(profit_value, current_price, payment, position_of_stock_before, position_of_average):37return round(profit_value*abs((payment - current_price*position_of_average)/(position_of_stock_before + position_of_average)),2)3839"""Выход из day-trading - в 23-05"""40def exit():41sys.exit()4243"""Минутки для ежедневного серчинга"""44def get_figi_data(figi: str, i) -> pd.DataFrame:45now = datetime.datetime.now()46payload = client.get_market_candles(47figi=figi,48from_=now - timedelta(days=i),49to=now - timedelta(days=i-1),50interval=ti.CandleResolution.min1,51).payload52return pd.DataFrame(c.dict() for c in payload.candles)5354def param_frequency_threshold():55return 15657"""First value"""58def first_time_profit_value():59return 1.1606162"""Первый заход в позицию"""63def lots_of_first_buy(price):64if price > 90:65return 166else:67return round(90/price)68697071727374