小幫手您好,
在使用XScript=>選股,所編寫的選股程式要如何執行回測,
例如:我想知道我今天編寫修正的選股程式,要套用在8/28來測試是否能達到我想選的股票要如何設定?

小幫手您好,
在使用XScript=>選股,所編寫的選股程式要如何執行回測,
例如:我想知道我今天編寫修正的選股程式,要套用在8/28來測試是否能達到我想選的股票要如何設定?

你好:
選股是不能回測的喔,要回測的話要寫成警示腳本,請見說明網頁:策略雷達回測功能介紹
小幫手您好:
可以教我如何使用回測功能嗎?
我的程式如下,
回測的結果都失敗,請問問題點在哪?如何修改?
// 布林通道超買訊號
//
Input: Length(20), UpperBand(2), LowerBand(2), HUpperBand(3);
//布林值
variable: BolUpperBand(0);
variable: BolLowerBand(0);
variable: BolDiff(0);
variable: Bol_B(0);
variable: HBolUpperBand(0);
//股價MA
variable: MA5(0);
variable: MA20(0);
variable: MA60(0);
variable: MA120(0);
variable: MA240(0);
//成交量
variable: VMA3(0);
variable: VMA5(0);
variable: VMA18(0);
variable: VMA20(0);
variable: VMA60(0);
variable: VMA120(0);
variable: VMA240(0);
//成交額
variable: VolumeMoney(0);
variable: VolumeMoney5(0);
//RSI
variable: RSI6(0);
variable: RSI13(0);
//威廉指標
variable: PercentRBound(0);
PercentRBound = PercentR(24) - 100;
//MACD
variable: difValue(0), macdValue(0), oscValue(0);
variable: LongdifValue(0), LongmacdValue(0), LongoscValue(0);
//
variable: pb(0);
SetInputName(1, "期數");
SetInputName(2, "通道上緣");
SetInputName(3, "通道下緣");
SetInputName(4, "3倍通道上緣");
settotalbar(300);
//布林
BolUpperBand=bollingerband(Close, Length, UpperBand);
BolLowerBand=bollingerband(Close, Length, -1 * LowerBand);
BolDiff=((BolUpperBand-BolLowerBand)/BolUpperBand)*100;
Bol_B=(close-BolLowerBand)/(BolUpperBand-BolLowerBand);
HBolUpperBand=bollingerband(Close, Length, HUpperBand);
//成交量
VMA3=average(volume,3);
VMA5=average(volume,5);
VMA18=average(volume,18);
//RSI
RSI6=rsi(close,6);
RSI13=rsi(close,13);
//MACD
MACD(weightedclose(), 6, 13, 9, difValue, macdValue, oscValue);
MACD(weightedclose(), 19, 39, 9, LongdifValue, LongmacdValue, LongoscValue);
VolumeMoney5=(((Volume[4]*close[4])+(Volume[4]*close[3])+(Volume[2]*close[2])+(Volume[1]*close[1])+(Volume*close))/5)/10000;
//計算均線糾結
value1= absvalue(ema(close,20) - ema(close,60));
value2= absvalue(ema(close,60) - ema(close,120));
value3= absvalue(ema(close,120) - ema(close,20));
value4=maxlist(value1,value2,value3);
value5=minlist(value1,value2,value3);
value6=((value4-value5)/value5);
value7=((close-close[10])/close)*100;
pb = (BolUpperBand-BolLowerBand)/average(close,20);
if pb<=0.1
and oscValue>=oscValue[1] and oscValue[1]>=oscValue[2]
//and difValue>0 and macdValue>0 and LongdifValue>0 and LongmacdValue>0
and close<HBolUpperBand
//and value7<=2
and ema(close,20)>ema(close,60)
//and (VMA3[3] crosses over VMA18[3] or VMA3[2] crosses over VMA18[2] or VMA3[1] crosses over VMA18[1] or VMA3 crosses over VMA18)
//and volume>=100
and (Volume*close)/10000>=1
then Ret=1;
你好:
你的value6=((value4-value5)/value5); 分母會為0,所以系統會無法執行,以上說明。
3 評論