逐筆交易秒進秒出

  •   378 
  • 最後發表   Richillman  2022 十一月 14
Richillman 發文於   2022/08/26

才剛進場下一秒還沒達到移動停利條件就馬上出場,已經發生不止一次。

以下是語法,請問會是哪裡有問題?

 

執行環境還原 5Min 逐筆 

 

Inputs:

StartTradeTime(091000), EndTradeTime(110000), LastExitTime(131000),

StopLoss(2), TakeProfit(3),

ProfitTarget1(2.33), ProfitDrawdown1(76.4),

ProfitTarget2(3.77), ProfitDrawdown2(61.8),

ProfitTarget3(5), ProfitDrawdown3(50),

ProfitTarget4(6.1), ProfitDrawdown4(38.2),

ProfitTarget5(6.765), ProfitDrawdown5(23.6);

 

 Variables:

  IntrabarPersist MaxProfitPoint(0);

 

MaxProfitPoint = Iff(Position <> 0, AbsValue(FilledAvgPrice - Low), 0);

 

if Position <> 0 and Filled <> 0 then begin

 { 停損 }

if Close cross over FilledAvgPrice * (100 + StopLoss) * 0.01 then begin

SetPosition(0, Market, Label := "Stop Loss");

end; 

{ 移動停利 }

if MaxProfitPoint > FilledAvgPrice * ProfitTarget1 * 0.01 and Close cross over FilledAvgPrice - MaxProfitPoint * (100 - ProfitDrawdown1) * 0.01 then begin 

SetPosition(0, Market, Label := "Trailing Stop 1");

end;

 

if MaxProfitPoint > FilledAvgPrice * ProfitTarget2 * 0.01 and Close cross over FilledAvgPrice - MaxProfitPoint * (100 - ProfitDrawdown2) * 0.01 then begin 

SetPosition(0, Market, Label := "Trailing Stop 2");

end;

 

if MaxProfitPoint > FilledAvgPrice * ProfitTarget3 * 0.01 and Close cross over FilledAvgPrice - MaxProfitPoint * (100 - ProfitDrawdown3) * 0.01 then begin 

SetPosition(0, Market, Label := "Trailing Stop 3");

end;

 

if MaxProfitPoint > FilledAvgPrice * ProfitTarget4 * 0.01 and Close cross over FilledAvgPrice - MaxProfitPoint * (100 - ProfitDrawdown4) * 0.01 then begin 

SetPosition(0, Market, Label := "Trailing Stop 4");

end;

 

if MaxProfitPoint > FilledAvgPrice * ProfitTarget5 * 0.01 and Close cross over FilledAvgPrice - MaxProfitPoint * (100 - ProfitDrawdown5) * 0.01 then begin 

SetPosition(0, Market, Label := "Trailing Stop 5");

end;

end;

 

附加文件

排序方式: 標準 | 最新
Richillman 發文於   2022/08/26

是否成交當下 FilledAvgPrice 還是0  所以  AbsValue(0 - Low) = Close 才會判斷有符合停利?

XQ小幫手 發文於   2022/09/01

Hello Richillman,

 

position <> 0 並不代表您已經有成交,只能代表您的部位不為0,委託可能還未成交,或是成交了但系統還沒更新。

建議您將 MaxProfitPoint = Iff(Position <> 0, AbsValue(FilledAvgPrice - Low), 0); 改為 

MaxProfitPoint = Iff(filled <> 0, AbsValue(FilledAvgPrice - Low), 0);

這樣才能確保不會發生 FilledAvgPrice 為 0 的狀況。

 

另外小幫手建議您在腳本中加上print將相關數值印出檢查,看是否有如同您想的運算。

您附上的腳本中沒有進場邏輯,小幫手加上個空手就市價進場的邏輯作測試,沒有發生進場後馬上出場的狀況。(參考附圖)

附加文件

Mix 發文於   2022/11/11

感謝樓主分享,借貼一下版

 

小編您好,我想詢問一下,看到這個移動停利的真的有很大的收穫,

如果移動停利(保利),想要用在現股當沖部份的時候,是不是就無法使用?

 

XQ小幫手 發文於   2022/11/14

Hello Mix,

 

移動停利可以使用在當沖。

需注意上面腳本中判斷出場有用到 cross over,所以如果使用在日頻率上的話會是用當下的價格以及前一日的收盤價來判斷。

您也可以參考系統內建的停損停利範例腳本。

  • 按讚來自於
  • yuhao624
發表回覆
Close