Пример #1
0
 void marketItem_OnMarketItemBacked(MarketItem marketItem)
 {
     m_marketState = BfBot.MarketState.Backed;
     if (OnMarketBacked != null)
     {
         OnMarketBacked(this);
     }
 }
Пример #2
0
 void marketItem_OnMarketItemEqualised(MarketItem marketItem)
 {
     m_marketState = BfBot.MarketState.Equalised;
     if (OnMarketEqualised != null)
     {
         OnMarketEqualised(this);
     }
 }
Пример #3
0
        //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);
            }
        }
Пример #4
0
        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());
        }
Пример #5
0
        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);
        }
Пример #6
0
 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();
     }
 }