Victor
6th September 2001, 01:32.12 AM
Tested on my newly created 6000 race database:
My first (possibly) decent Spot Play.
All races. All tracks.
Total Bets: 112
Wins:31
ROI: 1.22
As I develop more Plays, and want to pull the trigger just once (kind of the shotgun approach, if you will), what type of query will combine all the plays and search concurrently?
hurrikane
6th September 2001, 06:36.01 AM
Vic...just put each play on a different row in the query builder. Problem is you won't know what horse came from what spot play. If you are using flat bet of bank that is fine but if you bet a percentage based on the win % /roi of the spot play you will have a problem.
Carl
6th September 2001, 08:40.33 AM
Victor,
For daily play, I do like Hurrikane does, put each of my spot plays on a different query line.
Then I do a printout, and go back into the margins to write which spot it came from.
When you do your weekly or monthly summaries with results of each spot, you will quickly see which "are hot and which are not". I would advise continuing to play the hot ones, just monitor the cold ones until/if they turn around.
This kind of manually does what HSH is going to try and do with ants. Keeps the strong ones in play, kill off the weak ones without having them take your bankroll down with them. It gets better after a while, you will find you develop even stronger versions of your good plays, and that then becomes the new norm.
Interestingly enough, I am still using three of the plays I developed in my first three months with the db. And yes, I must have discarded at least a 100 that I actually tracked for a month or so.
I would look for 50% ROI with any play that comes up less than 500 times a month, and look for 30% or better on plays that are more frequent. My experience has been you will then be lucky to get half that "in real life".
later,
Carl
Victor
7th September 2001, 10:31.40 AM
Could you please be more specific about using the query builder to do this. I bought an Access book that doesn't seem to cover combinations.
Carl
7th September 2001, 01:15.46 PM
Victor,
1) I don't know how to use a query builder. Don't care.
2) If you put one query on each line, it will query for them all individually and give you an "or" query result.
3) For example, if you put "AP" on the first line, "BEL" on the second, the query would give you all the races run at BEL and AP.
later,
Carl
Victor
7th September 2001, 01:41.30 PM
Carl,
Thanks for your answer. I now have all ten horseys from my two spot plays on the same list. And I bet them.
MikeDee
7th September 2001, 01:55.56 PM
You guys probably get tired of hearing this, and I don't use it but there is a way, with what else, VBA to mark your spot plays with a spot play name or number so that when you look at them you know where they came from. Let me know if you want to fool with it.
Carl
7th September 2001, 01:58.56 PM
Good luck buddy.
So next comes the other part, downloading the race files with results and seeing how your horses do doing what George calls "playing forward".
I find this fun too.
If you are lucky, one of the two spot plays will be an Everyready Energizer bunny, and just run on and on.
As you get more data, you can filter factors into/out of the two spots too. I give all my spots names (I have a "Jim" and a "Ken" for instance) and then name the close variations by number (Jim2, Jim3 etc.) I save them all in SQL form/text for later testing and quarterly check ups (to see if they are doing better or worst).
later,
Carl
Glen
7th September 2001, 02:07.40 PM
Or try this:
Const EQ_PAREN = 1100 ' Unbalanced parenthesis
Const EQ_FUNCTION = 1101 ' Unknown function:
Const EQ_VARIABLE = 1102 ' Unknown variable:
Const EQ_INVALID = 1103 ' Invalid Equation
Const EQ_ARGS = 1104 ' Invalids arguments to function:
Const EQ_NAME = 1105 ' Unable to add an unnamed function:
Private Dirty As Boolean
Private Parsed As Boolean
Private Vars As New Collection
Private Equ As String
Private Deg As Boolean
Private dAnswer As Double
Private EquParsed As Collection 'The parsed equation
Private EquOrder As Collection 'Order in which to solve the equation
' Constants used in parsing
' Priority levels
Private Const PRI_ADD = 1
Private Const PRI_MOD = 2
Private Const PRI_MUL = 3
Private Const PRI_NEG = 4
Private Const PRI_EXP = 5
Private Const PRI_VAR = 6
Private Const PRI_PAR = 7
Private Const PRI_LEVEL = 7
Private Const EQ_NONE = 0
Private Const EQ_STRING = 1
Private Const EQ_NUMBER = 2
Private Const ER_NONE = 0
Private Const ER_VAR = 1
Private Const PI = 3.14159265358979
Private Const DEG_TO_RAD = 0.01745329251995
Private Const RAD_TO_DEG = 57.2957795131
Public Property Let Degrees(b As Boolean)
If b <> Deg Then
Deg = b
Dirty = True
End If
End Property
Public Property Get Degrees() As Boolean
Degrees = Deg
End Property
Private Function GetRight(ByVal j As Long, v() As Variant) As Long
Dim i As Long
For i = j + 1 To UBound(v)
If Not IsNull(v(i)) Then
GetRight = i
Exit Function
End If
Next i
GetRight = 0
End Function
Private Function GetLeft(ByVal j As Long, v() As Variant) As Long
Dim i As Long
For i = j - 1 To 1 Step -1
If Not IsNull(v(i)) Then
GetLeft = i
Exit Function
End If
Next i
GetLeft = 0
End Function
Public Sub VarClear()
Set Vars = New Collection
Dirty = True
End Sub
Public Property Let Equation(e As String)
Parsed = False
Dirty = True
Equ = LCase(e)
End Property
Public Property Get Equation() As String
Equation = Equ
End Property
Private Sub Parse()
Dim i As Integer
Dim s As String
Dim t As Integer
Dim j As Integer
Dim sTmp As String
Dim p As Integer
Dim EquPriority As New Collection
Dim maxPriority
Dim isNeg As Boolean
s = ""
t = EQ_NONE
j = 1
p = 0
isNeg = False
Set EquParsed = New Collection
EquParsed.Add ""
EquPriority.Add ""
maxPriority = PRI_LEVEL
For i = 1 To Len(Equ)
sTmp = Mid$(Equ, i, 1)
Select Case sTmp
Case "A" To "Z", "a" To "z", "_"
If t = EQ_NONE Then
t = EQ_STRING
s = sTmp
ElseIf t = EQ_NUMBER Then
t = EQ_STRING
EquParsed.Add s, , j
EquPriority.Add 0, , j
j = j + 1
EquParsed.Add "*", , j
EquPriority.Add PRI_MUL + p, , j
j = j + 1
s = sTmp
Else
s = s + sTmp
End If
isNeg = True
Case "1" To "9", "0", "."
If t = EQ_NONE Then
t = EQ_NUMBER
s = sTmp
Else
s = s + sTmp
End If
isNeg = True
Case "(":
If t = EQ_STRING Then
EquParsed.Add s + sTmp, , j
EquPriority.Add p + PRI_PAR, , j
j = j + 1
s = ""
ElseIf t = EQ_NUMBER Then
EquParsed.Add s, , j
EquPriority.Add 0, , j
j = j + 1
EquParsed.Add "*", , j
EquPriority.Add p + PRI_MUL, , j
j = j + 1
EquParsed.Add sTmp, , j
EquPriority.Add p + PRI_PAR, , j
j = j + 1
s = ""
Else
EquParsed.Add sTmp, , j
EquPriority.Add p + PRI_PAR, , j
j = j + 1
End If
p = p + PRI_LEVEL
t = EQ_NONE
If maxPriority < p + PRI_LEVEL Then
maxPriority = p + PRI_LEVEL
End If
isNeg = False
Case "*", "/":
If t <> EQ_NONE Then
EquParsed.Add s, , j
EquPriority.Add IIf(t = EQ_STRING, p + PRI_VAR, 0), , j
j = j + 1
s = ""
End If
EquParsed.Add sTmp, , j
EquPriority.Add p + PRI_MUL, , j
j = j + 1
t = EQ_NONE
isNeg = False
Case "\":
If t <> EQ_NONE Then
EquParsed.Add s, , j
EquPriority.Add IIf(t = EQ_STRING, p + PRI_VAR, 0), , j
j = j + 1
s = ""
End If
EquParsed.Add sTmp, , j
EquPriority.Add p + PRI_MUL, , j
j = j + 1
t = EQ_NONE
isNeg = False
Case "+":
If t <> EQ_NONE Then
EquParsed.Add s, , j
EquPriority.Add IIf(t = EQ_STRING, p + PRI_VAR, 0), , j
j = j + 1
s = ""
EquParsed.Add sTmp, , j
EquPriority.Add p + PRI_ADD, , j
j = j + 1
t = EQ_NONE
Else
'Ignore things like "(+1)"
End If
isNeg = False
Case "-":
If t <> EQ_NONE Then
EquParsed.Add s, , j
EquPriority.Add IIf(t = EQ_STRING, p + PRI_VAR, 0), , j
j = j + 1
s = ""
End If
If isNeg Then
EquParsed.Add sTmp, , j
EquPriority.Add p + PRI_ADD, , j
j = j + 1
t = EQ_NONE
Else
EquParsed.Add "~", , j
EquPriority.Add p + PRI_NEG, , j
j = j + 1
t = EQ_NONE
End If
isNeg = False
Case "^":
If t <> EQ_NONE Then
EquParsed.Add s, , j
EquPriority.Add IIf(t = EQ_STRING, p + PRI_VAR, 0), , j
j = j + 1
s = ""
End If
EquParsed.Add sTmp, , j
EquPriority.Add p + PRI_EXP, , j
j = j + 1
t = EQ_NONE
isNeg = False
Case "%":
If t <> EQ_NONE Then
EquParsed.Add s, , j
EquPriority.Add IIf(t = EQ_STRING, p + PRI_VAR, 0), , j
j = j + 1
s = ""
End If
EquParsed.Add sTmp, , j
EquPriority.Add p + PRI_MOD, , j
j = j + 1
t = EQ_NONE
isNeg = False
Case ",":
If t <> EQ_NONE Then
EquParsed.Add s, , j
EquPriority.Add IIf(t = EQ_STRING, p + PRI_VAR, 0), , j
j = j + 1
s = ""
End If
EquParsed.Add Null, , j
EquPriority.Add 0, , j
j = j + 1
t = EQ_NONE
isNeg = False
Case ")":
If t <> EQ_NONE Then
EquParsed.Add s, , j
EquPriority.Add IIf(t = EQ_STRING, p + PRI_VAR, 0), , j
j = j + 1
s = ""
End If
EquParsed.Add sTmp, , j
EquPriority.Add p - (PRI_LEVEL - PRI_PAR), , j
p = p - PRI_LEVEL
j = j + 1
t = EQ_NONE
isNeg = True
End Select
Next i
If s <> "" Then
EquParsed.Add s, , j
EquPriority.Add IIf(t = EQ_STRING, p + PRI_VAR, 0), , j
j = j + 1
End If
EquParsed.Remove j
EquPriority.Remove j
If p <> 0 Then
Err.Raise EQ_PAREN, "clsEquation", "Unbalanced parenthesis"
Exit Sub
End If
' Debugging section...
'For i = 1 To EquParsed.Count
' Debug.Print EquParsed(i) & ";";
'Next i
'Debug.Print
' For i = 1 To EquPriority.Count
' Debug.Print EquPriority(i) & ";";
'Next i
'Debug.Print
'Debug.Print "MaxPriority = " & maxPriority
' End Debugging section....
Set EquOrder = New Collection
EquOrder.Add ""
For j = 1 To maxPriority
For i = EquPriority.Count To 1 Step -1
If EquPriority(i) = j Then
EquOrder.Add i, , , 1
End If
Next i
Next j
This VBA stuff is way over my head...So I just stick with basic Access...
:confused: :eek:
Carl
7th September 2001, 02:29.09 PM
Well,
I know so little about VB that I don't know if Glen made a joke or not. (I can usually tell by the funny faces but one of his was going up and one was going down humm...)
Mike, what I do is mark my spots on a monthy basis by querying for them then making a new field for each. Takes me about an hour or so to do sixteen spots, so not too bad.
Thanks for the offer though, one more reason for me to try VB.
later,
Carl
Donnie
7th September 2001, 03:07.42 PM
Mike,
Is that the code above that glen posted, or do you have something different?
Thanks!
MikeDee
7th September 2001, 03:31.06 PM
naw....you can't use that crapp Glen posted.....there is a error in it
EquParsed.Add "*", , j
EquPriority.Add p + PRI_MUL, , j
should read
EquParsed.,j,Add "*",
EquPriority.Add p + PRI_MUL, , j
MikeDee
7th September 2001, 03:34.53 PM
An hour.... thats not bad Carl with VBA you'ld only save about 59 min and 58 seconds:)
Glen
7th September 2001, 03:35.01 PM
Cool VB links:
http://search.msn.com/results.asp?RS=CHECKED&FORM=MSNH&v=1&q=visual+basic+code
Donnie
7th September 2001, 05:15.11 PM
Mike,
When you get a sec, if you could send me your code I would like to look at it!
Thanks!
MikeDee
7th September 2001, 05:56.32 PM
OK Donnie
I'll send you something tomorrow AM Send me a email message at mrdezo@ameritech.net. Don't know if I have your most current email address.
MikeDee
7th September 2001, 05:59.30 PM
Hey Glen thanks for the link...hd no idea all of that stuff was out there
vBulletin® v3.8.4, Copyright ©2000-2012, Jelsoft Enterprises Ltd.