買進及賣出價格問題

  •   121 
  • 最後發表   milkteeeea  2021 十二月 23
milkteeeea 發文於   2021/12/21

input: exit_period(20, "收盤前N分鐘平倉");

input: loss_percent(5, "停損(%)");

var: long_condition(false);

var: exit_long_condition(false);

var: market_close_condition(false);

var: price_condition(false);

value1 = GetField("分公司買進家數", "D")[1];

value2 = GetField("分公司賣出家數", "D")[1];

value3 = GetField("Volume", "D")[1];

value4 = (value2 - value1);

long_condition = Close > GetField("RefPrice", "D") * (1+ 1.5/100) and value4 > value3 * 0.02 and value3 > 500;

exit_long_condition = Close < Average(Close, 10);

market_close_condition = EnterMarketCloseTime(exit_period);

price_condition = Close > 10;

if Position = 0 and long_condition and price_condition then

begin

SetPosition(1, MARKET);

end;

 

 

if Position = 1 then

begin

if loss_percent > 0 and Close <= FilledAvgPrice*(1-0.01*loss_percent) then

begin

SetPosition(0, MARKET);

end else if exit_long_condition and market_close_condition then

begin

SetPosition(0, MARKET);

end;

end;

 

想詢問3228 4/21買入的那一筆為什麼不是設定的前一日收盤價的+1.5%,4128及5608為什麼沒有在設定的-5%時停損?

附加文件

XQ小幫手 發文於   2021/12/23

Hello milkteeeea,

 

由您的圖片來看,這應該是在作回測。

回測自動交易中心的運作邏輯為當條件觸發後開始用下一個價格來比對,如果可交易的話就會進出場。

您setposition裡使用 market ,所以會在條件達成後的下一個價格交易。

另外股票的最小跳動點不一定剛好會等於您計算的價格,自然也無法使用該價格交易。

以上兩種原因都可能會造成此情況。

您可以參考 setposiiton 裡的說明,使用限價單或是策略預設的買進賣出價格,或許會比較接近。

發表回覆
Close