網格交易

  •   444 
  • 最後發表   小資男  2024 九月 06
小資男 發文於   2024/09/02

請問網格交易可以分別設定開始進行網格交易價格,並分別設定往上幾格往下幾格,

舉例我庫存已有10口,希望策略啟動後當價格到達22000開始進行網格交易每往上50點就開始賣出1口共計8格,但是往下就僅往下2格,是否可以呢.

排序方式: 標準 | 最新
虎科大許教授 發文於   2024/09/02

網格間距可以用參數處理,往上、往下設定不同的參數。

小資男 發文於   2024/09/03

我用範例填入炎洲試跑但是會跑出錯誤碼說嘗試除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;

附加文件

虎科大許教授 發文於   2024/09/03

我用你的程式測試炎洲,並沒有除以零的錯誤,倒是有一直重複下無效委託的問題。買進之後,你需要一個變數控制不再下相同的買進委託,直到價格來到下一個網格,才會再下單。

小資男 發文於   2024/09/04

DEAR 教授:    

    可以請教設定怎樣的變數可以讓他不要重複下無效委託,是否為設定FILL,可否舉例解惑,感謝.

 

虎科大許教授 發文於   2024/09/04

將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

XS小編 發文於   2024/09/06

 Hello 小資男,

 

您腳本中的除法分母只有 P_Grid 和 V_Grid,所以發生的可能原因是參數 P_Grid 設為0,或是 P_UpLimit 與 P_DnLimit 設為相同數字。

另外關於用 position 和 filled 控制進場的部分,可以參考 自動交易語法介紹 裡的說明。

 

感謝 虎科大許教授 的熱心回覆。

發表回覆
Close