用亂數隨機產生模擬期貨行情
本文的重點在於幫助交易員用亂數隨機產生模擬期貨行情, 我們會介紹一個期貨亂數函數 FutureNewPrice(), 版主使用的範例程式語言是 VB.NET 2005, 當然啦, 大家可以改寫在自己熟悉的平台 !
首先, 我們先拉四個 TextBox 來代表初始價, 上次價, 最新價和種類, 以及按下 Button 就啟動 Timer, 每次觸發 Timer 的時候, 就會呼叫 FutureNewPrice() 來產生新的期貨行情, 並會在視窗畫面上看到最新價一直在跳動 !
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Timer1.Enabled = True
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
TextBox2.Text = TextBox3.Text
If IsNumeric(TextBox2.Text) = True Then
TextBox3.Text = FutureNewPrice(CDbl(TextBox2.Text), 0.5, Timer1.Interval / 1000, TextBox4.Text)
Else
TextBox3.Text = FutureNewPrice(CDbl(TextBox1.Text), 0.5, Timer1.Interval / 1000, TextBox4.Text)
End If
End Sub
當每次呼叫 Timer1_Tick() 時, 我們會更新上次價, 然後把上次價再帶入 FutureNewPrice(), 以便得到新一次的行情, 接著我們來看一下 FutureNewPrice() 函數做了哪些事情 !
Private Function FutureNewPrice(ByVal dLastPrice As Double, ByVal dVol As Double, ByVal dDeltaT As Double, ByVal strGoodCode As String) As Double
'參數說明:
'dLastPrice: 上次價格
'dVol: 波動率
'dDeltaT: 時間間隔,單位為秒
'strGoodCode: 商品代碼
Try
dDeltaT /= 252 * 300 * 60
Dim dEpsilon As Double = -6
Dim i As Integer
Dim rnd As New Random
For i = 1 To 12
dEpsilon += rnd.NextDouble
Next
Dim dReturn As Double = 0
dReturn = CDbl(dLastPrice * Math.Exp(dVol * dEpsilon * Math.Sqrt(dDeltaT)))
Select Case strGoodCode
Case "TX", "FITX"
Dim dTick As Double = 1
dReturn = dTick * Math.Round(dReturn / dTick)
Case "TE", "FITE"
Dim dTick As Double = 0.05
dReturn = dTick * Math.Round(dReturn / dTick)
Case "TF", "FITF"
Dim dTick As Double = 0.2
dReturn = dTick * Math.Round(dReturn / dTick)
End Select
Return dReturn
Catch ex As Exception
MessageBox.Show(ex.ToString, "Error Message - FutureNewPrice()", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Function
再者, 說明一下為何需要傳入【種類】或說是【商品代碼】呢 ? 主要是亂數產生後是 Double 資料型態, 可能並不會符合實際商品的價位(或說最小升降單位), 必需要修正才合理, 舉例來說, TX 代表【台指期貨】, TE 代表【電子期貨】, TF 代表【金融期貨】, 其他商品大家可以參考期交所公佈的商品網頁 !
期交所商品網頁 http://www.taifex.com.tw/chinese/home.htm
當然啦, 我們為何要辛苦產生模擬期貨行情呢 ? 這當然是用來測試自己開發的期貨程式啦, 如果有自己 DIY 的期貨程式, 但又不是很確定邏輯一定 OK 時, 就可以利用模擬期貨行情來驗證程式運作是否正確啦 !
VB.NET 2005 範例下載 http://cat.hfu.edu.tw/~m9025004/download/FutureNewPrice.zip