private void CalculateLeastFavourite() { try { if (m_marketItems.Count == 0) { PopulateMarketDetails(); } foreach (MarketItem marketItem in m_marketItems.Values) { if (m_leastFavourite == null) { m_leastFavourite = marketItem; } else if (m_leastFavourite.Name == marketItem.Name) { m_leastFavourite = marketItem; } if (marketItem.BackPrice > m_leastFavourite.BackPrice) { m_leastFavourite = marketItem; } } } catch (Exception ex) { BfBot.DumpToFile("Error in Market->CalculateLeastFavourite : " + ex.Message); } }
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 PopulateMarketDetails() { try { if (m_bfMarket != null) { foreach (BetfairE.Runner thisRunner in m_bfMarket.runners) { MarketItem marketItem = new MarketItem(thisRunner, m_exchangeId, this); marketItem.OnMarketItemBacked += new MarketItem.MarketItemBacked(marketItem_OnMarketItemBacked); marketItem.OnMarketItemEqualised += new MarketItem.MarketItemEqualised(marketItem_OnMarketItemEqualised); m_marketItems.Add(marketItem.ItemID, marketItem); } } } catch (Exception ex) { BfBot.DumpToFile("Error in Market->PopulateMarketDetails : " + ex.Message); } }
private void CalculateSecondFavourite() { try { if (m_marketState == BfBot.MarketState.Backed) { return; } if (m_marketItems.Count == 0) { PopulateMarketDetails(); } foreach (MarketItem marketItem in m_marketItems.Values) { if (marketItem.Name != m_favourite.Name) { if (m_secondFavourite == null) { m_secondFavourite = marketItem; } if (marketItem.BackPrice < m_secondFavourite.BackPrice) { m_secondFavourite = marketItem; } else if (marketItem.BackPrice == m_secondFavourite.BackPrice) { if (marketItem.LayPrice < m_secondFavourite.LayPrice) { m_secondFavourite = marketItem; } } } } BfBot.DumpToFile("*****Second Favourite : " + m_secondFavourite.Name + " : Back Price " + m_secondFavourite.BackPrice); } catch (Exception ex) { BfBot.DumpToFile("Error in Market->CalculateSecondFavourite : " + ex.Message); } }
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(); } }