void marketItem_OnMarketItemBacked(MarketItem marketItem) { m_marketState = BfBot.MarketState.Backed; if (OnMarketBacked != null) { OnMarketBacked(this); } }
void marketItem_OnMarketItemEqualised(MarketItem marketItem) { m_marketState = BfBot.MarketState.Equalised; if (OnMarketEqualised != null) { OnMarketEqualised(this); } }
//private void CalculateInterests() // { // } private void CalculateFavourite() { try { if (m_marketState == BfBot.MarketState.Backed) { return; } if (m_marketItems.Count == 0) { PopulateMarketDetails(); } foreach (MarketItem marketItem in m_marketItems.Values) { if (m_favourite == null) { m_favourite = marketItem; } else if (m_favourite.Name == marketItem.Name) { m_favourite = marketItem; } if (marketItem.BackPrice < m_favourite.BackPrice)// & marketItem.BackLayDif <= Math.Abs(m_favourite.BackLayDif)) { m_favourite = marketItem; } } BfBot.DumpToFile("*****Favourite : " + m_favourite.Name + " : Back Price " + m_favourite.BackPrice); CalculateSecondFavourite(); if (m_favourite.BackPrice <= 1.25 & m_betDelay == "1") { if ((m_secondFavourite.BackPrice - m_favourite.BackPrice) >= 3.0) { BfBot.DumpToFile("1st - 2nd dif >= 3.0"); } m_favourite.Back(); m_marketState = BfBot.MarketState.Backed; } //CalculateSecondFavourite(); } catch (Exception ex) { BfBot.DumpToFile("Error in Market->CalculateFavourite : " + ex.Message); } }
private void GetValue(string marketDetails) { string[] marketParts = marketDetails.Split('~'); m_marketActive = false; m_marketInitialised = false; m_marketState = BfBot.MarketState.Analysing; m_marketId = int.Parse(marketParts[0]); m_marketName = marketParts[1]; m_marketType = marketParts[2]; m_marketStatus = marketParts[3]; m_eventDate = new DateTime(1970, 1, 1); double ms = double.Parse(marketParts[4]); m_eventDate = m_eventDate.AddMilliseconds(ms); m_menuPath = marketParts[5]; m_eventHirerarchy = marketParts[6]; m_betDelay = marketParts[7]; m_exchangeId = int.Parse(marketParts[8]); m_countryCode = marketParts[9]; m_lastRefresh = new DateTime(long.Parse(marketParts[10])); m_numberOfRunners = int.Parse(marketParts[11]); m_numberOfWinners = int.Parse(marketParts[12]); m_totalAmountMatched = double.Parse(marketParts[13]); m_lastItem = marketParts[14]; m_meetingID = System.Guid.NewGuid().ToString(); string[] temp; temp = m_menuPath.Split('\\'); m_raceDescription = temp[3] + " - " + m_marketName + " - " + m_eventDate.Hour + ":" + m_eventDate.Minute; CalculateRaceLength(m_marketName); BFBotDB.BfBotDbWorker.Instance() .AddMarket(m_marketId, m_raceDescription, m_eventDate.ToString(), m_marketState.ToString()); //BFBotDB.BFBotDBWorker.Instance().AddMarket(m_meetingID, m_marketID.ToString(), m_raceDescription, m_eventDate.ToString(), m_marketState.ToString()); }
private bool MarketInitialise() { m_bfMarket = MarketTracker.Instance.Exchange.GetMarket(m_exchangeId, m_marketId); System.Threading.Thread.Sleep(12000); m_suspendTime = m_bfMarket.marketSuspendTime.ToLocalTime(); TimeSpan timeSpan = m_suspendTime - DateTime.Now; if (m_betDelay != "0") { m_validMarket = false; return(false); } if (m_bfMarket.marketStatus == global::BFBot.com.betfair.api6.exchange.MarketStatusEnum.CLOSED || m_bfMarket.marketStatus == global::BFBot.com.betfair.api6.exchange.MarketStatusEnum.SUSPENDED) { m_marketState = BfBot.MarketState.Closed; m_validMarket = false; if (OnMarketClosed != null) { OnMarketClosed(this); } return(false); } if (timeSpan.TotalMilliseconds < 600000) { m_validMarket = false; return(false); } PopulateMarketDetails(); UpdateMarket(); m_marketInitialised = true; m_validMarket = true; return(true); }
private void UpdateMarket() { try { m_timer.Stop(); BetfairE.MarketPrices marketPrices = MarketTracker.Instance.Exchange.GetMarketPrices(m_exchangeId, m_marketId); m_betDelay = marketPrices.delay.ToString(); BfBot.DumpToFile("================================================================================="); if (marketPrices.marketStatus == global::BFBot.com.betfair.api6.exchange.MarketStatusEnum.SUSPENDED) { m_raceOffTime = DateTime.Now; BfBot.DumpToFile("SUSPENDED," + m_marketName + "," + m_menuPath + "," + TimeToOff() + "," + m_suspendTime); if (m_leastFavourite.LayAmount > 2) { BfBot.DumpToFile("Least Favourite Layed," + m_leastFavourite.Name + " - Lay Price = " + m_leastFavourite.LayPrice + " , Lay Amount = " + m_leastFavourite.LayAmount); } if (m_favourite != null) { BfBot.DumpToFile("Favourite : " + m_favourite.Name + " , Back = " + m_favourite.BackPrice + " , Layed = " + m_favourite.LayPrice); } m_raceCountdown = DateTime.Now.AddSeconds(m_estimatedRaceTime); if (OnUpdateMarket != null) { OnUpdateMarket(this); } m_timer.Start(); } else if (marketPrices.marketStatus == global::BFBot.com.betfair.api6.exchange.MarketStatusEnum.CLOSED) { BfBot.DumpToFile("CLOSED," + m_marketName + "," + m_menuPath + "," + TimeToOff() + "," + m_suspendTime); if (m_leastFavourite != null) { BfBot.DumpToFile(" Least Favourite End Price," + m_leastFavourite.Name + " , Layed = " + m_leastFavourite.LayPrice + " , Back = " + m_leastFavourite.BackPrice); } if (m_favourite != null) { BfBot.DumpToFile("Favourite End Price," + m_favourite.Name + " , Layed = " + m_favourite.LayPrice + " , Back = " + m_favourite.BackPrice); } m_marketState = BfBot.MarketState.Closed; if (OnMarketClosed != null) { OnMarketClosed(this); } return; } else if (m_betDelay == "1") { foreach (BetfairE.RunnerPrices runnerprices in marketPrices.runnerPrices) { MarketItem thisMarketItem = m_marketItems[runnerprices.selectionId] as MarketItem; if (thisMarketItem != null) { thisMarketItem.UpdateItem(runnerprices, marketPrices.delay); } } CalculateFavourite(); CalculateLeastFavourite(); BfBot.DumpToFile("** in play **," + m_marketId + "," + m_marketName + "," + m_menuPath + "," + TimeToOff() + "," + m_suspendTime + "," + m_timer.Interval.ToString()); if (m_leastFavourite != null) { BfBot.DumpToFile(m_marketId + " Least favourite : " + m_leastFavourite.Name + " - Lay Price = " + m_leastFavourite.LayPrice + " , Lay Amount = " + m_leastFavourite.LayAmount + " ' " + m_leastFavourite.BackPrice); } if (m_favourite != null) { BfBot.DumpToFile("Favourite : " + m_favourite.Name + " , Back = " + m_favourite.BackPrice + " , Layed = " + m_favourite.LayPrice); } BfBot.DumpToFile("Estimated time to race finish : " + m_raceCountdown.Subtract(DateTime.Now)); if (OnUpdateMarket != null) { OnUpdateMarket(this); } if (OnMarketInPlay != null) { OnMarketInPlay(this); } m_timer.Start(); } else { foreach (BetfairE.RunnerPrices runnerprices in marketPrices.runnerPrices) { MarketItem thisMarketItem = m_marketItems[runnerprices.selectionId] as MarketItem; if (thisMarketItem != null) { thisMarketItem.UpdateItem(runnerprices, marketPrices.delay); } } CalculateFavourite(); CalculateLeastFavourite(); BfBot.DumpToFile(m_marketId + "," + m_marketName + "," + m_menuPath + "," + TimeToOff() + "," + m_suspendTime + "," + m_timer.Interval.ToString()); if (m_leastFavourite != null) { BfBot.DumpToFile(m_marketId + " Least favourite : " + m_leastFavourite.Name + " - Lay Price = " + m_leastFavourite.LayPrice + " , Lay Amount = " + m_leastFavourite.LayAmount + " ' " + m_leastFavourite.BackPrice); } if (m_favourite != null) { BfBot.DumpToFile(m_marketId + " Favourite : " + m_favourite.Name + " , Back = " + m_favourite.BackPrice + " , Layed = " + m_favourite.LayPrice); } if (OnUpdateMarket != null) { OnUpdateMarket(this); } m_timer.Start(); } BfBot.DumpToFile("================================================================================="); } catch (Exception ex) { BfBot.DumpToFile("Error in Market->UpdateMarket : " + ex.Message); m_timer.Start(); } }