請問網格交易可以分別設定開始進行網格交易價格,並分別設定往上幾格往下幾格,
舉例我庫存已有10口,希望策略啟動後當價格到達22000開始進行網格交易每往上50點就開始賣出1口共計8格,但是往下就僅往下2格,是否可以呢.
請問網格交易可以分別設定開始進行網格交易價格,並分別設定往上幾格往下幾格,
舉例我庫存已有10口,希望策略啟動後當價格到達22000開始進行網格交易每往上50點就開始賣出1口共計8格,但是往下就僅往下2格,是否可以呢.
網格間距可以用參數處理,往上、往下設定不同的參數。
我用範例填入炎洲試跑但是會跑出錯誤碼說嘗試除0,是否哪裡有問題
//參數定義
input:P_LS(1,"多空啟動",inputkind:=dict(["多方啟動",1],["空方啟動",-1]));
input:P_UpLimit(80,"區間上緣");
input:P_DnLimit(70,"區間下緣");
input:P_Grid(10,"網格數");
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;
我用你的程式測試炎洲,並沒有除以零的錯誤,倒是有一直重複下無效委託的問題。買進之後,你需要一個變數控制不再下相同的買進委託,直到價格來到下一個網格,才會再下單。
DEAR 教授:
可以請教設定怎樣的變數可以讓他不要重複下無效委託,是否為設定FILL,可否舉例解惑,感謝.
將if filled < V_GridPosition then
改成
if position < V_GridPosition and filled < V_GridPosition then
將if filled > V_GridPosition then
改成
if position > V_GridPosition and filled > V_GridPosition then
6 評論