Jump to content


* * * * * 5 votes

Требуется бот


  • You cannot reply to this topic
294 replies to this topic

#201 OFFLINE   proger

    Специалист


  • RSB
  • PipPipPip
  • 193 posts
49

Posted 25 February 2013 - 07:28

Sub ProfitAndLoss(ByVal marketId As Integer)
  Print(vbCrLf & "*** Market P&L ***")
  Dim MPLreq As New BFUK.GetMarketProfitAndLossReq
  Dim MPLresp As BFUK.GetMarketProfitAndLossResp
  With MPLreq	 'Set up the request
    .header = oHeaderUK
    .marketID = MarketOfInterest
  End With
  MPLresp = BetfairUK.getMarketProfitAndLoss(MPLreq)    'Call the API
  With MPLresp    The response
    CheckHeader(.header)
    Print(.errorCode.ToString)
    If .errorCode = BFUK.GetMarketProfitAndLossErrorEnum.OK Then    'Process the response
	  For i = 0 To UBound(.annotations)
	    With .annotations(i)		 'Print the list of runner P&Ls
		  Print(.selectionId & " " & .selectionName & " " & .ifWin)
	    End With
	  Next
    End If
  End With
End Sub

forum.bdp.betfair.com/showthread.php?p=2201&highlight=profit+loss#post2201

Edited by koni, 25 February 2013 - 07:28.


#202 OFFLINE   AlexX

    Специалист


  • mp
  • 1,106 posts
133

Posted 25 February 2013 - 13:01

View Postmaxspace, on 24 February 2013 - 23:48, said:

народ, подскажите кто-нибудь пользуется функцией Betfair API Get Market Profit And Loss?

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

Кони опередил))) но я еще кину свой кусок на С#

	    public BFExchange.GetMarketProfitAndLossResp GetMarketProfitAndLoss(int m_MarketID)
	    {
		    string session = SessionTokenManager.GetSessionToken();
		    if (session == null)
		    {
			    session = MakeSession();
		    }
		    GetMarketProfitAndLossReq req = new GetMarketProfitAndLossReq();
		    GetMarketProfitAndLossResp m_resp = new GetMarketProfitAndLossResp();
		    req.header = new BFExchange.APIRequestHeader();
		    req.header.sessionToken = session;
		    req.marketID = m_MarketID;
		    GetMarketProfitAndLossResp resp = BFExchange.getMarketProfitAndLoss(req);
		    Log.WriteLog("getMarketProfitAndLoss: " + resp.errorCode.ToString());
		    if (resp.errorCode == GetMarketProfitAndLossErrorEnum.OK)
		    {
			    m_resp = resp;
		    }
		    return m_resp;
	    }

ненужное удалишь.
Кстати хороший выбор метода для ,быстрого получения selectionName 60 зарп/мин, чем getMarket 5 запр/мин

#203 OFFLINE   chipseto

    Пунтер


  • Участник
  • PipPip
  • 35 posts
12

Posted 25 February 2013 - 15:10

А зачем получать selectionName 60 раз в минуту? Разве они где-то меняются?

#204 OFFLINE   AlexX

    Специалист


  • mp
  • 1,106 posts
133

Posted 25 February 2013 - 16:00

View Postchipseto, on 25 February 2013 - 15:10, said:

А зачем получать selectionName 60 раз в минуту? Разве они где-то меняются?
Конечно не меняются
Вот наглядный пример: если привязываться к id строки в методе getCompleteMarketPricesCompressed или getMarketPricesCompressed попадались 2 раза ошибки (с чем это связано явно с человеческим фактором) что id не соответствует ожидаемому исходу типа 0-0, 0-1, 1-0.
Это все вытикает в убытки если не контролировать постоянно (об автомате можно и забыть). После этого сделал привязку к selectionName. Представь у тебя в рабочем списке 60 событий где в каждом мониторятся минимум 5 маркетов. Необходимо один раз проставить selectionName. Методом getMarket это займет очень много времени хоть и разово.
Дело принципа люблю что бы работало как часы и быстро по возможности, а возможность позволяет.

Edited by AlexX, 25 February 2013 - 16:04.


#205 OFFLINE   AlexX

    Специалист


  • mp
  • 1,106 posts
133

Posted 25 February 2013 - 16:21

View Postchipseto, on 25 February 2013 - 15:10, said:

А зачем получать selectionName 60 раз в минуту? Разве они где-то меняются?

На моем примере выше: методом getMarket ты будешь ждать 60 минут, а при getMarketProfitAndLoss 5 минут. Разница существенная. Но это все относительно... Смотря для чего использовать возможно Вас и устроит getMarket.

Edited by AlexX, 25 February 2013 - 16:22.


#206 OFFLINE   maxspace

    Пунтер


  • Участник II
  • PipPip
  • 72 posts
11
  • МестоположениеРБ Гомель

Posted 26 February 2013 - 21:06

Спасибо koni и AlexX за примеры. У меня данная функция постоянно возвращает INVALID_MARKET, вот мой пример:
public void GetProfitAndLoss(ref Job PLJob)
	    {
		    GetMarketProfitAndLossReq UKReq = new GetMarketProfitAndLossReq();
		    UKReq.header = new APIRequestHeader();
		    UKReq.header.sessionToken = _Token;
		    UKReq.marketID = PLJob.MarketId;
		    UKReq.includeBspBets = false;
		    GetMarketProfitAndLossResp Resp = _UKClient.getMarketProfitAndLoss(UKReq);
		    _Token = Resp.header.sessionToken;
		    if (Resp.errorCode == GetMarketProfitAndLossErrorEnum.OK)
		    {
			    for (int i = 0; i < Resp.annotations.Length; i++)
			    {
				    if (Resp.annotations[i].selectionId == PLJob.MarketInfo.Runners[PLJob.FavoriteId].Id)
				    {
					    PLJob.PaL = Resp.annotations[i].ifWin;
				    }
				    else
				    {
					    PLJob.PaL = Resp.annotations[i].selectionId;
				    }
			    }
		    }
		    else
		    {
			    PLJob.PaL = UKReq.marketID;
		    }
		    return;

подскажите, пожалуйста, какие еще могут быть причины данного ответа, помимо тех что описаны в мануале Betfair API

уже пробовал получить результаты через функцию GetBetHistory, там ответ - NO_RESULT

#207 OFFLINE   maxspace

    Пунтер


  • Участник II
  • PipPip
  • 72 posts
11
  • МестоположениеРБ Гомель

Posted 26 February 2013 - 21:56

public void GetBetHistory(ref Job BHJob)
        {
            GetBetHistoryReq UKReq = new GetBetHistoryReq();
            UKReq.header = new APIRequestHeader();
            UKReq.header.sessionToken = _Token;
            UKReq.betTypesIncluded = BetStatusEnum.S;
            UKReq.detailed = true;
            UKReq.eventTypeIds = new int?[] { 15 };
            UKReq.marketTypesIncluded = new MarketTypeEnum?[] { MarketTypeEnum.O };
            UKReq.placedDateFrom = DateTime.Today.AddDays(-1);
            UKReq.placedDateTo = DateTime.Now;
            UKReq.recordCount = 100;
            UKReq.sortBetsBy = BetsOrderByEnum.BET_ID;
            UKReq.startRecord = 0;


            GetBetHistoryResp Resp = _UKClient.getBetHistory(UKReq);
            _Token = Resp.header.sessionToken;

            if (Resp.errorCode == GetBetHistoryErrorEnum.OK)
            {

                for (int i = 0; i < Resp.betHistoryItems.Length; i++)
                {
                    if (Resp.betHistoryItems[i].marketId == BHJob.MarketId && Resp.betHistoryItems[i].selectionId == BHJob.MarketInfo.Runners[BHJob.FavoriteId].Id)
                    {
                        BHJob.PaL = Resp.betHistoryItems[i].profitAndLoss;
                    }

                    else
                    {
                        BHJob.PaL = Resp.betHistoryItems[i].selectionId;
                    }
                }
                
            }
            else 
            {
                BHJob.PaL = 0;
            }
            return;
        }


#208 OFFLINE   AlexX

    Специалист


  • mp
  • 1,106 posts
133

Posted 27 February 2013 - 07:58

Вот это убери (UKReq.includeBspBets = false; ) можно и без него вызывать. Но дело не в этом возможно возможно ты пихаешь прошедший рынок. Для метода getMarketProfitAndLoss только действительнае или ненаступившие маркеты.

#209 OFFLINE   maxspace

    Пунтер


  • Участник II
  • PipPip
  • 72 posts
11
  • МестоположениеРБ Гомель

Posted 27 February 2013 - 08:34

View PostAlexX, on 27 February 2013 - 07:58, said:

возможно ты пихаешь прошедший рынок. Для метода getMarketProfitAndLoss только действительнае или ненаступившие маркеты.
скорее всего проблема в этом т.к. метод у меня начинает выполняться после перехода рынка в статус CLOSE

#210 OFFLINE   BIM

    Пунтер


  • Участник II
  • PipPip
  • 52 posts
2

Posted 06 March 2013 - 16:16

В теме искал не нашел, программа Dyra2 показывает с очень большой задержкой. Пока не уловил сколько задержка, но речь идет не о секундах, а о десятках минут. От куда берутся кефы? Думал может по последнему сматченному, но и тут не подходит. В данный момент наблюдаю за Ольборг - оденсе, прога выдает на тотал1,5 4,1/4,6, на самом деле 4,4/4,6
последней сматченный 4,2. С частотой обновления все ок, поэкспериментировал. До написания сообщения минут 10 висит, не спеша пишу - это еще 10 минут

#211 OFFLINE   AlexX

    Специалист


  • mp
  • 1,106 posts
133

Posted 06 March 2013 - 16:22

View PostBIM, on 06 March 2013 - 16:16, said:

В теме искал не нашел, программа Dyra2 показывает с очень большой задержкой. Пока не уловил сколько задержка, но речь идет не о секундах, а о десятках минут. От куда берутся кефы? Думал может по последнему сматченному, но и тут не подходит. В данный момент наблюдаю за Ольборг - оденсе, прога выдает на тотал1,5 4,1/4,6, на самом деле 4,4/4,6
последней сматченный 4,2. С частотой обновления все ок, поэкспериментировал. До написания сообщения минут 10 висит, не спеша пишу - это еще 10 минут

Вы наверное смотрите на рынки которые не набрали ликвидность. Betfair API дает только реальные заявки пользователей. Есть такое понятие виртуальные котировки Betfair. (здесь об этом подробно написано faqbetfair.blogspot.ru/2010/09/betfair.html)

Edited by AlexX, 06 March 2013 - 16:24.


#212 OFFLINE   бостон

    Специалист


  • Участник II
  • PipPipPipPip
  • 830 posts
121
  • МестоположениеКрым, Алушта

Posted 06 March 2013 - 16:35

View PostBIM, on 06 March 2013 - 16:16, said:

В теме искал не нашел, программа Dyra2 показывает с очень большой задержкой. Пока не уловил сколько задержка, но речь идет не о секундах, а о десятках минут. От куда берутся кефы? Думал может по последнему сматченному, но и тут не подходит. В данный момент наблюдаю за Ольборг - оденсе, прога выдает на тотал1,5 4,1/4,6, на самом деле 4,4/4,6
последней сматченный 4,2. С частотой обновления все ок, поэкспериментировал. До написания сообщения минут 10 висит, не спеша пишу - это еще 10 минут
А у Вас ликвидность стоит какая? если 1000, то может стоит ее увеличить хотя бы до 10000? Возможно, что программе приходится собирать кэфы со слишком большого количества рынков. Проверьте, может в этом дело.

#213 OFFLINE   BIM

    Пунтер


  • Участник II
  • PipPip
  • 52 posts
2

Posted 06 March 2013 - 17:05

бостон, спасибо, действительно в этом дело наверное было. Подскажите пожалуйста, какой рефреш выставлять, что бы лимит не исчерпать? У меня максимум что бывает открыто - это две вкладки биржи в браузерах и пару ботов с частотой обновления 1 сек.

#214 OFFLINE   бостон

    Специалист


  • Участник II
  • PipPipPipPip
  • 830 posts
121
  • МестоположениеКрым, Алушта

Posted 06 March 2013 - 17:16

View PostBIM, on 06 March 2013 - 17:05, said:

бостон, спасибо, действительно в этом дело наверное было. Подскажите пожалуйста, какой рефреш выставлять, что бы лимит не исчерпать? У меня максимум что бывает открыто - это две вкладки биржи в браузерах и пару ботов с частотой обновления 1 сек.
По поводу рефреша лучше спросить koni. Я после сканирования рынков нажимаю Stop, а когда надо посмотреть то опять Start, эта программа ведь не бот, а помощник в быстром поиске нужных рынков..

#215 OFFLINE   Nordick

    Новичок


  • Участник
  • Pip
  • 19 posts
0

Posted 23 April 2013 - 15:10

View Postclubm, on 25 December 2012 - 03:20, said:

Перевожу на понятный язык. Если дельта Больше -0.25, то за 0-0НТ и против 0-0, если Меньше -0.55, то наоборот. (про абсолютные значения пропускаем). Если дельта попадает в интервал от -0.55 до -0.25, лучше не ставить. В теме уже не раз разъяснялось. :)

Это вы говорите про дельту, которая столбец "М", приведенная к кф. 10?
Я вот тоже не понимаю, как и Mtigo: сейчас наблюдаю Back (0-0) = 14.5, Lay (0-0HT) = 3.35. Маткадовский расчет "Дыра 2" рисует нижний график с прибылью где-то 3% на конец первого периода. Получается надо ставить Back 0-0 и Lay 0-0HT? Хотя М при этом -0.28 - в запрещенном промежутке, и более того: М ближе к -0.25 - к границе, где надо ставить наоборот согласно вашим словам.

#216 OFFLINE   бостон

    Специалист


  • Участник II
  • PipPipPipPip
  • 830 posts
121
  • МестоположениеКрым, Алушта

Posted 23 April 2013 - 17:27

View PostNordick, on 23 April 2013 - 15:10, said:

Это вы говорите про дельту, которая столбец "М", приведенная к кф. 10?
Я вот тоже не понимаю, как и Mtigo: сейчас наблюдаю Back (0-0) = 14.5, Lay (0-0HT) = 3.35. Маткадовский расчет "Дыра 2" рисует нижний график с прибылью где-то 3% на конец первого периода. Получается надо ставить Back 0-0 и Lay 0-0HT? Хотя М при этом -0.28 - в запрещенном промежутке, и более того: М ближе к -0.25 - к границе, где надо ставить наоборот согласно вашим словам.
Если на реальные деньги, то не надо ставить Back 0-0 и Lay 0-0HT. А надо приложить гигантские, невероятные усилия и прочитать полностью всю тему "Теория футбольного матча".

#217 OFFLINE   Nordick

    Новичок


  • Участник
  • Pip
  • 19 posts
0

Posted 23 April 2013 - 18:23

View Postбостон, on 23 April 2013 - 17:27, said:

Если на реальные деньги, то не надо ставить Back 0-0 и Lay 0-0HT. А надо приложить гигантские, невероятные усилия и прочитать полностью всю тему "Теория футбольного матча".

Хорошо, я читаю ))
Пока читаю, можно еще вопрос: ставить лучше за полчаса до начала матча, или можно и раньше, если программа показывает подходящую дельту?

#218 OFFLINE   бостон

    Специалист


  • Участник II
  • PipPipPipPip
  • 830 posts
121
  • МестоположениеКрым, Алушта

Posted 23 April 2013 - 19:06

View PostNordick, on 23 April 2013 - 18:23, said:

Хорошо, я читаю ))
Пока читаю, можно еще вопрос: ставить лучше за полчаса до начала матча, или можно и раньше, если программа показывает подходящую дельту?
Если свободные деньги есть и дельта хорошая, я бы за сколько хочешь часов поставил.

#219 OFFLINE   Dmitriy-timofeev

    Новичок


  • Участник
  • Pip
  • 1 posts
0

Posted 08 June 2013 - 03:02

Возможно что AGT ,будет разворачивать 3 окна при выборе команды игроков как в ролике на YouTube

#220 OFFLINE   Arenas

    Новичок


  • Banned
  • Pip
  • 5 posts
1
  • МестоположениеНижнекамск

Posted 28 June 2013 - 15:28

View PostJericho, on 13 June 2012 - 11:58, said:

Все зависит от вашего задания, пишите:

Йерихон
В настоящее время вы пишете боты под заказ?