程式新手之前都是複製現有的腳本再進行剪下貼上做修改,當然這邊的 _BuyOrSell也是爬文撿來的,
今天弄了一個「大戶散戶同向且K>D,量>1000時買進」的腳本如下
----------------------------------------------
input: _BuyOrSell(0), Length(9), RSVt(3), Kt(3);
SetInputName(1, "買進=1;賣出=2");
SetInputName(2, "天數");
SetInputName(3, "RSVt權數");
SetInputName(4, "Kt權數");
value1 = GetField("賣出特大單量","D") + GetField("賣出大單量","D");
value2 = GetField("買進特大單量","D") + GetField("買進大單量","D");
value3 = value2 - value1;
value4 = GetField("賣出小單量","D") + GetField("賣出中單量","D");
value5 = GetField("買進小單量","D") + GetField("買進中單量","D");
value6 = value5 - value4;
Value8 = GetQuote("總量(日)");
Value8 = GetQuote("DailyVolume");
Value8 = q_DailyVolume;
// KD指標, K值由下往上穿越D值
//
variable: rsv(0), k(0), _d(0);
SetTotalBar(maxlist(Length,6) * 3);
Stochastic(Length, RSVt, Kt, rsv, k, _d);
if value3 > 0 and value6 > 0 and k > _d and Value8>1000 then
begin
if _BuyOrSell =1 then ret = 1;
end;
if k < _d and _BuyOrSell = 2 then ret = 1;
----------------------------------

1進場2出場,完成後編譯沒問題,但跑回測出現失敗

如紅框處,賣出=2=1,下面賣出=2=2,然後無法進行回測,請問問題出在哪邊呢?
另外,希望以後貴公司能開發出「中文模組化的交易腳本編輯」,「當(如果)…且(或)…,則進行…,不然就…,then+1」,
我爬了一些文跟教學跟腳本,發現最大的問題就是教學沒有告訴初學者設定條件的基本語法的有哪些,哪個又是什麼時候要用在哪裡,什麼情形用哪個最快速省電腦效能,
完全不知道是要用if還是when(如果、當,中文意思接近吧?)、condition這些中的哪一個,舉個例「出現外盤特大單時+1」,新手就卡在不知道要用什麼「開頭」(我只會用if...and...then最簡單這些 ),例我卡關的點

Value1 = GetField("買進特大單量");
Value1 = GetField("BidVolume_XL");
if value1>=100(我只會寫有給予數值,上面的getfied還是用插入欄位)
then ret=1;
但上面是定義了value1>=100,如果我只是要系統預設的「出現外盤特大單」出現就+1(單量大小視系統對價格不同股張數定義,而不是我定義大於幾張,由我定義的話平平10張,20元的股跟200元的股總價差10倍),但我寫出的東西完全不能編譯,如下
Value1 = GetField("買進特大單量");<<<<<(插入欄位有特大單量,特大單金額,特大單成交次數,但好像都不是我要的只好選量)
Value1 = GetField("BidVolume_XL");
if value1 成立<<<這個成立要用什麼語法?卡關
或
Value1 = GetField("買進特大單量");
Value1 = GetField("BidVolume_XL");
then ret=1;<<<<系統跟我提示then之前還要有東西不能這樣用,但我也不知道「該用什麼」
這邊也請小幫手順便解惑,如果只是單純要「出現外盤特大單時」(或其他單一條件)出現就+1該怎麼寫,感謝小幫手。


11 評論