在資金管理訊號內,利用一個指標排序的方式來決定投組內進場交易的商品以及多空部位的建立 ,有範例程式碼的說明 !
策略的邏輯是計算動量指標百分比來評估投資組合內所有商品,透過資金管理訊號來作指標排序,並依據排序的優先順序來決定投組內那些商品要做多,或那些商品要作空。策略內也加上了簡單的交易口數計算與出場方式
Portfolio_Rotation Signal 交易策略內容與說明
(這個策略是加在投組的訊號策略內)
//動量指標百分比做為投組每個商品每根K棒的計算評估基準
inputs:Formula(PercentChange(close, 14));
variables: formulaValue(0);
formulaValue = Formula;
//判斷交易策略是否在投組交易APP內執行
if getappinfo(aiisportfoliomode) <> 1 then
raiseruntimeerror("Signal can be used in Portfolio only.");
//將動量指標百分比數值formulaValue 存在變數RotationalValue 內
pmm_set_my_named_num("RotationalValue", formulaValue);
//建立作多/作空進場訊號
buy("LE") next bar at Highest(Close,5) stop ;
sellshort("SE") next bar at Lowest(Close,5) stop ;
//將各商品的部位狀態以 pmm_set_my_status 關鍵詞存放
pmm_set_my_status(iffstring(marketposition = 0, "Flat",iffstring(marketposition = 1, "Long", "Short")));
// 資金分配
var: PotentialEntryPrice(close), MoneyCostForInvestPerCtrct(0);
if (entryprice > 0) then PotentialEntryPrice = entryprice;
//計算每筆交易成本 = 保證金+最大潛在損失(這部分可以在投資組合設定畫面內輸入)
MoneyCostForInvestPerCtrct =
pmms_calc_money_cost_for_entry_per_cntrct(PotentialEntryPrice, Portfolio_GetMarginPerContract)+
pmms_calc_money_cost_for_entry_per_cntrct(PotentialEntryPrice, Portfolio_GetMaxPotentialLossPerContract);
//如果交易成本小於0則輸出錯誤信息
if 0 > MoneyCostForInvestPerCtrct then
raiseruntimeerror( text("Error! Price = ", PotentialEntryPrice:0:6, ", PMargin = ", Portfolio_GetMarginPerContract, ", PMaxPLoss = ", Portfolio_GetMaxPotentialLossPerContract));
// 將商品貨幣轉換成投組貨幣並存入變數 MoneyCostForInvestPerCtrct
pmm_set_my_named_num("MoneyCostForInvestPerCtrct", pmms_to_portfolio_currency(MoneyCostForInvestPerCtrct));
// 出場條件
inputs: StopLossPcntsOfPortfolio(0.1), ProfitTargetPcntsOfPortfolio(0.1);
variable: value(0);
setstopposition;
//以投組總權益的千分之一做為停損/停利的基準(會先將貨幣匯率作轉換)
value = StopLossPcntsOfPortfolio * 0.01 * Portfolio_Equity;
setstoploss(convert_currency(datetime[0], portfolio_CurrencyCode, SymbolCurrencyCode, value));
value = ProfitTargetPcntsOfPortfolio * 0.01 * Portfolio_Equity;
setprofittarget(convert_currency(datetime[0], portfolio_CurrencyCode, SymbolCurrencyCode, value));
Portfolio_Rotation_MM Signal資金管理訊號內容與說明(管理並決定進場交易的商品)
(這個策略是加在投資組合設定的資金管理訊號內)
更多的說明與範例回測
|