小幫手求救
我在警示腳本寫了一個布林通道爆發的策略時遇到下面兩個問題
1. 進行10年回測卡在0.82%不動了,過半小時我就手動停止了,請問有什麼可以增加效率/避免當掉的方法嗎?
或是我哪邊寫錯?
2. 假若策略沒抓到任何一支的話就沒辦法print了嗎? 這樣要怎麼debug??
3. 警示腳本好像沒法取得EPS、周轉率等指標? 或有無替代方式?
我用的電腦是1年前買的電競筆電 i7-9750H,效能全開
入場策略:布林通道爆發,隔天買入
範圍:所有上市上櫃普通股全部
出場策略:虧損5% 或 跌破月線 或 除權息前2天,隔天賣出


從15:45 開始執行,很快就到0.82%,但開始卡在這裡直到16:10分手動停止都還在0.82%
入場策略
Input:
Length(20, "期數"),
SD(2, "標準差"); // 標準差 Standard Deviation
SetBackBar(25);
var:BBUp(0),BBDown(0);
// 判斷現在是否正在計算當前資料
if currentbar=gettotalbar then
begin
// 判斷大盤 20ma翻揚(沒翻揚就離開)
if Average(GetSymbolField("TSE.TW","收盤價"),Length) < Average(GetSymbolField("TSE.TW","收盤價")[1],Length)
then Ret = 0;
Print(File("d:\xq_log\[ScriptName]_[Symbol]_[Freq].log"), date, symbol, close);
// 個股 20ma翻揚(沒翻揚就離開)
if Average(close,5) <= Average(close[1],5) then ret=0;
// 收紅,沒就離開
if close < open then ret = 0;
// 成交量 > 5日均量的2倍,沒就離開
if volume < Average(volume,5) * 2 then ret=0;
// 成交金額大於1000萬,沒就離開
if GetField("成交金額(元)") < 10000000 then ret=0;
// 過去10天通道壓縮,沒就離開
if not trueall((
// 上通道下降
bollingerband(Close[2], Length, SD) >= bollingerband(Close[1], Length, SD)
and
// 下通道上升
bollingerband(Close[2], Length, -SD) <= bollingerband(Close[1], Length, -SD)
),10) then ret = 0;
// 基本面
// 過去四季EPS總和 > 0
//if getfield("每股稅後淨利","Q")[4] + getfield("eps","Q")[3] + getfield("eps","Q")[2] + getfield("eps","Q")[1] <= 0 then ret = 0;
// 周轉率50以上
//if getfield("周轉率") < 50 then ret = 0;
// 上述條件都通過就ok
ret = 1;
end;
出場策略
// 若有除權息就提早前兩天出掉
if close < average(close,20) or
(datediff(GetField("除權息日期"), date) <= 2 and datediff(GetField("除權息日期"), date) >0)
then ret = 1;
5 評論