使用網格交易程式時,執行記錄會一直顯示"目標部位與目前部位相同且價格不變以下指令不予執行"

  •   186 
  • 最後發表   taipeineo  2023 三月 01
taipeineo 發文於   2023/02/22

您好,
1.使用網格交易程式時,執行記錄會一直顯示"目標部位與目前部位相同且價格不變以下指令不予執行",
   如何讓執行記錄不要一直顯示這個訊息呢? 不知道能不能請問該如何修改程式呢?
2. 倒數第二行,setposition(V_GridPosition, P_UpLimit - (V_Grid+1)*V_GridNo);//依網格價位將委託設定至目標部位

   這行程式是不是應該也要像上面V_LS=1 時一樣, 要用 end else begin......end; 來包住倒數第二行這段程式嗎呢?

   不然這行程式每次都會執行...是這樣嗎?

新手使用, 給您添麻煩了...請多包涵...感恩貴團隊...謝謝...

//參數定義

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;

排序方式: 標準 | 最新
taipeineo 發文於   2023/02/23

好像OK了...只要在setposition前,再多加一個 position <> V_GridPosition判斷式就好了...

XQ小幫手 發文於   2023/03/01

 Hello taipeineo,

 

您可以參考 自動交易語法介紹 裡面的說明。

setposition執行到時都會去判斷是否要交易,如果不用(交易指令的部位和目前部位相同且價格相同)的話就會出現相關訊息。

所以可以用 position 和 filled 來控制是否要執行交易指令。

發表回覆
Close