你好,我有编程基础,目前我用通达信,但对TBquant是小白。我周末刚刚安装了TBquant,发现很不错,想写一个公式代码来选股(选出当前MA5金叉MA20的股票)。在下面公司代码,我定义金叉变量JC,在Bar函数赋值JC=CrossOver(MA5,MA20)。 请问我在公式选股界面的指标条件怎么写,才能满足条件MA5金叉MA20? 本来我想应该在指标条件设置JC==True,但是我找不到True,也手工输入不进去;因此我定义了Bool类型Success参数赋值为True,然后在指标条件设置JC==Success,但发现还是不行。 请帮忙看下是什么原因?怎么编写代码、然后怎么在公式选股设置指标条件来选股? 谢谢!
详细代码见下:
Params
//此处添加参数
Numeric millsecs(1000);
Bool Success(True);
Bool Failure(False);
Vars
//此处添加变量
Numeric avg;
Global Integer timerId;
Series<Numeric> MA5;
Series<Numeric> MA20;
Series<Bool> JC;
Series<Bool> SC;
OnBar(ArrayRef<Integer> indexs)
{
avg=calcAvg(high,low);
MA5 = AverageFC(Close,5); //5日均线
MA20 = AverageFC(Close,20); //20日均线
PlotNumeric("MA5", MA5);
PlotNumeric("MA20", MA20);
JC = CrossOver(MA5, MA20); //5日均线金叉20日均线
SC = CrossUnder(MA5, MA20); //5日均线死叉20日均线
PlotBool("Success",True);
PlotBool("Failure",False);
PlotBool("JC",False);
/*股票操作*/
IF (JC) //MA5金叉MA20
{
PlotBool("JC",JC,Low, Red);
SetPickCondition();
}
IF (SC) //MA5死叉MA20
{
PlotBool("SC",SC,High, Green);
SetPickCondition();
}
}
Params
//此处添加参数
Numeric millsecs(1000);
Bool Success(True);
Bool Failure(False);
Vars
Series<Numeric> MA5;
Series<Numeric> MA20;
Series<Bool> JC;
Series<Bool> SC;
Events
OnBar(ArrayRef<Integer> indexs)
{
MA5 = AverageFC(Close,5); //5日均线
MA20 = AverageFC(Close,20); //20日均线
PlotNumeric("MA5", MA5);
PlotNumeric("MA20", MA20);
JC = CrossOver(MA5, MA20); //5日均线金叉20日均线
SC = CrossUnder(MA5, MA20); //5日均线死叉20日均线
/*股票操作*/
IF (JC) //MA5金叉MA20
{
PlotBool("JC",JC,Low, Red);
SetPickCondition();
}
IF (SC) //MA5死叉MA20
{
PlotBool("SC",SC,High, Green);
SetPickCondition();
}
}
稍微做了一些修改优化,用这个代码选股确实选出了正确的结果。
不知道你说的选不出来是什么意思