2018年4月26日 星期四

開發商品的交易系統 - 進階篇 [10]

EasyTrader ArtNo 296
MulCharts 9.0 有一個新的功能Portfolio Trader(PT),除了可以在PT上開發、測試、優化個人的策略外,還可以不用開圖表直接進行投資組合交易,在手冊裡提到的PT的優點。

同時對多個金融商品應用一個交易策略具有以下優勢:
1.多元化的投資組合將產生更一致的結果。
2.在橫跨多個商品的交易機會降低變成常態。
3.組合策略可以依據各交易商品表現,並通過動態分配投資組合的資金來實現利潤最大化和最小化風險。
4.組合策略可以根據投資組合的整體表現來做進出場與加減縮放部位。
5.組合策略通常更穩固且不易過度優化。
6.通過對不同投資組合的回溯測試, 可以選擇最適合該特定交易策略的商品。

投資組合交易的計算模式
1.回溯測試(Backtesting)
根據歷史資料計算策略後, 將生成投資組合績效報告。
2.移動窗格測試'(Forward Testing)
基於歷史資料計算策略後的移動窗格測試結果, 也能繼續對即時資料進行計算。有關結果的資訊將顯示在 "移動窗格測試視窗"中。(如下圖)


a. 商品 - 商品名稱。
b. 部位 - 商品目前持有部位。
c. 未平倉損益 – 商品目前未平倉損益。
d. 淨損益 - 商品目前淨損益。
e. 風險資金 - 目前部位的風險資金。
f. 權益值 - 商品目前權益值 (淨損益 + 未平倉損益 )。
g. 自訂文字 - 由訊號內指令 pmm_set_my_status 或 pmms_strategies_set_status_for_all 產生的一行文字來顯示目前狀態。
h. 暫停/恢復 商品交易按鈕- 允許使用者對選擇的交易商品暫停/恢復產生委託單。
i. 結束商品部位按鈕 - 允許使用者對選擇的交易商品平倉關閉部位。

而在投資組合設定中也增加了資金管理訊號來動態管理投組內的策略是否進行交易



當然也需要PT內建的資金管理相關的指令/函數來運用
(Portfolio Money Management Keywords)

關鍵詞名稱:pmms_strategies_count
參數:無
回傳值:數值
說明:傳回投組內交易策略的數量(通常與交易商品的數量相同)
備註:此僅限於投組交易(PortFolio Trader)內的訊號檔使用
範例:pmms_strategies_count

關鍵詞名稱:pmms_strategies_in_long_count(indexesArray)
參數:indexesArray 為一維陣列變數(內存策略計算當下做多未平倉的策略索引編號)。
回傳值:數值。
說明:傳回做多且未平倉策略總數。
備註:此函數僅限於投組交易(PortFolio Trader)內的訊號檔使用。
範例:
var: positionsLong(0);
array: strategyIndexes[](0);
positionsLong = pmms_strategies_in_long_count(strategyIndexes)。

關鍵詞名稱:pmms_strategies_in_short_count(indexesArray)
參數:indexesArray 為一維陣列變數(內存策略計算當下做空未平倉的策略索引編號)。
回傳值:數值。
說明:傳回做空且未平倉策略總數。
備註:此函數僅限於投組交易(PortFolio Trader)內的訊號檔使用。
範例:
var: positionsShort(0);
array: strategyIndexes[](0);
positionsShort = pmms_strategies_in_short_count(strategyIndexes)。

關鍵詞名稱:pmms_strategies_in_positions_count(indexesArray)
參數: indexesArray 為陣列變數
回傳值:數值
說明:傳回投組內未平倉交易策略的數量(接收參數),接收參數為一組動態一維陣列,內存放在作策略計算當下未平倉交易策略的索引編號
備註:此函數僅限於投組交易(PortFolio Trader)內的訊號檔使用
範例:將投組內未平倉交易策略總數量賦予變數 Positions
var: positions(0);
array: strategyIndexes[](0);
positions = pmms_strategies_in_positions_count(strategyIndexes);

關鍵詞名稱:pmms_strategies_pause_all
參數:無
回傳值:無
說明:暫停所有投組交易內策略發送委託單
備註:此函數僅限於投組交易(PortFolio Trader)內的訊號檔使用
範例:pmms_strategies_pause_all

關鍵詞名稱:pmms_strategies_deny_entries_all
參數:無
回傳值:無
說明:拒絕所有投組交易內策略開新倉位(排除已成立的進場委託單)
備註:此函數僅限於投組交易(PortFolio Trader)內的訊號檔使用
範例:pmms_strategies_deny_entries_all

關鍵詞名稱:pmms_strategies_set_status_for_all(Status)
參數 :Status 為字串變數
回傳值:無
說明:此函數賦予一個文字字串狀態給投組交易內的所有交易策略(此文字狀態會顯示在投組交易的即時視窗內的"自訂文字"欄位)
備註:此函數僅限於投組交易(PortFolio Trader)內的訊號檔使用
範例:pmms_strategies_set_status_for_all("Calculating")

關鍵詞名稱:pmms_get_strategy_named_num(StrategyIndex, VariableName)
參數:StrategyIndex 為數值變數
參數:VariableName 為字串變數
回傳值:數值
說明:取得指定交易策略索引編號內特定變數名稱的值
備註:此函數僅限於投組交易(PortFolio Trader)內的訊號檔使用
範例:pmms_get_strategy_named_num(0, "CustomVar")

關鍵詞名稱:pmms_get_strategy_named_str(StrategyIndex, VariableName)
參數:StrategyIndex 為數值變數
參數:VariableName 為字串變數
回傳值:文字字串
說明:取得指定交易策略索引編號內特定變數名稱的值
備註:此函數僅限於投組交易(PortFolio Trader)內的訊號檔使用
範例:pmms_get_strategy_named_str(0, "CustomStr")

關鍵詞名稱:pmms_set_strategy_named_num(StrategyIndex, VariableName, VariableValue)
參數:StrategyIndex 為數值變數
參數:VariableName 為字串變數
參數:VariableValue 為數值變數
回傳值:無
說明:設定一數值給指定交易策略索引編號內特定變數名稱
備註:此函數僅限於投組交易(PortFolio Trader)內的訊號檔使用
範例:pmms_set_strategy_named_num(0, "CustomVar", 5)

關鍵詞名稱:pmms_set_strategy_named_str(StrategyIndex, VariableName, VariableValue)
參數:StrategyIndex 為數值變數
參數:VariableName 為字串變數
參數:VariableValue 為字串變數
回傳值:無
說明:設定一文字字串給指定交易策略索引編號內特定變數名稱
備註:此函數僅限於投組交易(PortFolio Trader)內的訊號檔使用
範例:pmms_set_strategy_named_str(0, "CustomStr", "buy")

關鍵詞名稱:pmms_strategy_close_position(Index)
參數:Index 為數值變數
回傳值:無
說明:此函數以市價單平掉指定索引編號策略的倉位(此策略所產生的委託單會被刪除)
備註:此函數僅限於投組交易(PortFolio Trader)內的訊號檔使用
範例:pmms_strategy_close_position(0)

關鍵詞名稱:pmms_strategy_close_position_partial(Index, isNextBar, contracts)
參數:Index 代表策略索引編號的數值變數
參數:isNextBar 為布林值
            true 表示在次根K棒開盤價產生委託單 next bar at open
            false 表示在當根K棒收盤價產生委託單 this bar at close
參數:contracts 代表交易口數的數值變數
回傳值:無
說明:此函數依指定方式平倉掉特定索引編號策略的指定數量口數
備註:此函數僅限於投組交易(PortFolio Trader)內的訊號檔使用
範例:pmms_strategy_close_position_partial(0, true, 3) 將投組交易內第一個商品序號以次根K棒開盤價平倉3口

關鍵詞名稱:pmms_strategy_set_entry_contracts(StrategyIndex, Contracts)
參數:StrategyIndex 代表策略索引編號的數值變數
參數:contracts 代表交易口數的數值變數
回傳值:無
說明:此函數用來設定特定策略編號的進場交易口數(策略本身內部計算出來的口數會被忽略)若要使用內部計算口數 則參數contracts 要設為-1
備註:此函數僅限於投組交易(PortFolio Trader)內的訊號檔使用
範例:pmms_strategy_set_entry_contracts(0, 5)

關鍵詞名稱:pmms_strategy_get_entry_contracts(StrategyIndex)
參數:StrategyIndex 為數值變數
回傳值:數值
說明:此函數取得特定索引編號策略的進場單的交易口數
備註:此函數僅限於投組交易(PortFolio Trader)內的訊號檔使用
範例:pmms_strategy_get_entry_contracts(0)

關鍵詞名稱:pmms_strategy_allow_entries(StrategyIndex)
參數:StrategyIndex 為數值變數
回傳值:無
說明:此函數允許指定索引編號的策略進場交易
備註:此函數僅限於投組交易(PortFolio Trader)內的訊號檔使用
範例:pmms_strategy_allow_entries(0)

關鍵詞名稱:pmms_strategy_allow_long_entries(StrategyIndex)
參數:StrategyIndex 為數值變數
回傳值:無
說明:此函數只允許指定索引編號的策略多單進場交易
備註:此函數僅限於投組交易(PortFolio Trader)內的訊號檔使用
範例:pmms_strategy_allow_long_entries(0)

關鍵詞名稱:pmms_strategy_allow_short_entries(StrategyIndex)
參數:StrategyIndex 為數值變數
回傳值:無
說明:此函數只允許指定索引編號的策略空單進場交易
備註:此函數僅限於投組交易(PortFolio Trader)內的訊號檔使用
範例:pmms_strategy_allow_short_entries(0)

關鍵詞名稱:pmms_strategy_deny_entries(StrategyIndex)
參數:StrategyIndex 為數值變數
回傳值:無
說明:此函數拒絕指定索引編號的策略進場交易(已發出的委託單會被刪除)
備註:此函數僅限於投組交易(PortFolio Trader)內的訊號檔使用
範例:pmms_strategy_deny_entries(0)

關鍵詞名稱:pmms_strategy_deny_long_entries(StrategyIndex)
參數:StrategyIndex 為數值變數
回傳值:無
說明:此函數拒絕指定索引編號的策略多單進場交易(已發出的委託單會被刪除)
備註:此函數僅限於投組交易(PortFolio Trader)內的訊號檔使用
範例:pmms_strategy_deny_long_entries(0)

關鍵詞名稱:pmms_strategy_deny_short_entries(StrategyIndex)
參數:StrategyIndex 為數值變數
回傳值:無
說明:此函數拒絕指定索引編號的策略多單進場交易(已發出的委託單會被刪除)
備註:此函數僅限於投組交易(PortFolio Trader)內的訊號檔使用
範例:pmms_strategy_deny_short_entries(0)

關鍵詞名稱:pmms_strategy_is_paused(StrategyIndex)
參數:StrategyIndex 為數值變數
回傳值:布林值(true or false)
說明:用來判斷指定索引編號策略的委託單是否被暫停發送
備註:此函數僅限於投組交易(PortFolio Trader)內的訊號檔使用
範例:Condition1 = pmms_strategy_is_paused(0);

關鍵詞名稱:pmms_strategy_pause(StrategyIndex)
參數:StrategyIndex 為數值變數
回傳值:無
說明:此函數拒絕指定索引編號的策略發送委託單(該策略所有已發出的委託單會被刪除)
備註:此函數僅限於投組交易(PortFolio Trader)內的訊號檔使用
範例:pmms_strategy_pause(0);

關鍵詞名稱:pmms_strategy_set_status(StrategyIndex, Status)
參數:StrategyIndex 為數值變數
參數 :Status 為字串變數
回傳值:無
說明:此函數設定一個文字字串狀態給指定索引編號的交易策略(此文字狀態會顯示在投組交易的即時視窗內的"自訂文字"欄位)
備註:此函數僅限於投組交易(PortFolio Trader)內的訊號檔使用
範例:pmms_strategy_set_status("Long");

PMMS 關鍵詞參考來源 
https://www.multicharts.com/trading-software/index.php/Portfolio_Trader
https://www.multicharts.com/trading-software/index.php/PMM_Keywords

待續‧‧‧‧‧‧

沒有留言:

張貼留言