Axel Nordh пре 4 година
родитељ
комит
14698f1dbd

+ 2 - 0
OddsJavaFx/src/controllers/TestsController.java

@@ -85,6 +85,8 @@ public class TestsController implements Initializable {
 
 	@FXML
 	private void getResults() {
+		countriesList.clear();
+		leaguesList.clear();
 		initCountries();
 	}
 

+ 96 - 0
OddsJavaFx/src/data/GuiMysql.java

@@ -612,4 +612,100 @@ public class GuiMysql extends Mysql {
 
 		return result;
 	}
+
+	public void setTeamMarginHome(int teamId, int marginHome) {
+		final String sql = "UPDATE Team SET marginHome = ? WHERE id = ?";
+
+		try {
+			final PreparedStatement stat = getConnection().prepareStatement(sql);
+			stat.setInt(1, teamId);
+			stat.setInt(2, marginHome);
+
+			stat.executeQuery();
+
+		} catch (final SQLException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+	}
+
+	public void setTeamMarginDraw(int teamId, int marginDraw) {
+		final String sql = "UPDATE Team SET marginDraw = ? WHERE id = ?";
+
+		try {
+			final PreparedStatement stat = getConnection().prepareStatement(sql);
+			stat.setInt(1, teamId);
+			stat.setInt(2, marginDraw);
+
+			stat.executeQuery();
+
+		} catch (final SQLException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+	}
+
+	public void setTeamMarginAway(int teamId, int marginAway) {
+		final String sql = "UPDATE Team SET marginAway = ? WHERE id = ?";
+
+		try {
+			final PreparedStatement stat = getConnection().prepareStatement(sql);
+			stat.setInt(1, teamId);
+			stat.setInt(2, marginAway);
+
+			stat.executeQuery();
+
+		} catch (final SQLException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+	}
+
+	public void setTeamLookbackHome(int teamId, int lookbackHome) {
+		final String sql = "UPDATE Team SET lookbackHome = ? WHERE id = ?";
+
+		try {
+			final PreparedStatement stat = getConnection().prepareStatement(sql);
+			stat.setInt(1, teamId);
+			stat.setInt(2, lookbackHome);
+
+			stat.executeQuery();
+
+		} catch (final SQLException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+	}
+
+	public void setTeamLookbackDraw(int teamId, int lookbackDraw) {
+		final String sql = "UPDATE Team SET lookbackDraw = ? WHERE id = ?";
+
+		try {
+			final PreparedStatement stat = getConnection().prepareStatement(sql);
+			stat.setInt(1, teamId);
+			stat.setInt(2, lookbackDraw);
+
+			stat.executeQuery();
+
+		} catch (final SQLException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+	}
+
+	public void setTeamLookbackAway(int teamId, int lookbackAway) {
+		final String sql = "UPDATE Team SET lookbackAway = ? WHERE id = ?";
+
+		try {
+			final PreparedStatement stat = getConnection().prepareStatement(sql);
+			stat.setInt(1, teamId);
+			stat.setInt(2, lookbackAway);
+
+			stat.executeQuery();
+
+		} catch (final SQLException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+	}
 }

+ 22 - 0
OddsJavaFx/src/objects/TeamSettings.java

@@ -1,5 +1,7 @@
 package objects;
 
+import data.GuiMysql;
+
 public class TeamSettings {
 
 	int teamId;
@@ -56,22 +58,42 @@ public class TeamSettings {
 	public void setTeamName(String teamName) {
 		this.teamName = teamName;
 	}
+
 	public void setLookbackHome(int lookbackHome) {
+		if (this.lookbackHome != lookbackHome) {
+			GuiMysql.getInstance().setTeamLookbackHome(teamId, lookbackHome);
+		}
 		this.lookbackHome = lookbackHome;
 	}
 	public void setLookbackDraw(int lookbackDraw) {
+		if (this.lookbackDraw != lookbackDraw) {
+			GuiMysql.getInstance().setTeamLookbackDraw(teamId, lookbackDraw);
+		}
 		this.lookbackDraw = lookbackDraw;
 	}
 	public void setLookbackAway(int lookbackAway) {
+		if (this.lookbackAway != lookbackAway) {
+			GuiMysql.getInstance().setTeamLookbackAway(teamId, lookbackAway);
+		}
 		this.lookbackAway = lookbackAway;
 	}
+
 	public void setMarginHome(int marginHome) {
+		if (marginHome != this.marginHome) {
+			GuiMysql.getInstance().setTeamMarginHome(teamId, marginHome);
+		}
 		this.marginHome = marginHome;
 	}
 	public void setMarginDraw(int marginDraw) {
+		if (this.marginDraw != marginDraw) {
+			GuiMysql.getInstance().setTeamMarginDraw(teamId, marginDraw);
+		}
 		this.marginDraw = marginDraw;
 	}
 	public void setMarginAway(int marginAway) {
+		if (this.marginAway != marginAway) {
+			GuiMysql.getInstance().setTeamMarginAway(teamId, marginAway);
+		}
 		this.marginAway = marginAway;
 	}
 

+ 1 - 1
OddsJavaFx/src/tests/AwayTests.java

@@ -42,7 +42,7 @@ public class AwayTests extends TestClass {
 		int bestBetMargin = 0;
 		int bestLookBack = 0;
 
-		for (int lookBack = 1; lookBack < 25; lookBack++) {
+		for (int lookBack = 4; lookBack < 25; lookBack++) {
 			for (int betMargin = 1; betMargin < 35; betMargin++) {
 				final float betMarginDecimal = 1 + (betMargin / (float)100);
 				float bank = startingBank;

+ 1 - 1
OddsJavaFx/src/tests/DrawTests.java

@@ -42,7 +42,7 @@ public class DrawTests extends TestClass {
 		int bestBetMargin = 0;
 		int bestLookBack = 0;
 
-		for (int lookBack = 1; lookBack < 25; lookBack++) {
+		for (int lookBack = 4; lookBack < 25; lookBack++) {
 			for (int betMargin = 1; betMargin < 35; betMargin++) {
 				final float betMarginDecimal = 1 + (betMargin / (float)100);
 				float bank = startingBank;

+ 11 - 8
OddsJavaFx/src/tests/HomeDrawAwayTest.java

@@ -18,6 +18,9 @@ import objects.TeamResults;
 public class HomeDrawAwayTest extends TestClass {
 
 	private ArrayList<League> prioLeagues;
+	private float activeOdds1;
+	private float activeOddsX;
+	private float activeOdds2;
 
 	@Override
 	public void runTest() {
@@ -90,7 +93,7 @@ public class HomeDrawAwayTest extends TestClass {
 				System.out.println("Match between " + sm.getHomeTeam().getTeamName() + " - " + sm.getAwayTeam().getTeamName() +
 						" result " + sm.getHomeScore() + " - " + sm.getAwayScore() +
 						" Betted on " + betOnThisMatch + " at odds " + sm.getOdds1() + ", " + sm.getOddsX() + ", " + sm.getOdds2() +
-						" Bet Amount: " + betAmount);
+						" Bet Amount: " + betAmount + " calc odds: " + activeOdds1 + ", " + activeOddsX + ", " + activeOdds2);
 			}
 
 			System.out.println(matchesThisDate.get(0).getGameDate() + " result " + (bank - startBank) + " current bank: " + bank +
@@ -104,7 +107,6 @@ public class HomeDrawAwayTest extends TestClass {
 
 	private String checkWhatBet(SoccerMatch sm, League activeLeague) {
 		String result = "NoBet";
-
 		final float betMarginHomeDecimal = 1 + (activeLeague.getBetMarginHome() / 100f);
 		final float betMarginDrawDecimal = 1 + (activeLeague.getBetMarginDraw() / 100f);
 		final float betMarginAwayDecimal = 1 + (activeLeague.getBetMarginAway() / 100f);
@@ -119,8 +121,8 @@ public class HomeDrawAwayTest extends TestClass {
 			final float homeWinPercent = (homeTeamResults.getWins() + awayTeamResults.getLosses()) / Float.valueOf(homeTeamResults.getCount() + awayTeamResults.getCount()) * 100;
 			final float homeOdds = 100 / homeWinPercent;
 
-			if ( /*awayTeamResults.getCount() + homeTeamResults.getCount() > 10  && */
-					activeLeague.getBetMarginHome() > 0 && homeOdds * betMarginHomeDecimal <= sm.getOdds1()) {
+			activeOdds1 = homeOdds * betMarginHomeDecimal;
+			if (activeLeague.getBetMarginHome() > 0 && homeOdds * betMarginHomeDecimal <= sm.getOdds1()) {
 				if (result.equals("NoBet")) {
 					result = "1";
 				} else {
@@ -137,8 +139,8 @@ public class HomeDrawAwayTest extends TestClass {
 			final float drawWinPercent = (homeTeamResults.getDraws() + awayTeamResults.getDraws()) / Float.valueOf(homeTeamResults.getCount() + awayTeamResults.getCount()) * 100;
 			final float drawOdds = 100 / drawWinPercent;
 
-			if (/* awayTeamResults.getCount() + homeTeamResults.getCount() > 10 && */
-					activeLeague.getBetMarginDraw() > 0 &&
+			activeOddsX = drawOdds * betMarginDrawDecimal;
+			if (activeLeague.getBetMarginDraw() > 0 &&
 					drawOdds * betMarginDrawDecimal <= sm.getOddsX()) {
 				if (result.equals("NoBet")) {
 					result = "X";
@@ -156,8 +158,8 @@ public class HomeDrawAwayTest extends TestClass {
 			final float awayWinPercent = (awayTeamResults.getWins() + homeTeamResults.getLosses()) / Float.valueOf(awayTeamResults.getCount() + homeTeamResults.getCount()) * 100;
 			final float awayOdds = 100 / awayWinPercent;
 
-			if (/* awayTeamResults.getCount() + homeTeamResults.getCount() > 10 && */
-					activeLeague.getBetMarginHome() > 0 &&
+			activeOdds2 = awayOdds * betMarginAwayDecimal;
+			if (activeLeague.getBetMarginHome() > 0 &&
 					awayOdds * betMarginAwayDecimal <= sm.getOdds2()) {
 				if (result.equals("NoBet")) {
 					result = "2";
@@ -183,6 +185,7 @@ public class HomeDrawAwayTest extends TestClass {
 				"Join Team as hTeam ON res.homeTeam = hTeam.id " +
 				"Join Team as aTeam ON res.awayTeam = aTeam.id " +
 				"WHERE " +
+				"DATE(gameDate) > '2021-07-01' AND " +
 				"homeScore >= 0 AND " +
 				"awayScore >= 0 AND " +
 				"res.leagueId IN (" +

+ 9 - 37
OddsJavaFx/src/tests/HomeTeamTest.java

@@ -61,7 +61,7 @@ public class HomeTeamTest extends TestClass {
 		final float betLevel = bettingLevel / 100f;
 		float betAmount = startingBank * betLevel;
 
-		for (int lookback = 1; lookback < 25; lookback++) {
+		for (int lookback = 4; lookback < 25; lookback++) {
 			for (int margin = 1; margin < 25; margin++) {
 				final float betMarginDecimal = 1 + (margin / 100);
 				float bank = startingBank;
@@ -85,10 +85,6 @@ public class HomeTeamTest extends TestClass {
 					final long likaBortalag = bortaMatcher.stream().filter(p -> p.getHomeScore() == p.getAwayScore()).count();
 					final long bortaForluster = bortaMatcher.stream().filter(p -> p.getHomeScore() > p.getAwayScore()).count();
 
-
-					//					final TeamResults homeTeamResults = GuiMysql.getInstance().getTeamResultsTest(soccerMatch.getHomeTeam().getTeamId(), lookback, true, sm.getGameDate().format(DateTimeFormatter.ISO_DATE));
-					//					final TeamResults awayTeamResults = GuiMysql.getInstance().getTeamResultsTest(soccerMatch.getAwayTeam().getTeamId(), lookback, false, sm.getGameDate().format(DateTimeFormatter.ISO_DATE));
-
 					final float homeWinPercent = (hemmaVinster + bortaForluster) / Float.valueOf(hemmaMatcher.size() + bortaMatcher.size()) * 100;
 					final float homeOdds = 100 / homeWinPercent;
 
@@ -104,46 +100,20 @@ public class HomeTeamTest extends TestClass {
 						}
 					}
 
-
-					// Spela på lika?
-					final float tiePercent = (lika + likaBortalag) / Float.valueOf(hemmaMatcher.size() + bortaMatcher.size()) * 100;
-					final float tieOdds = 100 / tiePercent;
-
-					if (tieOdds * betMarginDecimal <= soccerMatch.getOddsX()) {
-						betOnGameCount++;
-						bank = bank - betAmount;
-						if (soccerMatch.getHomeScore() == soccerMatch.getAwayScore()) {
-							wins++;
-							bank = bank + betAmount * soccerMatch.getOddsX();
-						}
-					}
-
-					final float awayWinPercent = (hemmaForluster + bortaVinster) / Float.valueOf(hemmaMatcher.size() + bortaMatcher.size()) * 100;
-					final float awayOdds = 100 / awayWinPercent;
-
-
-					// Spela på borta vins?
-					if (awayOdds * betMarginDecimal <= soccerMatch.getOdds2()) {
-						betOnGameCount++;
-						bank = bank - betAmount;
-						if (soccerMatch.getHomeScore() < soccerMatch.getAwayScore()) {
-							wins++;
-							bank = bank + betAmount * soccerMatch.getOdds2();
-						}
-					}
-
-
-					if (bestBankResult < bank) {
+					if (bestBankResult != startingBank && bestBankResult < bank) {
 						System.out.println("NEW best bank " + bank + " for team " + teamSettings.getTeamName() + " with lookback " + lookback + " and betMargin " + margin +
 								" Bet on " + betOnGameCount + " of " + matches.size() + "(" + betOnGameCount / (float)matches.size() + ") wins " + wins + "(" + wins/Float.valueOf(betOnGameCount) + ")" +
 								" Win / game " + (bank - startingBank) / Float.valueOf(wins) + " kr");
 						bestBetMargin = margin;
 						bestLookBack = lookback;
 						bestBankResult = bank;
-					} else if (bestBankResult == bank) {
+					} else if (bestBankResult != startingBank && bestBankResult == bank) {
 						System.out.println("SAME best bank " + bank + " for team " + teamSettings.getTeamName() + " with lookback " + lookback + " and betMargin " + margin +
 								" Bet on " + betOnGameCount + " of " + matches.size() + "(" + betOnGameCount / (float)matches.size() + ") wins " + wins + "(" + wins/Float.valueOf(betOnGameCount) + ")" +
 								" Win / game " + (bank - startingBank) / Float.valueOf(wins) + " kr");
+						bestBetMargin = margin;
+						bestLookBack = lookback;
+						bestBankResult = bank;
 					} else {
 						//						System.out.println("NOT BEST bank " + bank + " for team " + teamSettings.getTeamName() + " with lookback " + lookback + " and betMargin " + margin +
 						//								" Bet on " + betOnGameCount + " of " + matches.size() + "(" + betOnGameCount / (float)matches.size() + ") wins " + wins + "(" + wins/Float.valueOf(betOnGameCount) + ")" +
@@ -152,6 +122,8 @@ public class HomeTeamTest extends TestClass {
 				}
 			}
 		}
+		teamSettings.setLookbackHome(bestLookBack);
+		teamSettings.setMarginHome(bestBetMargin);
 
 		return teamSettings;
 	}
@@ -220,7 +192,7 @@ public class HomeTeamTest extends TestClass {
 				+ "WHERE "
 				+ "DATE(gameDate) < DATE_SUB(NOW(), INTERVAL 1 YEAR) AND "
 				+ "res.leagueId = ? "
-				+ "ORDER BY gameDate ASC";
+				+ "ORDER BY gameDate DESC";
 
 		try {
 			final PreparedStatement stmt = getConnection().prepareStatement(sql);

+ 1 - 1
OddsJavaFx/src/tests/HomeTests.java

@@ -42,7 +42,7 @@ public class HomeTests extends TestClass {
 		int bestBetMargin = 0;
 		int bestLookBack = 0;
 
-		for (int lookBack = 1; lookBack < 25; lookBack++) {
+		for (int lookBack = 4; lookBack < 25; lookBack++) {
 			for (int betMargin = 1; betMargin < 35; betMargin++) {
 				final float betMarginDecimal = 1 + (betMargin / (float)100);
 				float bank = startingBank;

+ 2 - 0
OddsJavaFx/src/web/index.php

@@ -107,6 +107,7 @@ $dayStats = $conn->getDayBettingsStats();
 <tr>
 <th>Datum</th>
 <th>Resultat</th>
+<th>Num Games</th>
 </tr>
 </thead>
 <tbody>
@@ -116,6 +117,7 @@ foreach ($dayStats as $ds) {
     echo "<tr>";
     echo "<td>" . $ds['date'] . "</td>";
     echo "<td>" . $ds['sumAmount'] . "</td>";
+    echo "<td>" . $ds['numGames'] . "</td>";
     echo "</tr>";
     $sum += $ds['sumAmount'];
 }

+ 2 - 1
OddsJavaFx/src/web/webDbConnection.php

@@ -175,7 +175,8 @@ class WebDbConnection {
         WHEN betOn = '2' AND sr.homeScore < sr.awayScore THEN amount * odds
 		ELSE -amount
 	END
-),2 ) as sumAmount
+),2 ) as sumAmount, 
+COUNT(gameDate) as numGames
 FROM `Bets` INNER JOIN SoccerResults sr ON matchId = sr.id GROUP BY DATE(sr.gameDate) ORDER BY sr.gameDate ASC";
 
         return $this->getSqlAsArray($sql);