
您好,下面程式碼是看網路上XQ網格交易範例來的,如果要弄成上圖的等比網格怎麼寫,謝謝
//參數定義 input:P_LS(1,"多空啟動",inputkind:=dict(["多方啟動",1],["空方啟動",-1])); input:P_UpLimit(15000,"區間上緣"); input:P_DnLimit(12000,"區間下緣"); input:P_Grid(30,"網格數"); input:P_GridV(1,"每筆張數"); //變數定義 var:V_LS(0);//多空方向 var:V_Grid(0);//網格點數 var:intrabarpersist V_GridNo(0);//網格編號 var:intrabarpersist V_GridPosition(0);//網格目標部位 //多空方向,預設做多 if P_LS=-1 then V_LS=-1 else V_LS=1; //計算每格點數 once V_Grid = intPortion((P_UpLimit-P_DnLimit)/P_Grid); if V_LS=1 then value1=MaxList((close-P_DnLimit)/V_Grid,0) else value1=MaxList((P_UpLimit-close)/V_Grid,0); //計算目前所處網格編號,最低網格為0號 V_GridNo = intPortion(value1); //計算網格應有部位 if V_LS=1 then begin V_GridPosition = P_GridV * maxList(P_Grid - V_GridNo,0); //啟動策略或價格下跌造成部位不足,以網格下價買齊 if filled < V_GridPosition then begin setposition(V_GridPosition, P_DnLimit + V_Grid*V_GridNo); end else begin //價格上漲造成部位太多,以網格上價賣出 setposition(V_GridPosition, P_DnLimit + (V_Grid+1)*V_GridNo); end; end else begin V_GridPosition = - P_GridV * maxList(P_Grid - V_GridNo,0); //啟動策略或價格上漲造成部位不足,以網格上價放空 if filled > V_GridPosition then setposition(V_GridPosition, P_UpLimit - V_Grid*V_GridNo); //價格下跌造成部位太多,以網格下價回補 setposition(V_GridPosition, P_UpLimit - (V_Grid+1)*V_GridNo);//依網格價位將委託設定至目標部位 end;
1 評論