Как писать формулы?

Наверное, вы уже обратили внимание на то, что в SharkyScanner для задания условий поиска можно использовать формулы. С помощью формул можно описать практически любые условия поиска подходящих игр, а также условия, при которых игроки считаются слабыми или сильными.

Интерфейс и синтаксис

При написании формул вы можете использовать только те переменные и функции, которые есть в выпадающем списке под полем ввода формулы. Для того, чтобы получить описание переменной/функции, выберите ее в списке и кликните по . Для быстрой вставки переменной/функции в формулу воспользуйтесь кнопкой J. Если поле ввода слишком мало для вашей формулы, вы можете нажать K и продолжить редактирование в окне изменяемого размера. Чтобы выйти из этого редактора, нажмите Esc или L.

Во всех формулах допускается использование следующих операторов:

ОператорПриоритетОписаниеПример
?:0условный операторкак минимум 1 зарегистрированный игрок для турниров с бай-ином 10 и меньше; как минимум 2 зарегистрированных игрока для турниров с бай-ином более 10
ENROLLED>=(BIV<=10? 1:2)
and (or &&)1логическое «И»бай-ин равен $25, и зарегистрировано больше 3 игроков
BIUSD==25 and ENROLLED>3
or (or ||)2логическое «ИЛИ»скорость турнира обычная или турбо
SPEED==REGULAR or SPEED==TURBO
==3равнобай-ин турнира равен 10
BIV==10
!=3не равнобай-ин турнира не в долларах США
BIC!=USD
<3меньшеITM менее 50%
ITM<50
<=3меньше или равнокол-во играемых столов не более 5
TABLES<=5
>3большеROI более 10%
ROI>10
>=3больше или равнокак минимум 1 зарегистрированный игрок
ENROLLED>=1
+4сложениеигрок вылетает в ранней и ранне-средней стадиях турнира не менее чем в 35% игр
FINEARLY+FINEARLYMID>=35
-4вычитаниене менее 2 свободных мест в турнире
ENTRANTS-ENROLLED>=2
*5умножениесыграно как минимум половина игр в сессии
SGAMES*2>=SGAMELIMIT
/5делениетурнир заполнен хотя бы наполовину
ENROLLED>=ENTRANTS/2
not (or !)5инверсияникнейм игрока не ChuckNorrisQ
not nickname("ChuckNorrisQ")
^6возведение в степеньдаже не представляем, как это можно использовать

Вычисление формулы выполняется в соответствии с приоритетами операторов (сначала выполняются операции с более высоким приоритетом). В случае равных приоритетов операторов вычисление происходит по порядку слева направо. Если вы не уверены в порядке вычисления, используйте скобки «(» и «)». Использование скобок особенно актуально в условиях, содержащих сочетания операторов «and» и «or»: для того, чтобы избежать ошибок, никогда не делайте записей вида «A and B or C», в которых оператор(ы) «and» и оператор(ы) «or» находятся на одном уровне без разделения скобками. Обязательно обозначьте скобками условие, которое должно быть проверено в первую очередь: «(A and B) or C» или «A and (B or C)».

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

Поиск турниров

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

Пример 1

Поиск самых заполненных турниров на 16, 36 и 64 игрока, при этом заполненных как минимум на половину.

(ENTRANTS==16 or ENTRANTS==36 or ENTRANTS==64) and
ENROLLED>=ENTRANTS/2 and
mostenrolled(AVAILABLE,ANY,ANY,ENTRANTS,ANY)
						

Пример 2

Поиск одностоловых 9-max и 10-max SNG турниров на лимитах $3.5, $7 и $15 с как минимум 4 зарегистрированными игроками и со следующими условиями:

  • поиск турниров на лимите $3.5 только при текущем кол-ве столов менее 20;
  • прекратить поиск обычных 9-max после 150 минут сессии;
  • прекратить поиск 9-max турбо и обычных 10-max после 165 минут сессии;
  • прекратить поиск 10-max турбо после 180 минут сессии.

((BIUSD==3.5 and TABLES<20) or BIUSD==7 or BIUSD==15) and
((ENTRANTS==9 and SPEED==REGULAR and STIME<150) or
 (ENTRANTS==9 and SPEED==TURBO and STIME<165) or
 (ENTRANTS==10 and SPEED==REGULAR and STIME<165) or
 (ENTRANTS==10 and SPEED==TURBO and STIME<180)) and
ENROLLED>=4
						

Регистрация Spin & Go

На этой странице вы задаете, какие турниры Spin & Go вы хотите играть вместе с условиями, когда вы хотите их играть. Используйте функцию game, чтобы указать игру, бай-ин и кол-во столов Spin & Go, регистрируемых за раз, и отделите условия с помощью оператора «and». Если результат выражения, содержащего функцию game, не равен нулю, то вы будете зарегистрированы в соответствующем турнире Spin & Go. Если несколько выражений, содержащих функцию game дают ненулевой результат, то вы будете зарегистрированы в турнире Spin & Go, указанном в первом из этих выражений.

Пример 1

Сыграть три Spin & Go Hold'em за $30 (один стол) в начале сессии, потом сыграть шесть игр за $60 games (два стола) и потом играть турниры за $60 (до лимита столов) до конца сессии.

(game("Hold'em",30,1) and SGAMES<3 and TABLES<1) or
(game("Hold'em",60,1) and SGAMES<9 and TABLES<2) or
(game("Hold'em",60,999) and (SGAMES>12) or TABLES==0)
							

Пример 2

Продолжать регистрировать один Spin & Go Hold'em Flash за $15 и один Spin & Go Omaha за $7.

(game("Hold'em Flash",15,1) and count("Hold'em Flash",15)<1) or
(game("Omaha",7,1) and count("Omaha",7)<1)
							

Слабые соперники / Сильные соперники

На этих страницах вы можете задать условия, при которых игрок считается слабым/сильным. Если при вычислении формулы на странице Слабые соперники получился результат, отличный от нуля, то игрок считается слабым. Аналогично, если при вычислении формулы на странице Сильные соперники получился результат, отличный от нуля, то игрок считается сильным.

Пример 1

Считать игрока слабым, если он сыграл менее 100 игр или имеет ITM менее 46% в турнирах гипер-турбо или менее 48% в остальных турнирах.

GAMES<100 or
(SPEED==HYPER and ITM<46) or
(SPEED!=HYPER and ITM<48) or

Пример 2

Считать игрока слабым в одностоловых 9-max и 6-max турнирах, если у него отрицательная прибыль в этих видах игр (в формуле используются названия фильтров SharkScope, которые должны быть созданы для соответствующих типов игр).

(ENTRANTS==9 and PROFIT("9-max")<0) or
(ENTRANTS==6 and PROFIT("6-max")<0)
			

Пример 3

Считать игрока сильным, если его ITM выше заданного порога в зависимости от покерного клиента:

  • 54% и выше для PokerStars;
  • 56% и выше для PokerStars.ES.
(network("PokerStars") and ITM>=54) or
(network("PokerStars(FR-ES-PT)") and ITM>=56)
			

Пример 4

Считать игрока слабым при следующих условиях:

  • его ITM ниже 33%;
  • если не удается долго найти подходящий турнир, смягчать условия поиска, повышая планку ITM на 1% каждые 5 минут, но не более чем до 36%.
ITM<33+((SCANTIME=>180)? 3:SCANTIME/60)
			

Пример 5

Считать игрока слабым по его ITM, меняя планку в зависимости от времени и дня недели:

  • ниже 50% утром;
  • ниже 48% днем и ночью;
  • ниже 46% вечером и в выходные.
(time(ANY,05,00,12,00) and ITM<50) or
((time(ANY,12,00,17,00) or
  time(ANY,21,00,05,00)) and ITM<48) or
((time(ANY,17,00,21,00) or
  time(SAT+SUN,00,00,23,59)) and ITM<46)
			

Доп. статистика

На этой странице вы можете создавать новые (кнопка F), а также редактировать (кнопка G) и удалять (кнопка I) уже имеющиеся дополнительные параметры статистики SharkScope. Любой дополнительный параметр вычисляется по формуле из базовых параметров SharkScope.

Пример 1

Показатель $/час (подразумевается, что статистика SharkScope запрашивается в долларах США).

Имя параметра: $/час

Переменная: HRPROFIT

PROFIT/(GAMES*AVGAMEDUR/3600)
			

Пример 2

Обозначение порога ITM 48% для слабых игроков: полезно, когда в формуле на странице Слабые соперники вы используете это значение в нескольких местах. Вы можете создать дополнительный параметр (по сути, константу), вставить его в формулу слабых игроков вместо числового значения, и когда вы захотите изменить порог, достаточно будет изменить его один раз в формуле дополнительного параметра).

Имя параметра: Слабый ITM

Переменная: WEAKITM

48

Пример 3

Суммарный процент вылета игрока до средней стадии турнира.

Имя параметра: Вылет до средней

Переменная: NOMID

FINEARLY+FINEARLYMID

Инструменты — Группировать игроков

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

Пример 1

Выбрать из базы игроков сети PokerStars, играющих на среднем бай-ине не менее $30 и с ITM выше 55%.

network("PokerStars") and AVSTAKE>=30 and ITM>55

Пример 2

Выбрать из базы выигрывающих игроков из Мексики.

country("Mexico") and PROFIT>0

Пример 3

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

AVROI==AVROI

Если вы все еще не уверены в том, как составить формулу, свяжитесь с нами и опишите как можно подробнее, как бы вы хотели, чтобы все работало, и мы с радостью составим формулу для вас.