You need to enable JavaScript in order to visit our site!
 
Logo PTMC
NAVIGATION
CANCEL
 
or via PTMC account
Restore password
or via PTMC account
Logo PTMC
NAVIGATION
or via PTMC account
Restore password
or via PTMC account
or via PTMC account
Restore password
or via PTMC account
Mac Mac 20.04 2017

PTMC 與 R 整合 - 讓你的交易插上翅膀

隨著越來越多的金融商品不斷出現,及交易技巧的不斷演化,透過想像與直覺來做交易的時代已經結束。然而,要在眾多交易平台中區分出哪些平台是玩真的還是玩假的並不是一件容易的事情。這就是超出任何想像,也是 PTMC 平台的優勢所在。

現在,透過 PTMC 與 R 的整合,可更有效的使用強大的高等數學和統計功能,讓您的交易策略更加有效並提升獲利。

1. 安裝 R 用戶端

下載並安裝 R-client https://cran.r-project.org/bin/windows/base/R-3.4.3-win.exe

2. 在專案中綁定 R 環境

您可以透過下列幾種方式來呼叫 R:

  • 將 NuGet 套件加入到專案中以便使用 R 環境
  • 使用中繼的 CSV 資料格式 (*.csv)
  • 使用 console 來進行工作,並從 console 中讀取結果
  • COM 連接

最快最簡單的是使用第一種方式。但是,在這邊有一些小問題需要說明。目前R.NET 專案的開發和支援已經停止,現在專案已經被移轉到 R.NET 社群。即便我們將原始碼重新封裝,或將目前的版本替換為舊版本,之前的套件也無法使用。

而其它的方案則需要花更多時間,而且其中有些執行的速度極慢。

在將 NuGet 套件連接到專案之後,您需要建立一個 REngine 類別的實體以便與 R 環境一起使用並將其初始化:

/// <summary> starts R engine     
void StartEngine()  
{           
     REngine.SetEnvironmentVariables();    
     engine = REngine.GetInstance();  
     engine.Initialize();       
}

3. 取得初始資料

我們使用一天的 Tick 歷史資料做為操作大量資料的範例。 其上傳內容如下所示:

// Load trade history
TD = PlatformEngine.GetHistoricalData(new HistoricalDataRequest(curInstrument, Period.Tick, DataType.Trade)) as TradeData;
TD.Load(DateTime.UtcNow.AddDays(-1));

4. 在 R 環境中進行計算

做為範例,我們使用比較簡單的計算價格。根據載入的資料,我們來建立一個 R 腳本 “example.r”:

df <- data.frame(price = price, time = time, side = side)
res <- aggregate(cbind(count = time) ~ price + side, data = df, FUN = function(x) { NROW(x) })
table <- na.omit(res[order( -res$count),] [1:rows,])

在專案中加入要載入建立好的R 腳本路徑,載入腳本並開始進行計算:

// load external script
engine.Evaluate(@"source('"+scriptName+"')");

5. 將資料傳遞給 R

讓我們建立一個要用於傳送的資料包::

// perform input data
            int count = TD.Count;
            double[] price = new double[count];
            string[] time = new string[count];
            string[] side = new string[count];
            for (int i = 0; i < count - 1; i++)
            {
                price[i] = TD.Price(i);
                time[i] = TD.Time(i).ToString();
                side[i] = TD.Aggressor(i).ToString();
            }

資料傳輸 – 在 R 環境中的變數值使用傳輸進來的資料(先前建立的陣列):

// R-input
            engine.SetSymbol("rows", engine.CreateInteger((int)biggestValue.Value));
            engine.SetSymbol("price", engine.CreateNumericVector(price));
            engine.SetSymbol("time", engine.CreateCharacterVector(time));
            engine.SetSymbol("side", engine.CreateCharacterVector(side));

6. 輸出結果

讓我們將 R 環境中計算出來的結果做為 DataFrame 物件的輸出:

// R-output
var table = engine.GetSymbol("table").AsDataFrame();

更進一步的資料顯示可以任何您喜歡的方式來進行組織。

這樣就大功告成。在這邊我們僅顯示一個非常簡單的 PTMC 如何呼叫 R 來搭配使用的範例。相信任何交易者,或是程式設計人員都可以透過這個範例體驗到 PTMC 與 R 相互搭配使用的好處,如果你有任何問題或建議,也可以在文章下方發表評論。

更進一步

這邊我們在 C# 程式中使用 R 腳本 - 將資料傳遞到 R 環境 並將結果返回到 C# 程式中。範例中使用的是安裝在本地端的 R 環境。您也可以將資料傳遞到自建的 R 伺服器或是雲端的 R 環境來進行更複雜的資料模擬及運算。

透過 PTMC 的報價與下單整合,用戶可以更簡單方便的所需的資料,動態的傳遞給 R 進行複雜的交易策略運算。並將傳回的結果直接下單,或是顯示在畫面中做為交易決策參考的重要依據。

PTMC 平台可以有效的讓 R 的程式設計人員擺脫繁雜且龐大的報價與下單介面串連的任務,讓其更有效率的設計出好用而且可獲利的交易模型。

Discussion
Join PTMC community to post your comments
PTMC 是一個專業的交易平台,結合了強大的圖表和分析工具,並可在不同的金融市場進行交易。 它是由 PFSOFT UK LTD 開發的,該公司是全球銀行和經紀商交易技術提供商
© 2021. PTMC 為基於 Protrader 技術的專業交易平台
地址
臺北市大安區羅斯福路3段273號5樓
聯絡我們
電話: +886-2-2367-8583
E-mail: service@kcdatanet.com
社群
© 2021. PTMC 為基於 Protrader 技術的專業交易平台