投注樂 - 賽馬統計分析電腦軟件

21/11/2011

最簡單的數值轉換法

Filed under: MCL — 投注樂 @ 6:11 pm

我們可以用不同的方法 (例如數值轉換表) 把某數值轉換為另一數值,但最簡單的方法莫如用 Cnv( ) 函數,它的語法如下。(參閱 http://www.racematenet.com/help/index.html?cnv.htm)

Cnv( eValue , cValueList , cTargetValueList )

下例將會傳回 ‘ok’:
SNAGHTML25fe5364

下列兩個函數有類似的功能,它們可以把處於兩數值之間的值轉換為另一數值。

  • SCnv( eValue , cValueList , cTargetValueList )             (參閱 http://www.racematenet.com/help/index.html?sconv.htm)
    在 cValueList 中找一小於 eValue 的值,然後再在 cTargetValueList 中找出對應值。 注意:cValueList 一定要由小至大排列。

    SNAGHTML260651fd

  • GCnv( eValue , cValueList , cTargetValueList )          (參閱 http://www.racematenet.com/help/index.html?gconv.htm)
    在 cValueList 中找一大於 eValue 的值,然後再在 cTargetValueList 中找出對應值。 注意:cValueList 一定要由大至小排列。

    SNAGHTML2607b062

現在您能否說出下列函數的回傳值?

SCnv(1650, ‘1800,0’, ‘長途,短途’)

Advertisements

10/11/2011

馬會上賽競賽事件摘要

Filed under: MCL, 檢視 — 投注樂 @ 4:04 pm

我們在「走勢評述」檢視中加入了新的「馬會上賽競賽事件摘要」欄。請開啟該檢視並按 [修改] 鍵,再在彈出的定義檢視表單按 [還原] 鍵以顯示該欄。請注意把義視還原後,您對檢視的修改將會失去,假如您想保留您的修改,您可以在檢視中新增一欄並在利用內置欄位下拉表單中選擇「馬會上賽競賽事件摘要」。您可以把這新的內置欄位可以加入任合檢視之中。

SNAGHTML919786f7

我們並且加入了以下的新 MCL 函式用以提取「馬會上賽競賽事件摘要」資料。

– HrPastIncident( )
– JrPastIncident( )
– SrPastIncident( )

10/10/2011

利用投注樂找出連續停操多天的馬匹 (2)

Filed under: MCL — 投注樂 @ 10:35 am

我們在 2011 年 6 月 21 日的網誌 (https://racemateblog.wordpress.com/2011/06/21/利用投注樂找出連續停操多天的馬匹/) 上討論了如何利用投注樂找出連續停操 4 天馬匹,並說這些馬可能有健康問題,之後有用戶問:「不計上賽之後的 5 日,連續停操 4 天的馬匹的算式」,假如您希望有這一算式,請在您的檢視中新增一欄位,並利用 Windows 的複製及貼上功能,把下列算式貼在使用者自訂欄位中,請把欄位設定為 Logical。

 

剔出所有上賽 5 之後的連續停操 4 天的馬匹:
Like(‘*’+Replicate(‘??/??: -‘+Chr(13), 4)+’*’, HrActivity(‘1-‘+Tran(HrDaysAgo(1)-5))+Chr(13))

在上面算式中您可以把 5 日改為 6 日或其他日數。

16/09/2011

餘勢分析影片

Filed under: 多媒體 — 投注樂 @ 4:14 pm

餘勢分析連結

馬會在本季新增了「餘勢分析」影片,香港版投注樂亦相應地新增了自動開啟影片的連結,在賽事資料表單的右上角您可以見到新的 [餘勢分析] 鍵,用以開啟馬會的「餘勢分析」影片。您亦可以在任何檢視中加入餘勢分析內置欄位,以便雙擊開啟影片。

SNAGHTML71ed6c

 

如可在檢視中加入餘勢分析欄

在出賽馬檢視中加入餘勢分析欄:

SNAGHTML793c37

 

在統往績及統計檢視中加入餘勢分析欄:

SNAGHTML7f9e72

21/06/2011

利用投注樂找出連續停操多天的馬匹

Filed under: MCL — 投注樂 @ 9:53 am

馬匹連續停操 (沒有任何操練記錄) 多日,某程度反映健康可能有問題。 利用下列 MCL 算式可以列出一場賽事之中自上賽之後停操超過 4 天的馬匹。

Like(‘*’+Replicate(‘??/??: -‘+Chr(13), 4)+’*’, HrActivity( )+Chr(13))

您須把欄位的資料類別設定為 Logical。例如下圖就顯示了在 19/6 第 8 場賽事中「友誼至上」上賽以後停操 4 天以上。

image

 

您可以把算式中的 4 改為其他數字,亦可以在 HrActivity( ) 中設定要搜尋的日數,例如下式將會找出 60 天內停操超過 3 天的馬匹。

Like(‘*’+Replicate(‘??/??: -‘+Chr(13), 3)+’*’, HrActivity(60)+Chr(13))

 

Reference:
http://www.racematenet.com/help/like.htm
http://www.racematenet.com/help/replicate.htm
http://www.racematenet.com/help/hractivity.htm

09/06/2011

首段放頭馬的表現

Filed under: 統計, 資料 — 投注樂 @ 4:41 pm

投注樂加入了「首段放頭馬統計」檢視,它(下圖)顯示了放頭馬的資料。

SNAGHTML484d84c

當您轉換至「統計數字」模式的時候,您可以看到放頭馬在不同途程及賽道的表現。

SNAGHTML4842726

您可以按 [檢視設計] 鍵,加入您需要的欄位,但由於檢視在下次啟動投注樂的時候會自動還原,要保留的所作的修改,您必須把檢視另存(下圖)。

SNAGHTML486395f

由於檢視利用「名次=1」限制每場只顯示一匹馬,您利用左方的 MCL 算式庫選取的欄位只會顯示勝出馬的資料,要顯示放頭馬的資料您必須把 MCL 算式放在 AtStart( ,Column(14)) 之中。例如以下算式將會顯示放頭馬的配備。

AtStart(‘HrBlinker()’,Column(14))

同樣道理,在統計數字模式中選取 [回報]亦只顯示勝出馬的回報而非放頭馬的回報。

05/04/2011

新檢視:所有路程勝敗統計 (第 2 部份)

Filed under: 統計, MCL — 投注樂 @ 9:11 pm

利用「For 子句」篩選草地賽事

在上一編網誌中我們討論了在 While 子句中的 MCL 變數 {2},今次我們會討論在 For 子句中的另一 MCL 變數 {1}。為了集中注意力在 For 子句,在本文中我們把其他部份改為 「… 」,在實際應用時 「… 」 必須還原為原有的文字。

要篩選草地或非草地的賽事,我們會利用 HrIsTurf( ) 函數,這函數會在草地賽事中傳回 .T. ,而非草地的賽事則會傳回 .F.。

只計算草地賽事

JrCountBy( … , … , … ,’For HrIsTurf( )=.T. … ’)

只計算非草地賽事

JrCountBy( … , … , … ,’For HrIsTurf( )=.F. … ’)

計算所有與現賽賽道類別相同的賽事

JrCountBy( … , … , … ,’For HrIsTurf( )=’+Tran(HrIsTurf( )) … ‘)

 

利用 MCL 變數設定賽道類別

假如您不想限定賽道類別,您可以把整個 For 子句移除,您亦可以把 For 子句寫成 For .T.,亦即所有賽事都視作合乎條件。很多人都希望快速互換以下兩條件以作比較:

賽道類別相同(同泥草)的賽事     JrCountBy( … , … , … ,’For HrIsTurf( )=’+Tran(HrIsTurf( )) … ‘)
任何賽道類別的賽事                     JrCountBy( … , … , … ,’For .T. … ‘)

最有效的方法是把條件放在 MCL 變數中,在「所有路程勝敗統計」檢視中我們選擇了 MCL 變數 {1}:

JrCountBy( … , … , … ,’For .T. ‘+{1} … )

當 {1} 的值為空白時,函數變成
JrCountBy( … , … , … ,’For .T. … ‘)

當 {1} 的值為「’ And HrIsTurf()=’+Tran(HrIsTurf())」時,函數變成
JrCountBy( … , … , … ,’For .T. And HrIsTurf( )=’+Tran(HrIsTurf( )) … ‘)    亦即
JrCountBy( … , … , … ,’For HrIsTurf( )=’+Tran(HrIsTurf( )) … ‘)

 

合併 MCL 變數

當您同時選擇多組變數時,由於每組變數的值都可能不同,各組變數將會用以下規則合併:

  1. 同一變數,投注樂會採用各已選組中最後一組的值,如果最後一組沒有數值 (即空白),投注樂會改用對上一已選組的變數值,如果這變數在所有已選的組皆沒有數值,則投注樂會採用變數的預設值。
  2. 假如您選取了變數名稱左方的 [使用白值] 方格,空白值會視作「無字字串」,並在變數組合併時不會被視作空白。

SNAGHTML4733dd

上圖的例子中,用戶選用了以下三變數組:

組名

變數 {1}
(同泥草) 值

變數 {2}
(日數) 值

同泥草      " And HrIsTurf()="+Tran(HrIsTurf())
騎師馬房: 90 日, 馬匹: 所有               90
騎師馬房: 120 日, 馬匹: 所有             120

投注樂自動把三組合併,變數 {1} 的值成為 " And HrIsTurf()="+Tran(HrIsTurf()) (由於其餘兩變數組中 {1} 為空白),變數 {2} 的值則成為 120(取最後一組的值)。

28/01/2011

新檢視:所有路程勝敗統計 (第 1 部份)

Filed under: 統計, MCL — 投注樂 @ 12:31 pm

所有路程勝敗統計

賽事表單加入了一全新的檢視:所有路程勝敗統計。下圖顯示檢視的欄位。由於這檢視被設定為不可修改,如果要修改這檢視,您必須先按 [修改] 鍵,然後按 [另存檢視] 鍵,把用新的檢視名稱把它儲存。

SNAGHTML280272d0

 

改變統計日數

檢視中右三欄顯示了馬匹、騎師及馬房在不同距離賽事的勝敗記錄,其中馬匹計算了以往所有賽事,而騎師和馬房計算由 MCL 變數 {2} 所設定的統計日數之內往績,您可以點擊 [設定/選擇 MCL 變數值] 鍵改變日數。

 

如何在函數中設定統計日數

統計使用了函數 JrCountBy( ) 及 SrCountBy( ) 並利用 While 子句在第 4 參數設定日數,以下例子設定了 30 日的統計時段。為了集中注意力在第 4 參數的 While 子句,我們把其他部份改為 「… 」,在實際應用時 「… 」 必須還原為原有的文字。

JrCountBy( … , … , … ,’ … While ‘+Qstr( JrDate( ))+’- JrDate() <30′)

上式相當於

JrCountBy( … , … , … ,’ … While 本賽日期 – 往績日期 < 30日’)

留意下例數點:

  1. 本賽日期 Qstr( JrDate() ) 需在即場賽事中計算,不須以引號包圍,往績日期 ‘- JrDate() <…’ 則必須放在引號之內。 大家可以緊記以下無論任何參數皆適用的法則:「本賽資料無引號、往績資料有引號」。
  2. 由於 While 子句是文字串,算式利用了 Qstr() 把即場日期 JrDate() 轉為文字,使它可以和其他部份連合。
  3. 統計時投注樂會由近至遠提取往績記錄,當 While 子句的條件一但不成立時,投注樂會立即停止提取更遠期的記錄,故此把選取記錄的條件放在 While 子句中較放在 For 子句中速度會更快。雖然把條件於在 For 子句中可以得出同樣的結果,但 For 會比較所有往績,由於騎師和馬房的往績很多,把條件於在 For 子句會大幅減慢計算速度。

 

利用 MCL 變數設定統計日數

我們可以利用 MCL 變數設定統計日數,使您可以快捷地計算及比較不同統計日數下的結果。假設我們選用 MCL 變數 {2},我們只要把上例中的 30 改為 {2} 即可,投注樂會算動把您所選擇的 MCL 變數值取代 {2}。

JrCountBy( … , … , … ,’ … While ‘+Qstr(JrDate())+’-JrDate()<{2}’)

我們通常會在 MCL 變數首次出現的算式為變數設定一預設值,假如我們預設統計日數為 120,上例的算式會變成

JrCountBy( … , … , … ,’ … While ‘+Qstr(JrDate())+’-JrDate()<{2:120}’)

 

在下一網誌文章中我們將會討論本檢視的另一 MCL 變數 {1}。

08/12/2010

投注樂 MCL 變數 (3) – 用「MCL 變數」表單管理變數值

Filed under: 資料, MCL — 投注樂 @ 12:33 pm

我們在網誌 投注樂 MCL 變數 (1) 討論了如何在「MCL 變數」表單選用一組變數值。現在我們會討論如何利用「MCL 變數」表單管理 MCL 變數。

SNAGHTML29b005d4

 

MCL 變數組

您可以設定數目不限的 MCL 變數組,每個變數組有不同的變數值。MCL 變數表單的左方 (上圖 A 部位) 會列出所有變數組的名稱,當您選定了一組時,表單的右方會顯示該組的各變數值,當您點擊 [選用] 鍵時,檢視函數中所有 MCL 變數會即時會被組內的變數值取代並重新顯示資料。

 

建立新的 MCL 變數組

按表單上的 [新增] 鍵 (B 部位) 以建立一新的 MCL 變數組,投注樂會把新組臨時命名為「變數組 1」,一般來說您跟著會進行以下步驟:

  1. 把組名改為更貼合組內變數值的名稱 (C 部位)。
  2. 假如這是第一組 MCL 變數,您可以在「變數名稱」欄 (E 部位) 輸入每一變數的名稱 (亦可選擇留空),這名稱會自動出現在以後加入的每一組中。
  3. 當所有輸入完畢之後,按 [儲存] 鍵把它們存入投注樂的資料庫之中。

註:

  • 假如您未有設定某 MCL 變數的值,該 MCL 變數將會使用預設值。有關如何設定預設值,請參閱 投注樂 MCL 變數 (2) – 如何設定變數及其預設值
  • 您在任何一變數組中修改某一變數的名稱將會自動同時修改了該變數在其他組別的名稱。
  • 您可以選取一變數組然後按 [刪除] 鍵把整組變數值刪除。

 

在賽事表單的變數值格中顯示組名

把 MCL 變數組的名稱顯示在賽事表單之中有助我們了解檢視資料的內容。當您選取了 [在數值格中顯示組名] (D 部份) 之後組名將會顯示在賽事表單上的 MCL 數值格之中。

 

各變數組共同使用一變數值

當您選擇變數值輸入格右方的 [各組同值] 選擇格後,在任可一變數組內修改該變數的值時,將會同時修改了其他變數組該變數的值。以「14日晨操統計」檢視為例,它用變數 {1} 的值來控制日數,假如您希望觀看 21 天的操練資料,您只須在任何一個變數組內把 {1} 由 14 改為 21 即可,無須逐組修改 {1} 的數值。

05/11/2010

投注樂 MCL 變數 (2) – 如何設定變數及其預設值

Filed under: 一般 — 投注樂 @ 12:12 pm

在 MCL 函數中設定 MCL 變數

函數 HrActivity(14) 用以顯示馬匹 14 天內的活動記錄 (下圖)。

image

我們可以利用函數的第二參數篩選某些活動,例如 HrActivity(14, ‘JT’) 只會顯示草地踱度活動 (JT 代表 Turf Jog,請參閱 http://www.racematenet.com/help/index.html?hractivity.htm)。

image

為了使函數更有彈性,我們可以在函數中加入 MCL 變數,例如 HrActivity(14, {2}),函數內的 {2} 稱為 MCL 變數,其數值可以在稍後設定,例如設定為 ‘JT’ 或 ‘JT, JI’,在大括號中的數字由 1 至 9 都可以,即 {1}、{2}、… {9}。

 

設定 MCL 變數的預設值

您必須在函數運算之前設定 MCL 變數的值,否則函數可能會發生錯誤或傳回不定值。我們一般都會為每一個 MCL 變數設定一個預設值,其格式如下。

HrActivity(14, {2:’JT’})

當我們未有另外設定 MCL 變數的值時,變數將會是被預值取代變成 HrActivity(14, ‘JT’);假如變數已經在某處設定為 ‘JI’ 則預設值將不會使用,而函數將會相當於HrActivity(14, ‘JI’)。

預設值必須在 MCL 變數第一次出現的位置設定,而且只能設定一次。

Older Posts »

Create a free website or blog at WordPress.com.