小幫手您好,
我有一段code其實羅輯上很簡單明白,但就是不會觸發,可以幫我看一下嗎?
下單設定為單根K棒觸發+逐筆洗價
1.會無法自動觸發的原因,我找到了,如果_stock 沒有一開始再寫一行「_stock = 0」它就不會觸發訊息,但我覺得很奇怪,一開始宣告變數的初始值它就是0了,不是嗎?為何要再寫一從_stock = 0才是0?
2.觸發了下單了,但停損停利就是不會觸發。
3.重點來了,還沒平倉前,有觸發的話仍會下單,造成無法維持在一口單的狀態。(記錄庫存的變數 _stock=1或0,會只存在同個商品的每筆單中嗎,同商品的第二個訊號出現時則 _stock仍是初始狀態是0嗎?)
再麻煩您一下,小幫手。
摘錄如下:
vars:_cost(0),_stock(0),_gainprice(0),_lossprice(0);
input:_BuyOrSell(1,"1進場,0出場");
input:_gain(10,"停利點數");
input:_loss(10,"停損點數");
//===============================================.
//_stock = 0;
//多單進場
if _stock = 0 and close > high[1] then
//and Volume > Volume[1]
begin
_stock = 1 ; ////////////////
_cost = close ;
_gainprice = _cost + _gain; //停利價
_lossprice = _cost - _loss; //停損價
if _BuyOrSell=1 then ret=1;
retmsg ="多單進場";
Print(Date,Time,"多單進場:","_stock",_stock,"_cost:",_cost,"close:",close,"_gainprice",_gainprice,"_lossprice",_lossprice);
end;
//多單停利
if _stock = 1 and close > _gainprice then //停利
begin
_stock = 0 ; ////////////////
if _BuyOrSell=0then ret=1;
retmsg ="多單停利";
Print(Date,Time,"多單停利:","_cost:",_cost,"close:",close);
end;
//多單停損
if _stock = 1 and close < _lossprice then //停損
begin
_stock = 0 ; ////////////////
if _BuyOrSell=0 then ret=1;
retmsg ="多單停損";
Print(Date,Time,"多單停損:","_cost:",_cost,"close:",close);
end;


43 評論