Termos de Referência
Пишем торгового бота. Для начала нужна мат. модель. Мат модель - это класс, который на вход принимает цену и другие параметры и решает что делать в произвольный момент времени. То есть по сути это функция make_decision(price), которая возвращает
Алгоритм
1.Купили акцию по цене x (то есть нам на вход это отдали алгоритму первый раз), ставим Stop Loss = 10%, то есть если цена опустится ниже <= 0.9*x - то продаем
(про стоп лоcc - тут почитать можно: https://help.tinkoff.ru/trading-account/order-types/s..)
1а. Так же мы изначально ставим очень большой takeprofit 200% или 2x от первоначальной цены, если вдруг цена будет резко вверх идти и мы выгодно сможем продать
то есть если купили по цене 1$, то вызываем функцию make_decision(price=1, start=True), которая возвращает нам следующее:
#первоначальный стоп лосс = 10%
initial_sl_percent= 10
inital_tp_percent = 200
#высчитываем первоначальный стоп лосс не в процентах, а в пунктах, для этого цену*на стоп_лосс_процент, делим на 100 процентов и вычиываем из первоначальной цены
sl = {'sl': price - price*initial_sl_percent/100}
#высчитыаем тейк профит для этого прибавляем к изначальной цене сумму take profit
tp = {'tp': price+ price*initial_tp_percent/100}
#возвращаем результат
result = {actions:[sl, tp]}
То есть мы вызываем функцию make_decision(price, start=True) и нам должно вернуть наш result
2. Если цена идет на 5% вверх от изначальной, то ставим sl в безубыток по той цене, которой купили
*тут важный момент - проверить что алгоритм корректно работает на случае, если цена пошла вверх, потом снова вверх, например на 100%, потом опустилась вниз, стоп лосс по алгоритму должен быть не в безубыток, а гораздо выше
3.На каждые 10% повышения цены от первоначальной- мы передвигаем sl на 5% вверх,
то есть вводим два параметра:
#повышение цены от изначальной при которой будем передвигать sl
price_up_percent = 10
#передвижение стоп лосса
sl_up_percent = 5
#если цена повысилась на 10%
if price>=(price+price_up_percent*price/100) and тут_посчитать_формулу_вдруг_у_нас_уже_стоит_нужный_нам_стоп_лосс:
3а*стоп лосс может передвигаться только вверх, он не может опускаться ниже предыдущего стоп лосса
4.Нужно написать тесты, покрывающие все случаи
5.Какой-то логгер по сколько купили в итоге и продали и сколько прибыли сделали.
Informações sobre o projeto
Orçamento
35+ USD
Desenvolvedor
31.5
USD
Prazo
para 7 dias