Глава IV. Программная реализация — КиберПедия 

Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...

Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...

Глава IV. Программная реализация

2017-09-10 217
Глава IV. Программная реализация 0.00 из 5.00 0 оценок
Заказать работу

Пример использования программы для расчета букмекерских «вилок»

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

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

Имеется какой-либо БАНК (денежная сумма) и КОЭФФИЦИЕНТЫ K1 и K2 (для двух исходного события) и КОЭФФИЦИЕНТЫ K1, K2, KХ (для трех исходного события). Необходимо ввести значения в поле БАНК и в поле КОЭФФИЦИЕНТ нажать кнопку РАССЧИТАТЬ. Программа рассчитает нам маржу между этими коэффициентами (если она положительна, то арбитражная ситуация есть, если она отрицательная или равняется нулю – то, вилки нет) сумму ставки на каждый исход, при которой мы выигрываем одинаковую сумму независимо от результата события и конечную прибыль.

Диалоговые окна программы для расчета двух и трех исходного события изображены на рисунке 4.1. и рисунке 4.2. соответственно.

Рисунок 4.1. Диалоговое окно программы для двух исходного события

Рисунок 4.2. Диалоговое окно программы для трех исходного события

 

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

Примеры таких ситуаций представлены на рисунке 3.3. и рисунке 3.4.

Рисунок 4.3. Диалоговое окно «Ошибка ввода данных» для поля КОЭФФИЦИЕНТ.

Рисунок 4.4. Диалоговое окно «Ошибка ввода данных» для поля БАНК.

Листинг программы для расчета букмекерских «вилок»

Текст модуля формы

unit UnitMain;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Menus, StdCtrls;

type

TMainForm = class(TForm)

MainMenu: TMainMenu;

DoubleIssue: TMenuItem;

TrippleIssue: TMenuItem;

Label1: TLabel;

EditBank: TEdit;

Label2: TLabel;

Label3: TLabel;

LabelX: TLabel;

Label5: TLabel;

Label6: TLabel;

Label7: TLabel;

Label8: TLabel;

EditCoef1: TEdit;

EditCoefX: TEdit;

EditCoef2: TEdit;

EditBet1: TEdit;

EditBetX: TEdit;

EditBet2: TEdit;

EditProfit1: TEdit;

EditProfitX: TEdit;

EditProfit2: TEdit;

LabelCalc: TLabel;

Label4: TLabel;

LabelMargin: TLabel;

procedure TrippleIssueClick(Sender: TObject);

procedure DoubleIssueClick(Sender: TObject);

procedure FormActivate(Sender: TObject);

procedure LabelCalcClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

MainForm: TMainForm;

implementation

uses Math;

var

IsDoubleForks: boolean; //указывает на выбранное количество исходов в расчете

{$R *.dfm}

procedure TMainForm.TrippleIssueClick(Sender: TObject);

begin

IsDoubleForks:= False;

//изменяем видимость полей

LabelX.Visible:= True;

EditCoefX.Visible:= True;

EditBetX.Visible:= True;

EditProfitX.Visible:= True;

//обнуляем поля

EditBet1.Text:= '';

EditBet2.Text:= '';

EditBetX.Text:= '';

EditProfit1.Text:= '';

EditProfit2.Text:= '';

EditProfitX.Text:= '';

LabelMargin.Caption:= '0%';

end;

procedure TMainForm.DoubleIssueClick(Sender: TObject);

begin

IsDoubleForks:= True;

//изменяем видимость полей

LabelX.Visible:= False;

EditCoefX.Visible:= False;

EditBetX.Visible:= False;

EditProfitX.Visible:= False;

//обнуляем поля

EditBet1.Text:= '';

EditBet2.Text:= '';

EditBetX.Text:= '';

EditProfit1.Text:= '';

EditProfit2.Text:= '';

EditProfitX.Text:= '';

LabelMargin.Caption:= '0%';

end;

procedure TMainForm.FormActivate(Sender: TObject);

begin

DoubleIssueClick(nil);

//значения по умолчанию

EditBank.Text:= '100';

EditCoef1.Text:= '1,00';

EditCoef2.Text:= '1,00';

EditCoefX.Text:= '1,00';

end;

procedure TMainForm.LabelCalcClick(Sender: TObject);

var

coef1: double;

coef2: double;

coefX: double;

bank: double;

bet1: double;

bet2: double;

betX: double;

betsum: double;

profit1: double;

begin

//проверка ввода валидных данных в поля банка и коэффициентов

try

bank:= StrToFloat(EditBank.Text);

except

MessageBox(Handle,'В поле "Банк" введены неверные данные!', 'Ошибка ввода данных', MB_OK);

Exit;

end;

try

begin

coef1:= StrToFloat(EditCoef1.Text);

coef2:= StrToFloat(EditCoef2.Text);

if (not IsDoubleForks) then

coefX:= StrToFloat(EditCoefX.Text);

end;

except

MessageBox(Handle,'В поле "Коэффициент" введены неверные данные!', 'Ошибка ввода данных', MB_OK);

Exit;

end;

//рассчет для двойного исхода

if (IsDoubleForks) then

begin

bet1:= Round((bank*coef2/(coef1+coef2))*100)/100;

EditBet1.Text:= FloatToStr(bet1);

bet2:= Round((bank*coef1/(coef1+coef2))*100)/100;

EditBet2.Text:= FloatToStr(bet2);

betsum:= bet1 + bet2;

profit1:= coef1*bet1 - betsum;

EditProfit1.Text:= FloatToStr(Round((profit1)*100)/100);

EditProfit2.Text:= FloatToStr(Round((coef2*bet2 - betsum)*100)/100);

LabelMargin.Caption:= FloatToStr(Round((100*profit1/bank)*100)/100) + '%';

end

else //рассчет для тройного исхода

begin

bet1:= Round((bank*coef2*coefX/(coef1*coef2+coef1*coefX+coef2*coefX))*100)/100;

EditBet1.Text:= FloatToStr(bet1);

bet2:= Round((bank*coef1*coefX/(coef1*coef2+coef1*coefX+coef2*coefX))*100)/100;

EditBet2.Text:= FloatToStr(bet2);

betX:= Round((bank*coef1*coef2/(coef1*coef2+coef1*coefX+coef2*coefX))*100)/100;

EditBetX.Text:= FloatToStr(betX);

betsum:= bet1 + bet2 + betX;

profit1:= coef1*bet1 - betsum;

EditProfit1.Text:= FloatToStr(Round((profit1)*100)/100);

EditProfit2.Text:= FloatToStr(Round((coef2*bet2 - betsum)*100)/100);

EditProfitX.Text:= FloatToStr(Round((coefX*betX - betsum)*100)/100);

LabelMargin.Caption:= FloatToStr(Round((100*profit1/bank)*100)/100) + '%';

end;

end;

end.

 

Пример использования программы для расчета суммы ставки по методу «критерий Келли»

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

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

Имеется какой-либо банк (денежная сумма) и коэффициент букмекера на спортивное событие, а также личностная вероятностная оценка этого события игроком, выраженная в процентах.

Необходимо ввести значение в поля ВАША ОЦЕНКА ВЕРОЯТНОСТИ, КОЭФФИЦИЕНТ БУКМЕКЕРА И БАНК и нажать кнопку ВЫЧИСЛИТЬ. Программа рассчитает сумму ставки и выведет результат в поле СТАВКА ИГРОКА.

Диалоговое окно программы для расчета суммы ставки по методу «критерий Келли» изображено на рисунке 4.5.

Рисунок 4.5. Диалоговое окно программы при нажатии кнопки ВЫЧИСЛИТЬ

Значение, вводимое в поле ОЦЕНКА ВЕРОЯТНОСТИ, должно лежать в пределах от 1 до 100. При несоблюдении этого критерия программа выдает сообщение об ошибке. Пример такой ситуации представлен на рисунке 4.6.

Рисунок 4.6. Диалоговое окно «Ошибка ввода данных» для поля ОЦЕНКА ВЕРОЯТНОСТИ

При незаполнении полей КОЭФФИЦИЕНТ БУКМЕКЕРА и БАНК программа выдает ошибки ввода, представленные на рисунках 4.7 и 4.8 соответственно.

Рисунок 4.7. Диалоговое окно «Ошибка ввода данных» для поля КОЭФФИЦИЕНТ БУКМЕКЕРА

Рисунок 4.8. Диалоговое окно «Ошибка ввода данных» для поля БАНК

Если в результате вычисления суммой ставки окажется отрицательное число, то можно сделать вывод, что такая ставка не выгодна для игрока. Пример такого вычисления представлен на рисунке 4.9.

Рисунок 4.9. Диалоговое окно программы с отрицательным результатом вычислений

Результат нажатия кнопки СБРОС, обнуляющей значения всех полей представлен на рисунке 4.10.

Рисунок 4.9. Диалоговое окно программы при нажатии кнопки СБРОС

Листинг программы для расчета суммы ставки по методу «критерий Келли»

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TForm1 = class(TForm)

Label1: TLabel;

Edit1: TEdit;

Label2: TLabel;

Edit2: TEdit;

Label3: TLabel;

Edit3: TEdit;

Button1: TButton;

Label4: TLabel;

Edit4: TEdit;

Button2: TButton;

procedure Edit1KeyPress(Sender: TObject; var Key: Char);

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);

begin

if not(key in ['0'..'9',#8,'.']) then key:=#0;

end;

procedure TForm1.Button1Click(Sender: TObject);

Var k,c,b:real;

r,v:integer;

begin

Val(Edit1.Text,v,r);

if r<>0 then

Begin

ShowMessage('Некорректный ввод вероятности');

exit;

End;

if not (v in [1..100]) then

Begin

ShowMessage('Вероятность должна лежать в пределах [1..100]');

exit;

End;

Val(Edit2.Text,k,r);

if r<>0 then

Begin

ShowMessage('Некорректный ввод коэфициена букмекера');

exit;

End;

Val(Edit3.Text,b,r);

if r<>0 then

Begin

ShowMessage('Некорректный ввод банка игрока');

exit;

End;

c:=(k*(v/100)-1)/(k-1);

Edit4.Text:=FloatToStrF(c*b,ffFixed,12,4);

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

Edit1.Text:='';

Edit2.Text:='';

Edit3.Text:='';

Edit4.Text:='';

end;

end.

 

ЗАКЛЮЧЕНИЕ

В данной работе были подробно разобраны арбитражные ситуации, они были доказаны и описаны с помощью простых линейных неравенств. Была рассказана суть букмекерских контор, принципы их работы. Была разобрана и математически обоснованна стратегия ставок с использованием критерия Келли. Были разработана программа в среде Delphi, которая считает прибыль вилки, также разработана еще одна программа в среде Delphi, рассчитывающая сумму ставки игрока при использовании критерия Келли.

 

 

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

1. А. Изодин, И. Миклин, Букмекерство для начинающих, М.: Айрис-пресс, 2012.

2. О. Марьин, Арбитражные ситуации в букмекерских конторах, М.: Айрис-пресс, 2011.

3. Эдвард О. Торп, Критерий Келли в спортивных тотализаторах, 2010.

4. В. Е. Гмурман, Теория вероятностей и математическая статистика, М.: Высшее образование, 2009.

5. http://www.sportsarbitrageguide.com

6. http://www.livelines.ru

7. http://www.surebet-forum.com

8. http://www.betbrain.com


Поделиться с друзьями:

Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...

Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...

Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.058 с.