Перепрыгнеть в содержание


* * * * - 6 голосов

Masaniello или «День дурака»


864 ответов в эту тему

#221 OFFLINE   Bambuk

    Специалист


  • mp
  • 6322 сообщения
602

Добавлено 27 May 2015 - 17:43

Замечание по файлу—если кого-то напрягает концовка, когда например там должно быть два вина или один итд…где клетки не просчитываются с суммами то там по логике видно что идём всем остатком банка.

Можно во вторую ячейку столбца Stavka (ячейка L10) ввести вот такую формулу (можно прям из поста скопировать) и протащить маркером до конца таблицы.
=ЕСЛИ(И(ЕЧИСЛО(J10);ЕОШИБКА((1-(P10+1)/E10)*M9));M9;(1-(P10+1)/E10)*M9).

Обращаю внимание –так как для длинных последовательностей вероятности считаются по
Биному (до момента пока не останется 12--потом уже по точной формуле считает ) то там может при сильно разных и пляшущих кефах получаться прибыли меньше чем указано в Е ячейке вверху.

Отредактировано Bambuk, 27 May 2015 - 17:47.


#222 OFFLINE   Bambuk

    Специалист


  • mp
  • 6322 сообщения
602

Добавлено 28 May 2015 - 11:10

Сообщенияhobby, on 27 May 2015 - 14:57, сказал:

Все таки я неправ. Маза она ведь на любой вкус.
hobby, скорее всего Вы сами не доконца разобрались в своём мнении относительно данного метода. Я попробую прояснить вопрос для всех.
Во первых---безбашенное применение данного механизма неминуемо приведёт игрока к банкротству. Попробуем математически это обосновать.

Математическое ожидание прибыли на дист. определяется формулой
MO_maza = (1+E)*Pwin-1
Где Pwin
Pwin =1-БИНОМ.РАСП(m-1;N;Psr;1)

Psr=(SUMM (1/Ki))/N i=1, 2, 3,…N

Можно показать что при справедливых кефах MO_maza=0
Поэтому если нет перевеса (а в кефах маржа) и распределение не обладает
определёнными свойствами (или нет отрицательной корреляции), то какое-либо управление построить теоретически не возможно.

Для мазы нужно распределение у которого вероятность левого хвоста (левее m)
заметно меньше чем у биномиального распределения---такого на открытом потоке добиться очень сложно (тут надо только иметь перевес над линией), а вот в закрытых ограниченных множествах это проще сделать (надо чтоб допустим играя 3/15 на кефе 3
вероятность что выпадет меньше 3 была незначительна—почти 0 Ну для примера посмотрите команду ПСЖ по сезонам на Х и подберите там с запасом m для выбранного размера последовательности 15 20 или сколько там вам покажется разумным---можно при этом ориентироваться на рекомендуемое m и даже взять в ряде случаев больше на 1)

Таким образом МАЗА для общего безбашенного случая АПРИОРНО УБЫТОЧНА
и это надо чётко понимать.

Отредактировано Bambuk, 28 May 2015 - 11:12.


#223 OFFLINE   sergei7000

    Специалист


  • mp
  • 2043 сообщения
180

Добавлено 28 May 2015 - 12:28

Spoiler


Spoiler


#224 OFFLINE   tester.nt

    Специалист


  • Участник II
  • ПипПипПип
  • 192 сообщения
61

Добавлено 28 May 2015 - 21:36

Бамбук, помогите осилить функцию :)

Function MAZA_P(ByRef rah As Range, ByRef nmaza As Range, ByRef mi As Range, Optional VolatileOn As Boolean = True) As Variant
На вход подается три переменных:
rah - это коэффициент матча
nmaza - число матчей до окончания последовательности
mi - число необходимых выигрышей до закрытия последовательности (в двух вариантах)

Application.Volatile VolatileOn
Dim VOZ As Range
Dim N As Range
Dim M As Range
Dim i, j As Long
Dim smas() As Single
Dim P1, S1, PUM1, SUM1, VER1 As Double
Здесь определяем переменные.

Set N = nmaza
Set M = mi
Set VOZ = rah
ReDim smas(N.Value)
i = 0
Do Until i > N.Value
smas(i) = VOZ.Offset(rowOffset:=i, columnOffset:=0).Value
i = i + 1
Loop
Здесь присваиваем переменным значения.
Только непонятно, зачем мы пишем кэфы наперед? Мы же не можем знать какой будет кэф на 10-м шагу, находясь на первом. А если не вводишь кэфы, то N само изменяется в меньшую сторону.
А еще получается так, что когда мы вводим следующие кэфы, то значения предыдущих ячеек изменятся. Так должно быть?

VER1 = 0
i = 1
j = 0

For j = 0 To 2 ^ N.Value - 1 Step 1
S1 = j
PUM1 = 1
SUM1 = 0

For i = 1 To N.Value Step 1
P1 = S1 Mod 2

If P1 = 1 Then
PUM1 = PUM1 / smas(i - 1)
SUM1 = SUM1 + P1
S1 = S1 \ 2
Else
PUM1 = PUM1 * (1 - 1 / smas(i - 1))
SUM1 = SUM1 + P1
S1 = S1 \ 2
End If
Next i

If SUM1 >= M.Value Then
VER1 = VER1 + PUM1
Else
VER1 = VER1
End If
Next j

MAZA_P = VER1
End Function
Этот кусок кода какую роль исполняет? Что значат эти переменные и что здесь считается?
Может нам не надо все значения от 0 до 2^N-1?

И что за число эта функция дает на выходе?

Если не сложно, то проясните данные моменты.

Отредактировано tester.nt, 28 May 2015 - 21:37.


#225 OFFLINE   sergei7000

    Специалист


  • mp
  • 2043 сообщения
180

Добавлено 28 May 2015 - 21:52

А вот и подключился специалист по экселю .
Теперь есть надежда и для тех кто выбрал винду ... :)

#226 OFFLINE   Bambuk

    Специалист


  • mp
  • 6322 сообщения
602

Добавлено 28 May 2015 - 22:31

Я в функцию передал только адрес первой ячейки начала кефоф--остальное заполняется в этом месте smas(i)= VOZ.Offset(rowOffset:=i, columnOffset:=0).Value
массив smas заполняем путём смещения вниз на число позиций = i.
кефы должны быть введены все и сразу--иначе как можно рассчитать то чего нет? Кеф 1.33 и кефф 133 это ж не одно и тоже. Другой вопрос откуда брать их если нет в лини (но это отдельный разговор...ну представим пока что мы как вариант-- ретро ввели для тех коих нет подкорректировав их по тем что есть и те что были в предыдущ. сез.)

Этот кусок переводит числа из десятичных в двоичные потом множит на 1/К или на 1-1/К (в зависимости что в двоичном коде выскачило в позиции и заносит в переменную
попутно там суммируются 1 в коде и если только больше заданного суммируем
S1 Mod 2--это деление по модулю 2
S1 = S1 \2 --это остаток от деления на 2 (надо Вам посмотреть как переводятся десятичные в двоичные тогда алгоритм понятный станет...а остальное тут в постах написано про Рх и проч хрень

For j = 0 To 2 ^ N.Value - 1 Step 1
S1 = j
PUM1
= 1
SUM1 = 0

For i = 1 To N.Value Step 1
P1 = S1 Mod 2

If P1 = 1 Then
PUM1 = PUM1 / smas(i - 1)
SUM1 = SUM1 + P1
S1
= S1 \ 2
Else
PUM1 = PUM1 * (1 - 1 / smas(i - 1))
SUM1 = SUM1 + P1
S1
= S1 \ 2
End If
Next i

If SUM1 >= M.Value Then
VER1 = VER1 + PUM1
Else
VER1 = VER1
End If
Next j

Функция является неким аналогом (но точным) вот такого выражения =1-БИНОМ.РАСП(m-1;N;P;1)----это вероятность того что в N экспериментах выпадет не менее m

#227 OFFLINE   Bambuk

    Специалист


  • mp
  • 6322 сообщения
602

Добавлено 28 May 2015 - 22:43

На пальцах проще...
вот последовательность 001010 и кефы (считаем что они справедливые) по кефам у нас есть вероятности условно говоря 1/к
тогда вероятность что выпадет данная именно последовательность равна (1-р1)*(1-р2)*р3*(1-р4)*р5*(1-р6) а дальше тупой перебор и подсчёт "1" если больше или равно m
то суммируем.

#228 OFFLINE   Bambuk

    Специалист


  • mp
  • 6322 сообщения
602

Добавлено 28 May 2015 - 23:25

BANK
№ K_bukm REZ Stavka 100

1 1,5 4,87306185 95,12693815
2 1,5 1 7,871869765 99,06287303
3 1,5 5,903902395 93,15897064
4 1,5 1 9,660931054 97,98943616
5 1,5 7,245698403 90,74373776
6 1,5 1 12,0761636 96,78181956
7 1,5 1 9,057122758 101,3103809
8 1,5 5,822436122 95,48794482
9 1,5 1 11,64487213 101,3103809
10 1,5 6,986923269 94,32345761
11 1,5 1 15,72057688 102,1837461
12 1,5 7,860288523 94,32345753
13 1,5 1-возможно 23,58086438 106,1138897 (а возможно и 0 )
14 1,5 нет ст. 0 106,1138897

ЗАМЕЧАНИЕ ПО ВОЗМОЖНОМУ ПРЕКРАЩЕНИЮ ИГРЫ
Там где выделено можно подумать о «продлении» последовательности—то есть начать новую мазу с текущим значением банка (учитывая что надо что-то и добрать в случае
Банка меньше исходного)….

Отредактировано Bambuk, 28 May 2015 - 23:33.


#229 OFFLINE   tester.nt

    Специалист


  • Участник II
  • ПипПипПип
  • 192 сообщения
61

Добавлено 29 May 2015 - 00:27

Пока лишь смотрю логику кода. Чтобы уловить содержание нужно в математике шурупать, которую я в свое время обошел стороной. Отсюда и кучу глупых вопросов.

Но один сразу попутно задам: нам нужно генерить последовательности разных размеров или мы можем обойтись максимальным (или тем, который остался)?

И по коду. Можно ли не запускать данную функцию в двух соседних ячейках, а исполнять ее один раз? Между полем K(m) и K(m-1) разница во входных данных только на 1. Может там просто добавить еще одну переменную и одно условие IF, а функцию переписать, чтобы возвращала массив из двух чисел. Тогда бы мы две соседние функции смогли заменить одной. Результат - уменьшение кол-ва расчетов в 2 раза и увеличение быстродействия.

Сообщенияsergei7000, on 28 May 2015 - 21:52, сказал:

А вот и подключился специалист по экселю .
Теперь есть надежда и для тех кто выбрал винду ... :)
Чайник еще тот. Первый раз разбираю код на VBA :)

Отредактировано tester.nt, 29 May 2015 - 00:30.


#230 OFFLINE   tester.nt

    Специалист


  • Участник II
  • ПипПипПип
  • 192 сообщения
61

Добавлено 29 May 2015 - 01:54

Сообщенияtester.nt, on 29 May 2015 - 00:27, сказал:

...Отсюда и кучу глупых вопросов.

Но один сразу попутно задам: нам нужно генерить последовательности разных размеров или мы можем обойтись максимальным (или тем, который остался)?

Походу вопрос снимается. Там остальное нулями заполняется, если я правильно понял.

В целом вроде код ясен. Осталась задача оптимизации быстродействия.

#231 OFFLINE   sergei7000

    Специалист


  • mp
  • 2043 сообщения
180

Добавлено 29 May 2015 - 06:52

Spoiler


Spoiler

Отредактировано sergei7000, 29 May 2015 - 06:53.


#232 OFFLINE   Bambuk

    Специалист


  • mp
  • 6322 сообщения
602

Добавлено 29 May 2015 - 07:18

Сообщенияtester.nt, on 29 May 2015 - 01:54, сказал:

Походу вопрос снимается. Там остальное нулями заполняется, если я правильно понял.

В целом вроде код ясен. Осталась задача оптимизации быстродействия.
Нулями не заполняется, представьте что просто функция вычисляет вероятность которую я написал по переданным параметрам (она получает кефы с того места на которое указывает адрес, число N и m), а потом в самой таблице всё остальное происходит---когда вы тащите функцию то адреса меняются (ну всё как для обычных функций) исключение составляет то что в нашей встроенной нельзя в самой функции написать выражение типа N-1 или m+1(поэтому для передачи подобного там пришлось дополнительный столбик сделать) так как в функцию передаётся типа адреса что ли--ссылка
вот в этих операторах мы получаем ссылки на передаваемые параметры (или объекты)
Set N = nmaza
Set M = mi
Set VOZ = rah

Отредактировано Bambuk, 29 May 2015 - 07:21.


#233 OFFLINE   Bambuk

    Специалист


  • mp
  • 6322 сообщения
602

Добавлено 29 May 2015 - 07:31

tester.nt, дело в том что одного этого инструмента крайне мало для игры, нужно изучать как ходят тренды последовательностей--это вот то что Вы показывали на графиках или можно непосредственно изучать число 1 в окнах разной размерности. Нам же надо выбрать как-то N и m . Помимо этого надо знать какие могут быть отклонения в последовательностях (допустим на сезонах...чтоб понятнее--вот допустим взяли полосу кефоф на домашние команды (допустим выбрали несколько ком.) 1.45--1.67 и долбачим её )....

#234 OFFLINE   hobby

    Специалист


  • mp
  • 2001 сообщения
485

Добавлено 29 May 2015 - 07:45

СообщенияBambuk, on 29 May 2015 - 07:31, сказал:

tester.nt, дело в том что одного этого инструмента крайне мало для игры, нужно изучать как ходят тренды последовательностей--это вот то что Вы показывали на графиках или можно непосредственно изучать число 1 в окнах разной размерности. Нам же надо выбрать как-то N и m . Помимо этого надо знать какие могут быть отклонения в последовательностях (допустим на сезонах...чтоб понятнее--вот допустим взяли полосу кефоф на домашние команды (допустим выбрали несколько ком.) 1.45--1.67 и долбачим её )....
Хорошо бы калькулятор Маза отдельно, полосы и последовательности отдельно. Есть разные подходы к "полосам" , Маза для этого один из инструментов. Если все в кучу, то тема усохнет.

#235 OFFLINE   Bambuk

    Специалист


  • mp
  • 6322 сообщения
602

Добавлено 29 May 2015 - 07:59

Некоторые могут вот этим сайтом попробовать пользоваться info.nowgoal.com/en/index.htm

там есть данные по полосам info.nowgoal.com/en/Contrast.aspx?contrast=1&SclassID=34&lang=2
Это надо зайти в лигу по первой ссылке а потом справа есть вкладки (самая нижняя Odds Comparison )
Для остальных линий придётся самим исследовать..и данных сайта всё равно недостаточно (только для первичных каких-то выводов)

Сообщенияhobby, on 29 May 2015 - 07:45, сказал:

Хорошо бы калькулятор Маза отдельно, полосы и последовательности отдельно. Есть разные подходы к "полосам" , Маза для этого один из инструментов. Если все в кучу, то тема усохнет.
Почему отдельно? Надо ж взять кучу реализаций и смотреть какова вероятность выпадения меньше m в N , надо делать скользящее окно N и смотреть. Откуда мы знаем как лучше играть--8/20 или 7/15 ???

#236 OFFLINE   tester.nt

    Специалист


  • Участник II
  • ПипПипПип
  • 192 сообщения
61

Добавлено 29 May 2015 - 10:18

СообщенияBambuk, on 29 May 2015 - 07:18, сказал:

Нулями не заполняется, представьте что просто функция вычисляет вероятность которую я написал по переданным параметрам (она получает кефы с того места на которое указывает адрес, число N и m), а потом в самой таблице всё остальное происходит---когда вы тащите функцию то адреса меняются (ну всё как для обычных функций) исключение составляет то что в нашей встроенной нельзя в самой функции написать выражение типа N-1 или m+1(поэтому для передачи подобного там пришлось дополнительный столбик сделать) так как в функцию передаётся типа адреса что ли--ссылка
вот в этих операторах мы получаем ссылки на передаваемые параметры (или объекты)
Set N = nmaza
Set M = mi
Set VOZ = rah
Я про двоичный код. Внутренний цикл же считает всю длину от 1 до N. Даже, когда i=10, и длина двоичного числа равняется 4, то остальное заполняется нулями до длины N.
А как работает остальное - разобрался.

Что вы имеете ввиду, когда говорите, что мы не можем написать N-1 или m+1?

СообщенияBambuk, on 29 May 2015 - 07:31, сказал:

tester.nt, дело в том что одного этого инструмента крайне мало для игры, нужно изучать как ходят тренды последовательностей--это вот то что Вы показывали на графиках или можно непосредственно изучать число 1 в окнах разной размерности. Нам же надо выбрать как-то N и m . Помимо этого надо знать какие могут быть отклонения в последовательностях (допустим на сезонах...чтоб понятнее--вот допустим взяли полосу кефоф на домашние команды (допустим выбрали несколько ком.) 1.45--1.67 и долбачим её )....
Я тоже думал над тем, как прикрутить исследование трендов. Сами тренды изучать лучше с помощью того инструмента, о котором я рассказывал. Но как сделать так, чтобы можно было накладывать на тренды Мазу - я пока не знаю. В идеале было бы хорошо, чтобы мы фильтрами сделали выборку, а на нее автоматически Маза рассчитывалась с разными параметрами.

Отредактировано tester.nt, 29 May 2015 - 10:21.


#237 OFFLINE   Bambuk

    Специалист


  • mp
  • 6322 сообщения
602

Добавлено 29 May 2015 - 10:41

Сообщенияtester.nt, on 29 May 2015 - 10:18, сказал:

Я про двоичный код. Внутренний цикл же считает всю длину от 1 до N. Даже, когда i=10, и длина двоичного числа равняется 4, то остальное заполняется нулями до длины N.
А как работает остальное - разобрался.

Что вы имеете ввиду, когда говорите, что мы не можем написать N-1 или m+1?


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

У нас число десятичное идёт от 0 до 2^N-1 так вот алгоритм такой--берём число (это делает первый цикл) ну допустим в цикле мы прошли там чёта и у нас текущее 11
так вот второй цикл переводит его в двоичный код (см festival.1september.ru/articles/313027/) а дальше всё по алгоритму из поста с нуликами и единицами умножаем на р или 1-р считаем единички в переменную потом вышли из внутреннего цикла и если в переменной где сум 1 удовлетворяет условию больше или равно m то суммируем наше произведение полученное во внутреннем цикле к переменной считающей вероятность.

В обычных функциях экселя можно вместо операнда написать любое выражение. а в той функции нет--там надо именно ячейку указать (но вот в ячейке тогда и пишите выражение обращаясь к другим клеткам листа---иначе просто функция не понимает чё ей передают.

Для исследований надо просто выигрыши заменить в базе 1 а проигрыши 0, но вообще там наверно не получится провести алгоритм полноценно---дело в том что лучше не ставить окна длины N одно за другим а тащить сдвигаясь на одну позицию (это связано с тем что влияет ведь и календарь на ситуацию поэтому это надо как-то снивелировать и плюс мы получим больше реализаций---вы же формально можете встать в колбасу в любой точке...тогда логично сделать колбасу "бубликом" и формально вы тыкаете кудато в бублик и начинаете двигаться====типа кольцевого регистра памяти и вот в нём ходим.....

#238 OFFLINE   tester.nt

    Специалист


  • Участник II
  • ПипПипПип
  • 192 сообщения
61

Добавлено 29 May 2015 - 11:38

СообщенияBambuk, on 29 May 2015 - 10:41, сказал:



У нас число десятичное идёт от 0 до 2^N-1 так вот алгоритм такой--берём число (это делает первый цикл) ну допустим в цикле мы прошли там чёта и у нас текущее 11
так вот второй цикл переводит его в двоичный код (см festival.1september.ru/articles/313027/) а дальше всё по алгоритму из поста с нуликами и единицами умножаем на р или 1-р считаем единички в переменную потом вышли из внутреннего цикла и если в переменной где сум 1 удовлетворяет условию больше или равно m то суммируем наше произведение полученное во внутреннем цикле к переменной считающей вероятность.

В обычных функциях экселя можно вместо операнда написать любое выражение. а в той функции нет--там надо именно ячейку указать (но вот в ячейке тогда и пишите выражение обращаясь к другим клеткам листа---иначе просто функция не понимает чё ей передают.

Для исследований надо просто выигрыши заменить в базе 1 а проигрыши 0, но вообще там наверно не получится провести алгоритм полноценно---дело в том что лучше не ставить окна длины N одно за другим а тащить сдвигаясь на одну позицию (это связано с тем что влияет ведь и календарь на ситуацию поэтому это надо как-то снивелировать и плюс мы получим больше реализаций---вы же формально можете встать в колбасу в любой точке...тогда логично сделать колбасу "бубликом" и формально вы тыкаете кудато в бублик и начинаете двигаться====типа кольцевого регистра памяти и вот в нём ходим.....
Я понимаю что происходит в циклах. У меня вопрос был по поводу того какая вероятность при i = 1. Сначала думал что 1, а потом думал, что 1/N.

С функцией на выходных ещё немного поиграюсь. Все таки мне кажется что проход по внешнему циклу 2*N раз избыточен. Но, учитывая что в vba я дуб дубом - амбиции у меня зашкаливают :)

Сто касается исследований. В базе менять ничего не надо. А каждое окно N надо проганять N раз со сдвигом от 0 до N-1. Тогда будем знать разброс вероятностей в данной последовательности. Отсюда узнаем максимум и минимум и сможем уже и страховаться и выбирать оптимальное m.

#239 OFFLINE   Bambuk

    Специалист


  • mp
  • 6322 сообщения
602

Добавлено 29 May 2015 - 11:59

Сообщенияtester.nt, on 29 May 2015 - 11:38, сказал:

Я понимаю что происходит в циклах. У меня вопрос был по поводу того какая вероятность при i = 1. Сначала думал что 1, а потом думал, что 1/N.


цикл по i он просто формирует двоичный код длины N , а вероятность (выпадения этой последовательности) получается только когда весь цикл пройден и сформировано произведение р или 1-р (в зависимости что в последовательности в позиции i)
Там по идее если допустим писать на другом языке типа С+ итп.... то можно этот кусок кода прописать как ассемблерную вставку, по идее коды на ассемблере они самые быстрые (ну если конечно писать всё по уму)...тогда возможно вопрос вообще отпадает по быстродействию (но можно ещё подумать как там ещё можно длинные коды обработать---может есть какой-то способ).

Отредактировано Bambuk, 29 May 2015 - 12:08.


#240 OFFLINE   sergei7000

    Специалист


  • mp
  • 2043 сообщения
180

Добавлено 29 May 2015 - 13:36


По мазе 1 10/20 произошло банкротство .


Spoiler