為何空單進場腳本未觸發賣出,出場腳本會先觸發買進?

  •   99 
  • 最後發表   KHJBSNET  2021 八月 23
KHJBSNET 發文於   2021/08/16

進場腳本:

input: averageVolume(1000);

variable:rsv_d(0), KK(0), dd(0); //宣告3個參數

stochastic(40,3,3, rsv_d, KK, dd); //XQ內建寫好的KD函?==>呼叫他

value1 = average(close,60);

value2 = LinearRegSlope(value1,60);

Value3 = q_Last;//成交價

value4 = average(GetField("Volume", "D")[1], 5);//"5日均量"

condition1 = KK < 40 and KK[1] >=40 and KK[2] >=40 and KK[3] >=40;

condition1 = close < value1;

condition2 = close[1] >= 20 and value4 >= averageVolume;

condition3 = close < close[1];

condition4 = value2 > 0;

condition5 = value2 < value2[1] ;

condition6 = close cross above average(close,20);

condition7 = KK cross above 20;

//進場

variable:byin(false),byprice(0);

if byin=false and condition1 and condition2 and condition3 and condition4 and condition5

then

   begin

   byin=true;

   ret=1;

   byprice=close;

   end;

{//出場

if byin=true and condition6 or condition7;

   begin

   byin=false;

   ret=1;

   end;

//尾盤出場

if byin=true and time > 132400 and volume > 0 then

   begin

   byin=false;

   ret=1;

   end;}

   

print(time,rsv_d, KK, dd,byin,byprice,condition1,condition2,condition3,condition4,condition5);

出場腳本:

input: averageVolume(1000);

variable:rsv_d(0), KK(0), dd(0); //宣告3個參數

stochastic(40,3,3, rsv_d, KK, dd); //XQ內建寫好的KD函?==>呼叫他

value1 = average(close,60);

value2 = LinearRegSlope(value1,60);

Value3 = q_Last;//成交價

value4 = average(GetField("Volume", "D")[1], 5);//"5日均量"

condition1 = KK < 40 and KK[1] >=40 and KK[2] >=40 and KK[3] >=40;

condition1 = close < value1;

condition2 = close[1] >= 20 and value4 >= averageVolume;

condition3 = close < close[1];

condition4 = value2 > 0;

condition5 = value2 < value2[1] ;

condition6 = close cross above average(close,20);

condition7 = KK cross above 20;

//進場

variable:byin(false),byprice(0);

if byin=false and condition1 and condition2 and condition3 and condition4 and condition5

then

   begin

   byin=true;

   byprice=close;

   end;

//出場

if byin=true and condition6 or condition7 then

   begin

   byin=false;

   ret=1;

   end;

//尾盤出場

if byin=true and time > 132400 and volume > 0 then

   begin

   byin=false;

   ret=1;

   end;

   

print(time,rsv_d, KK, dd,byin,byprice,condition1,condition2,condition3,condition4,condition5);

排序方式: 標準 | 最新
XQ小幫手 發文於   2021/08/18

Hello KHJBSNET,

 

策略雷達沒有庫存的概念,所以只要您的條件達成就會觸發。

因此當您出場腳本先觸發時,就會執行您在進場腳本裡的設定買進。

小幫手建議您可以考慮使用交易腳本,有查詢庫存部位的函數讓您可以在同一隻腳本內完成進出場的動作。

策略雷達的教學

自動交易中心的教學

KHJBSNET 發文於   2021/08/20

我這其實是兩個腳本!

進場腳本,我把出場的語法用"{}"遮掉了!

出場腳本,我把進場的語法裡的ret=1;去掉了!

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

Hello KHJBSNET,

 

小幫手知道您是兩個腳本,也有看到您有註解。

但如同小幫手上面所說,策略雷達(警示腳本)沒有庫存的概念,只要條件達成就會觸發。

所以您同時執行兩個策略時,只要其中一個策略的條件達成的話該策略就會觸發。

並不會因為您這是進場腳本還是出場腳本來決定是否觸發。

您的出場腳本先觸發,單純就是因為他的條件先達成,所以就觸發了。

該策略並不會等進場腳本觸發後才觸發。

如果您希望先進場後再出場,請使用自動交易中心搭配交易腳本。

發表回覆
Close