private void GetMoneyTwoWaysResults(IDictionary <int, List <Market> > periodMarkets, bool started) { const string tableName = "MNL2"; string[] indexArray = { "iGP", "iGL2", "iSW", "iAdjT", "iAdjS" }; Array array = GetTableArray(tableName, indexArray); int lowerBound0 = array.GetLowerBound(0); int upperBound0 = array.GetUpperBound(0); for (int gp = lowerBound0; gp <= upperBound0; gp++) { const string s1 = "A"; const string s2 = "H"; double value1 = GetArrayValue(array, gp, 1, _iSw, _iAdjS, _iAdjT); double value2 = GetArrayValue(array, gp, 2, _iSw, _iAdjS, _iAdjT); double value3 = GetArrayValue(array, gp, 3, _iSw, _iAdjS, _iAdjT); if (value3.IsNotEqualToZero()) { //Logger.Debug("value3 is not equal to zero"); } MarketRunner marketRunner = new MarketRunner { Total = value1, Price = value2, Side = s1 }; Market market = new Market { Tp = "ML", Target = marketRunner.Total }; market.MarketRunnerList.Add(marketRunner); marketRunner = new MarketRunner { Total = value1, Price = value3, Side = s2 }; market.MarketRunnerList.Add(marketRunner); if (!periodMarkets.ContainsKey(gp)) { List <Market> markets = new List <Market>(); periodMarkets.Add(gp, markets); } market = OddsConverter.FinishedOdds(market, started, _preVig, _liveVig); market.Key = $"{market.MarketRunnerList[0].Total}{gp}{market.Tp}"; periodMarkets[gp].Add(market); } }
public ctrlMarketRunner(MarketRunner runner) { System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false; InitializeComponent(); m_runner = runner; lblName.Text = m_runner.Name; m_runner.OnUpdateRunner += new MarketRunner.RunnerUpdateDelegate(runner_OnUpdateRunner); }
public static Market FinishedOdds(Market market, bool live, double preVig, double liveVig) { double overRound = preVig; int marketRunnerListCount = market.MarketRunnerList.Count; if (live) { overRound = liveVig; } overRound += 0.015 * (marketRunnerListCount - 2); /* weight */ if (marketRunnerListCount == 2) { market.Weight = Math.Abs(market.MarketRunnerList[0].Price - market.MarketRunnerList[1].Price); } if (marketRunnerListCount == 3) { market.Weight = Math.Abs(market.MarketRunnerList[0].Price + market.MarketRunnerList[1].Price - market.MarketRunnerList[2].Price); } // overRound += 0.015 * (marketRunnerListCount - 2); List <MarketRunner> tempMarketRunnerList = new List <MarketRunner>(); foreach (MarketRunner marketRunner in market.MarketRunnerList) { marketRunner.Probability = marketRunner.Price; MarketRunner tempMarketRunner = new MarketRunner { Price = marketRunner.Price }; tempMarketRunnerList.Add(tempMarketRunner); } // steps 1 & 2 double sum = 0; foreach (MarketRunner marketRunner in tempMarketRunnerList) { marketRunner.Price = 1 / marketRunner.Price; sum += marketRunner.Price; } // step 3 foreach (MarketRunner marketRunner in tempMarketRunnerList) { marketRunner.Ratio = marketRunner.Price / sum; } // step 4 double uFactor; if (marketRunnerListCount == 2) { MarketRunner marketRunner = market.MarketRunnerList[0]; if (marketRunner.Price > .5) { // uFactor = ((1 - marketRunner.P) / 0.5 + Math.Abs((0.5 - marketRunner.P) * (1 - marketRunner.P)) / 0.5) * .75 + .25; uFactor = ((1 - marketRunner.Price) / 0.5 + Math.Abs((0.5 - marketRunner.Price) * (1 - marketRunner.Price)) / 0.5) * .75 + .25; } else { uFactor = (marketRunner.Price / 0.5 + Math.Abs((0.5 - marketRunner.Price) * marketRunner.Price) / 0.5) * .75 + .25; // uFactor = (marketRunner.P / 0.5 + Math.Abs((0.5 - marketRunner.P) * marketRunner.P) / 0.5) * .75 + .25; } } else { // uFactor = 1.0; uFactor = 1 * .75 + 0.25; } double vFactor = (overRound - 1) * uFactor; // steps 6 & 7 for (int n = 0; n < tempMarketRunnerList.Count; n++) { //market.MarketRunnerList[n].P = Math.Round(1 / (vFactor * tempMarketRunnerList[n].Ratio + market.MarketRunnerList[n].Probability), 2); market.MarketRunnerList[n].Price = Math.Round(1 / (vFactor * tempMarketRunnerList[n].Ratio + market.MarketRunnerList[n].Price), 2); if (double.IsNaN(market.MarketRunnerList[n].Price)) { market.MarketRunnerList[n].Price = 0; } } return(market); }
private void GetTeamTotalsThreeWaysResults(IDictionary <int, List <Market> > periodMarkets, bool started) { const string tableName = "TTL3"; string[] indexArray = { "iGP", "iALT", "iTVH", "iGL3", "iSW" }; Array array = GetTableArray(tableName, indexArray); int lowerBound0 = array.GetLowerBound(0); int upperBound0 = array.GetUpperBound(0); int lowerBound1 = array.GetLowerBound(1); int upperBound1 = array.GetUpperBound(1); for (int period = lowerBound0; period <= upperBound0; period++) { for (int alt = lowerBound1; alt <= upperBound1; alt++) { const string s1 = "U"; const string s2 = "O"; const string s3 = "X"; double value1 = GetArrayValue(array, period, alt, 1, 1, _iSw); double value2 = GetArrayValue(array, period, alt, 1, 2, _iSw); double value4 = GetArrayValue(array, period, alt, 1, 4, _iSw); MarketRunner marketRunner = new MarketRunner { Total = value1, Price = value2, Side = s1 }; Market market = new Market { Tp = "ATTL3W", Target = marketRunner.Total }; market.MarketRunnerList.Add(marketRunner); marketRunner = new MarketRunner { Total = value1, Price = value2, Side = s2 }; market.MarketRunnerList.Add(marketRunner); // X marketRunner = new MarketRunner { Total = value1, Price = value4, Side = s3 }; market.MarketRunnerList.Add(marketRunner); if (!periodMarkets.ContainsKey(period)) { List <Market> markets = new List <Market>(); periodMarkets.Add(period, markets); } market = OddsConverter.FinishedOdds(market, started, _preVig, _liveVig); market.Key = $"{market.MarketRunnerList[0].Total}{period}{market.Tp}"; periodMarkets[period].Add(market); // market.Tp = "HTTL3W"; value1 = GetArrayValue(array, period, alt, 2, 1, _iSw); value2 = GetArrayValue(array, period, alt, 2, 2, _iSw); double value3 = GetArrayValue(array, period, alt, 2, 3, _iSw); marketRunner = new MarketRunner { Total = value1, Price = value2, Side = s1 }; market = new Market { Tp = "HTTL3W", Target = marketRunner.Total }; //market.Target = marketRunner.Total; market.MarketRunnerList.Add(marketRunner); marketRunner = new MarketRunner { Total = value1, Price = value3, Side = s2 }; market.MarketRunnerList.Add(marketRunner); marketRunner = new MarketRunner { Total = value1, Price = value2, Side = s3 }; market.MarketRunnerList.Add(marketRunner); if (!periodMarkets.ContainsKey(period)) { List <Market> markets = new List <Market>(); periodMarkets.Add(period, markets); } market = OddsConverter.FinishedOdds(market, started, _preVig, _liveVig); market.Key = $"{market.MarketRunnerList[0].Total}{period}{market.Tp}"; periodMarkets[period].Add(market); } } }
private void GetInningTeamTotalsThreeWaysResults(IDictionary <int, List <Market> > periodMarkets, bool started, bool live) { const int inning = 4; string tableName = live ? "MITT3W" : "ITT3W"; string[] indexArray = { "iGP", "TTRI", "iTVH", "iGL3" }; Array array = GetTableArray(tableName, indexArray); int lowerBound0 = array.GetLowerBound(0); int upperBound0 = array.GetUpperBound(0); int lowerBound1 = array.GetLowerBound(1); int upperBound1 = array.GetUpperBound(1); for (int period = lowerBound0; period <= upperBound0; period++) { for (int alt = lowerBound1; alt <= upperBound1; alt++) { const string s1 = "U"; const string s2 = "O"; const string s3 = "X"; double value1 = GetArrayValue(array, period, alt, 1, 1); double value2 = GetArrayValue(array, period, alt, 1, 2); double value3 = GetArrayValue(array, period, alt, 1, 3); double value4 = GetArrayValue(array, period, alt, 1, 4); // O MarketRunner marketRunner = new MarketRunner { Total = value1, Price = value2, Side = s1 }; Market market = new Market { Tp = "ATTL3W", Target = marketRunner.Total }; market.MarketRunnerList.Add(marketRunner); // U marketRunner = new MarketRunner { Total = value1, Price = value3, Side = s2 }; market.MarketRunnerList.Add(marketRunner); // X marketRunner = new MarketRunner { Total = value1, Price = value4, Side = s3 }; market.MarketRunnerList.Add(marketRunner); int init = inning + period; if (!periodMarkets.ContainsKey(init)) { List <Market> marketSide = new List <Market>(); periodMarkets.Add(init, marketSide); } // if (value4.IsNotEqualToZero()) // { market = OddsConverter.FinishedOdds(market, started, _threeWayVig, _threeWayVig); market.Key = $"{market.MarketRunnerList[0].Total}{init}{market.Tp}"; periodMarkets[init].Add(market); // } market = new Market { Tp = "HTTL3W" }; value1 = GetArrayValue(array, period, alt, 2, 1); value2 = GetArrayValue(array, period, alt, 2, 2); value3 = GetArrayValue(array, period, alt, 2, 3); value4 = GetArrayValue(array, period, alt, 2, 4); marketRunner = new MarketRunner { Total = value1, Price = value2, Side = s1 }; market.Target = marketRunner.Total; market.MarketRunnerList.Add(marketRunner); marketRunner = new MarketRunner { Total = value1, Price = value3, Side = s2 }; market.MarketRunnerList.Add(marketRunner); marketRunner = new MarketRunner { Total = value1, Price = value4, Side = s3 }; market.MarketRunnerList.Add(marketRunner); init = inning + period; if (!periodMarkets.ContainsKey(init)) { List <Market> marketSide = new List <Market>(); periodMarkets.Add(init, marketSide); } // if (value4.IsNotEqualToZero()) // { market = OddsConverter.FinishedOdds(market, started, _preVig, _liveVig); market.Key = $"{market.MarketRunnerList[0].Total}{init}{market.Tp}"; periodMarkets[init].Add(market); // } } } }
private void GetMainLinesThreeWaysResults(IDictionary <int, List <Market> > periodMarkets, bool started, bool live) { string tableName = live ? "MGML3W" : "GML3W"; string[] indexArray = { "GP", "altp", "iTGT", "iGL3" }; Array array = GetTableArray(tableName, indexArray); int lowerBound0 = array.GetLowerBound(0); int upperBound0 = array.GetUpperBound(0); int lowerBound1 = array.GetLowerBound(1); int upperBound1 = array.GetUpperBound(1); for (int period = lowerBound0; period <= upperBound0; period++) { for (int alt = lowerBound1; alt <= upperBound1; alt++) { string s1 = "U"; string s2 = "O"; const string s3 = "X"; double value1 = GetArrayValue(array, period, alt, 2, 1); double value2 = GetArrayValue(array, period, alt, 2, 2); double value3 = GetArrayValue(array, period, alt, 2, 3); double value4 = GetArrayValue(array, period, alt, 2, 4); MarketRunner marketRunner = new MarketRunner { Total = value1, Price = value2, Side = s1 }; Market market = new Market { Tp = "TL3W", Target = marketRunner.Total }; market.MarketRunnerList.Add(marketRunner); marketRunner = new MarketRunner { Total = value1, Price = value3, Side = s2 }; market.Target = marketRunner.Total; market.MarketRunnerList.Add(marketRunner); marketRunner = new MarketRunner { Total = value1, Price = value4, Side = s3 }; market.MarketRunnerList.Add(marketRunner); if (!periodMarkets.ContainsKey(period)) { List <Market> marketSide = new List <Market>(); periodMarkets.Add(period, marketSide); } if (value4.IsNotEqualToZero()) { market = OddsConverter.FinishedOdds(market, started, _threeWayVig, _threeWayVig); market.Key = $"{market.MarketRunnerList[0].Total}{period}{market.Tp}"; periodMarkets[period].Add(market); } // spreads s1 = "A"; s2 = "H"; value1 = GetArrayValue(array, period, alt, 1, 1); value2 = GetArrayValue(array, period, alt, 1, 2); value3 = GetArrayValue(array, period, alt, 1, 3); value4 = GetArrayValue(array, period, alt, 1, 4); marketRunner = new MarketRunner { Total = value1, Price = value2, Side = s1 }; market = new Market { Tp = "SP3W", Target = marketRunner.Total }; market.MarketRunnerList.Add(marketRunner); marketRunner = new MarketRunner { Total = -value1, Price = value3, Side = s2 }; market.Target = marketRunner.Total; market.MarketRunnerList.Add(marketRunner); marketRunner = new MarketRunner { Total = value1, Price = value4, Side = s3 }; market.MarketRunnerList.Add(marketRunner); if (value4.IsNotEqualToZero()) { market = OddsConverter.FinishedOdds(market, started, _threeWayVig, _threeWayVig); market.Key = $"{market.MarketRunnerList[0].Total}{period}{market.Tp}"; periodMarkets[period].Add(market); } } } }
private void GetInningMainLinesTwoWaysResults(IDictionary <int, List <Market> > periodMarkets, bool started, bool live) { const int inning = 4; string tableName = live ? "Miml2w" : "iml2w"; string[] indexArray = { "iGP", "alti", "iTGT", "iGL2" }; Array array = GetTableArray(tableName, indexArray); int lowerBound0 = array.GetLowerBound(0); int upperBound0 = array.GetUpperBound(0); int lowerBound1 = array.GetLowerBound(1); int upperBound1 = array.GetUpperBound(1); for (int period = lowerBound0; period <= upperBound0; period++) { for (int alt = lowerBound1; alt <= upperBound1; alt++) { try { string s1 = "U"; string s2 = "O"; double value1 = GetArrayValue(array, period, alt, 2, 1); double value2 = GetArrayValue(array, period, alt, 2, 2); double value3 = GetArrayValue(array, period, alt, 2, 3); MarketRunner marketRunner = new MarketRunner { Total = value1, Price = value2, Side = s1 }; Market market = new Market { Tp = "TL", Target = marketRunner.Total }; market.MarketRunnerList.Add(marketRunner); marketRunner = new MarketRunner { Total = value1, Price = value3, Side = s2 }; market.MarketRunnerList.Add(marketRunner); int init = inning + period; if (!periodMarkets.ContainsKey(init)) { List <Market> marketSide = new List <Market>(); periodMarkets.Add(init, marketSide); } market = OddsConverter.FinishedOdds(market, started, _preVig, _liveVig); market.Key = $"{market.MarketRunnerList[0].Total}{init}{market.Tp}"; periodMarkets[init].Add(market); s1 = "A"; s2 = "H"; value1 = GetArrayValue(array, period, alt, 1, 1); value2 = GetArrayValue(array, period, alt, 1, 2); value3 = GetArrayValue(array, period, alt, 1, 3); marketRunner = new MarketRunner { Total = value1, Price = value2, Side = s1 }; market = new Market { Tp = "SP", Target = marketRunner.Total }; market.MarketRunnerList.Add(marketRunner); marketRunner = new MarketRunner { Total = -value1, Price = value3, Side = s2 }; market.MarketRunnerList.Add(marketRunner); decimal test = ToDecimal(market.MarketRunnerList[0].Total); int count = BitConverter.GetBytes(decimal.GetBits(test)[3])[2]; market = OddsConverter.FinishedOdds(market, started, _preVig, _liveVig); market.Key = $"{market.MarketRunnerList[0].Total}{init}{market.Tp}"; periodMarkets[init].Add(market); } catch (Exception exception) { Logger.Error(exception); } } } }
private void GetMainLinesTwoWaysResults(IDictionary <int, List <Market> > periodMarkets, bool started, bool live) { string tableName = live ? "Mgml2w" : "gml2w"; string[] indexArray = { "GP", "altp", "iTGT", "iGL2" }; Array array = GetTableArray(tableName, indexArray); int lowerBound0 = array.GetLowerBound(0); int upperBound0 = array.GetUpperBound(0); int lowerBound1 = array.GetLowerBound(1); int upperBound1 = array.GetUpperBound(1); for (int gp = lowerBound0; gp <= upperBound0; gp++) { for (int altp = lowerBound1; altp <= upperBound1; altp++) { string s1 = "U"; string s2 = "O"; double value1 = GetArrayValue(array, gp, altp, 2, 1); double value2 = GetArrayValue(array, gp, altp, 2, 2); double value3 = GetArrayValue(array, gp, altp, 2, 3); MarketRunner marketRunner = new MarketRunner { Total = value1, Price = value2, Side = s1 }; Market market = new Market { Tp = "TL", Target = marketRunner.Total }; market.MarketRunnerList.Add(marketRunner); marketRunner = new MarketRunner { Total = value1, Price = value3, Side = s2 }; market.MarketRunnerList.Add(marketRunner); if (!periodMarkets.ContainsKey(gp)) { List <Market> marketSide = new List <Market>(); periodMarkets.Add(gp, marketSide); } market = OddsConverter.FinishedOdds(market, started, _preVig, _liveVig); market.Key = $"{market.MarketRunnerList[0].Total}{gp}{market.Tp}"; periodMarkets[gp].Add(market); //------------------spread------------------------------------------ s1 = "A"; s2 = "H"; value1 = GetArrayValue(array, gp, altp, 1, 1); value2 = GetArrayValue(array, gp, altp, 1, 2); value3 = GetArrayValue(array, gp, altp, 1, 3); marketRunner = new MarketRunner { Total = value1, Price = value2, Side = s1 }; market = new Market { Tp = "SP", Target = marketRunner.Total }; market.MarketRunnerList.Add(marketRunner); marketRunner = new MarketRunner { Total = -value1, Price = value3, Side = s2 }; market.MarketRunnerList.Add(marketRunner); market = OddsConverter.FinishedOdds(market, started, _preVig, _liveVig); market.Key = $"{market.MarketRunnerList[0].Total}{gp}{market.Tp}"; periodMarkets[gp].Add(market); } } }
private void GetMainLinesTwoWaysResultsLive(IDictionary <int, List <Market> > periodMarkets, bool started, bool live) { const string liveNotLive = "SML"; const string tableName = liveNotLive; string[] indexArray = { "iGP", "iALT", "iTGT", "iGL2", "iAdjT", "iAdjS" }; Array array = GetTableArray(tableName, indexArray); int lowerBound0 = array.GetLowerBound(0); int upperBound0 = array.GetUpperBound(0); int lowerBound1 = array.GetLowerBound(1); int upperBound1 = array.GetUpperBound(1); for (int gp = lowerBound0; gp <= upperBound0; gp++) { for (int altp = lowerBound1; altp <= upperBound1; altp++) { string s1 = "U"; string s2 = "O"; double value1 = GetArrayValue(array, gp, altp, 2, 1, _iAdjS, _iAdjT); double value2 = GetArrayValue(array, gp, altp, 2, 2, _iAdjS, _iAdjT); double value3 = GetArrayValue(array, gp, altp, 2, 3, _iAdjS, _iAdjT); if (value3.IsNotEqualToZero()) { //Logger.Debug("value3 is not equal to zero"); } MarketRunner marketRunner = new MarketRunner { Total = value1, Price = value2, Side = s1 }; Market market = new Market { Tp = "TL", Target = marketRunner.Total }; market.MarketRunnerList.Add(marketRunner); marketRunner = new MarketRunner { Total = value1, Price = value3, Side = s2 }; market.MarketRunnerList.Add(marketRunner); if (!periodMarkets.ContainsKey(gp)) { List <Market> markets = new List <Market>(); periodMarkets.Add(gp, markets); } market = OddsConverter.FinishedOdds(market, started, _preVig, _liveVig); market.Key = $"{market.MarketRunnerList[0].Total}{gp}{market.Tp}"; periodMarkets[gp].Add(market); // spreads // get totals s1 = "A"; s2 = "H"; value1 = GetArrayValue(array, gp, altp, 1, 1, _iAdjS, _iAdjT); value2 = GetArrayValue(array, gp, altp, 1, 2, _iAdjS, _iAdjT); value3 = GetArrayValue(array, gp, altp, 1, 3, _iAdjS, _iAdjT); marketRunner = new MarketRunner { Total = value1, Price = value2, Side = s1 }; market = new Market { Tp = "SP", Target = marketRunner.Total }; market.MarketRunnerList.Add(marketRunner); marketRunner = new MarketRunner { Total = -value1, Price = value3, Side = s2 }; market.MarketRunnerList.Add(marketRunner); if (market.MarketRunnerList[0].Price > 0) { market = OddsConverter.FinishedOdds(market, started, _preVig, _liveVig); market.Key = $"{market.MarketRunnerList[0].Total}{gp}{market.Tp}"; periodMarkets[gp].Add(market); } } } }
private void GetMainLinesTwoWaysResults(IDictionary <int, List <Market> > periodMarkets, bool started, bool live, Dictionary <string, double> adjust) { //const string tableName = "ML2"; string liveNotLive = live == false ? "ML2" : "SML"; string tableName = liveNotLive; string[] indexArray = { "iGP", "iALT", "iTGT", "iGL2", "iSW", "iAdjS", "iAdjT" }; Array array = GetTableArray(tableName, indexArray); int lowerBound0 = array.GetLowerBound(0); int upperBound0 = array.GetUpperBound(0); int lowerBound1 = array.GetLowerBound(1); int upperBound1 = array.GetUpperBound(1); for (int gp = lowerBound0; gp <= upperBound0; gp++) { for (int altp = lowerBound1; altp <= upperBound1; altp++) { string s1 = "U"; string s2 = "O"; string type = "TL"; //CHECK ADJUSTMENTS string key = $"{type},{gp}"; if (adjust.ContainsKey(key)) { _iAdjT = ToInt16(adjust[key]); } else { _iAdjT = 11; } double value1 = GetArrayValue(array, gp, altp, 2, 1, _iSw, _iAdjS, _iAdjT); double value2 = GetArrayValue(array, gp, altp, 2, 2, _iSw, _iAdjS, _iAdjT); double value3 = GetArrayValue(array, gp, altp, 2, 3, _iSw, _iAdjS, _iAdjT); if (value3.IsNotEqualToZero()) { //Logger.Debug("value3 is not equal to zero"); } MarketRunner marketRunner = new MarketRunner { Total = value1, Price = value2, Side = s1 }; Market market = new Market { Tp = type, Target = marketRunner.Total }; market.MarketRunnerList.Add(marketRunner); marketRunner = new MarketRunner { Total = value1, Price = value3, Side = s2 }; market.MarketRunnerList.Add(marketRunner); if (!periodMarkets.ContainsKey(gp)) { List <Market> markets = new List <Market>(); periodMarkets.Add(gp, markets); } market = OddsConverter.FinishedOdds(market, started, _preVig, _liveVig); market.Key = $"{market.MarketRunnerList[0].Total}{gp}{market.Tp}"; periodMarkets[gp].Add(market); // spreads s1 = "A"; s2 = "H"; type = "SP"; //CHECK ADJUSTMENTS key = $"{type},{gp}"; if (adjust.ContainsKey(key)) { _iAdjS = ToInt16(adjust[key]); } else { _iAdjS = 11; } value1 = GetArrayValue(array, gp, altp, 1, 1, _iSw, _iAdjS, _iAdjT); value2 = GetArrayValue(array, gp, altp, 1, 2, _iSw, _iAdjS, _iAdjT); value3 = GetArrayValue(array, gp, altp, 1, 3, _iSw, _iAdjS, _iAdjT); marketRunner = new MarketRunner { Total = value1, Price = value2, Side = s1 }; market = new Market { Tp = type, Target = marketRunner.Total }; market.MarketRunnerList.Add(marketRunner); marketRunner = new MarketRunner { Total = -value1, Price = value3, Side = s2 }; market.MarketRunnerList.Add(marketRunner); // if (market.MarketRunnerList[0].Price > 0) // { market = OddsConverter.FinishedOdds(market, started, _preVig, _liveVig); market.Key = $"{market.MarketRunnerList[0].Total}{gp}{market.Tp}"; periodMarkets[gp].Add(market); // } } } }