Время от времени мне пишут, что хотели бы использовать моего бота для бинанса с таким-то индикатором или в такой-то связке индикаторов для реализации своей стратегии. Раз уж мы закончили цикл статей про индикаторы, давайте применим их в реальной жизни?
Теперь собственно про индикаторы (и вообще алгоритм работы).
В файле binance_bot.py есть вот такой вот фрагмент кода:
log.debug("Проверяем индикаторы") # Получаем свечи и берем цены закрытия, high, low klines = bot.klines(
Реклама:
symbol=pair_name.upper(), interval=TIMEFRAME, limit=KLINES_LIMITS ) closes = [float(x[4]) for x in klines] high = [float(x[2]) for x in klines] low = [float(x[3]) for x in klines] # Скользящая средняя sma_5 = ta.SMA(closes, 5) sma_100 = ta.SMA(closes, 100) ema_5 = ta.EMA(closes, 5) ema_100 = ta.EMA(closes, 100) enter_points = 0 if ema_5[-1] > ema_100[-1] and sma_5[-1] > sma_100[-1]: # Быстрая EMA выше медленной и быстрая SMA выше медленной, считаем, что можно входить enter_points += 1 macd, macdsignal, macdhist = ta.MACD(closes, 12, 26, 9) if macd[-1] > macdsignal[-1] and macdhist[-1] > 0: # Линия макд выше сигнальной и на гистограмме они выше нуля enter_points += 1.3 rsi_9 = ta.RSI(closes, 9) rsi_14 = ta.RSI(closes, 14) rsi_21 = ta.RSI(closes, 21) if rsi_9[-1] < 70 and rsi_14[-1] < 70 and rsi_21[-1] < 70: # RSI не показывает перекупленности enter_points += 2 fast, slow = ta.STOCH(high, low, closes, 5, 3, 3) if fast[-1] > slow[-1]: # Быстрая линия стохастика выше медленной, вход enter_points += 1.5 fast, slow = ta.STOCHRSI(closes, 14, 3, 3) if fast[-1] > slow[-1]: # Быстрая линия STOCHRSI выше медленной, вход enter_points += 1.8 upper, middle, lower = ta.BBANDS(closes, ma_period=20) if high[-1] > upper[-1]: # Свеча пробила верхнюю полосу Боллинджера enter_points += 3 log.debug("Свеча набрала {b} баллов".format(b=enter_points)) if enter_points < POINTS_TO_ENTER: log.debug("Минимальный проходной балл {b}. Пропуск пары".format(b=POINTS_TO_ENTER)) continue
Я его набросал для примера, просто что бы дать вам понимание что и как настраивается. Эта торговая стратегия не является какой-то там оптимальной или известной. Вы можете добавлять или убавлять куски кода так, как вам будет удобнее. Пробегусь по логике:
Работа с индикаторами происходит только перед созданием ордера на покупку, фактически это принятие решения, стоит ли входить в торги.
Сначала мы получаем с биржи свечи по текущей паре:
klines = bot.klines( symbol=pair_name.upper(), interval=TIMEFRAME, limit=KLINES_LIMITS )
Формируем массивы с ценами закрытия (а также high и low)
closes = [float(x[4]) for x in klines] high = [float(x[2]) for x in klines] low = [float(x[3]) for x in klines]
Строим для начала скользящие средние SMA и EMA (это и все что дальше касается индикаторов можно смело менять и удалять).
# Скользящая средняя sma_5 = ta.SMA(closes, 5) sma_100 = ta.SMA(closes, 100) ema_5 = ta.EMA(closes, 5) ema_100 = ta.EMA(closes, 100)
Проверяем, если последнее значение SMA с периодом 5 выше последнего значения SMA с периодом 100, и если тоже самое справедливо для EMA, то присваиваем одно очко в копилку. Значения могут быть любыми.
if ema_5[-1] > ema_100[-1] and sma_5[-1] > sma_100[-1]: # Быстрая EMA выше медленной и быстрая SMA выше медленной, считаем, что можно входить enter_points += 1
Если # Линия макд выше сигнальной и на гистограмме они выше нуля, то присваиваем еще 1.3 и т.п. Там вы найдете RSI, STOCH, STOCHRSI, и Боллинджера, по тем же приницпам.
macd, macdsignal, macdhist = ta.MACD(closes, 12, 26, 9) if macd[-1] > macdsignal[-1] and macdhist[-1] > 0: # Линия макд выше сигнальной и на гистограмме они выше нуля enter_points += 1.3
В итоге, после того как все индикаторы построены и наши веса посчитаны, можно принимать решение. В данном случае у меня в конфиге стоит проходной балл 7 (параметр POINTS_TO_ENTER), а суммарно можно набрать 10.6, если все индикаторы сработают.
В большинстве случаев какие-то индикаторы будут срабатывать а какие то нет, я проставил 3 очка Боллинджеру, если есть пробитие то это почти на половину увеличивает шансы пары войти на рынок. Если сработают только скользящие, то пара получит одно очко.
Ваша задача подобрать индикаторы, веса и проходной балл так, что бы реализовалась ваша торговая стратегия. Например, если вы используете только MA200 и RSI, и хотите войти на рынок, когда они сработают вдвоем, удалите всё лишнее, дайте каждому из них по 1 и сделайте проходной бал 2. Если достаточно сработки хотя бы одного из них, сделайте проходной балл 1.
Все доступные индикаторы вы можете найти в файле bablofil_ta.
Надеюсь, этот бот поможет вам отлаживать/настраивать/проверять свои или чужие торговые стратегии, а также принесет прибыль при грамотной настройке.
Вы всегда можете остановить бота, поменять настройки (например прибыльности или стоп-лосса) и бот подхватит для всех пар, даже для тех, по которым есть ордера. Если хотите начать все заново, удалите файл binance.db из папки с ботом, это его база данных, он создаст новую при запуске.
В общем удачи и профита вам и вашим роботам.
Задавайте вопросы в комментариях, пишите на форуме.