選股中心的回測機制

  •   585 
  • 最後發表   LeonHuang  2017 九月 06
LeonHuang 發文於   2017/09/01

小幫手您好,

   在使用XScript=>選股,所編寫的選股程式要如何執行回測,

   例如:我想知道我今天編寫修正的選股程式,要套用在8/28來測試是否能達到我想選的股票要如何設定?

 

排序方式: 標準 | 最新
XQ小幫手 發文於   2017/09/04

你好:

  選股是不能回測的喔,要回測的話要寫成警示腳本,請見說明網頁:策略雷達回測功能介紹

LeonHuang 發文於   2017/09/05

小幫手您好:

   可以教我如何使用回測功能嗎?

   我的程式如下,

   回測的結果都失敗,請問問題點在哪?如何修改?

 

 

// 布林通道超買訊號

//

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;

 

 

XQ小幫手 發文於   2017/09/06

你好:

  你的value6=((value4-value5)/value5); 分母會為0,所以系統會無法執行,以上說明。

發表回覆
Close