jwieen 发表于 2015-11-26 16:17:27

简单的均线交叉,加载后不显示信号,求助。

一个简单的均线交叉系统,前一根Bar的收盘价高于前10天的最高价,并且前一个bar收盘时,短期均线在长期均线上面时,在最新的一根BAR上以开盘价开多,但是加载后没有信号,求助
Params
Numeric Length(10);
Numeric MA1(20);
Numeric MA2(60);
Numeric Lots(1);
Numeric Offset(2);

Vars
NumericSeries Highestvalue;
NumericSeries Lowestvalue;
NumericSeries avgp1;
NumericSeries avgp2;

Begin
avgp1=average(Close,MA1);
PlotNumeric("avgp1",avgp1);
avgp2=average(Close,MA2);
PlotNumeric("avgp2",avgp2);
Highestvalue=Highest(High,Length);
Lowestvalue=Lowest(Low,Length);

If(MarketPosition==0 and Close>Highestvalue And avgp1>avgp2 )
{Buy(Lots,Open+Offset * MinMove * PriceScale);}

If(MarketPosition==0 and Close<Lowestvalue And avgp1<avgp2)
{SellShort(Lots,Open-Offset * MinMove * PriceScale);}

If(MarketPosition==1 and Close<avgp2)
{Sell(Lots,Open-Offset * MinMove * PriceScale);}

If(MarketPosition==-1 and Close>avgp2)
{BuyToCover(Lots,Open+Offset * MinMove * PriceScale);}
End

小米 发表于 2015-11-26 16:41:40

highestvalue是计算是用high来计算的,, 而你的在判断条件是当close>highestvalue时才开多(先忽略avgp1>avgp2的条件不看)
就算是一个只涨不跌的K线上,收盘价等于最高价的情况下,也只能是使用close==highestvalue的判断啊,没法大于。所以这里不会有开仓信号。
开空同理反向。

所以,建议你改为high>= highestvalue,以及 low<=lowestvalue,再来看看结果。

jwieen 发表于 2015-12-4 18:34:44

小米 发表于 2015-11-26 16:41 static/image/common/back.gif
highestvalue是计算是用high来计算的,, 而你的在判断条件是当close>highestvalue时才开多(先忽略avgp1>a ...

你好,同一根线确实有这个问题,但是改成如下形式,却通不过检验,请问这是怎么回事?谢谢
Highestvalue=Highest(High,Length);
Lowestvalue=Lowest(Low,Length);

jwieen 发表于 2015-12-4 19:03:01

jwieen 发表于 2015-12-4 18:34 static/image/common/back.gif
你好,同一根线确实有这个问题,但是改成如下形式,却通不过检验,请问这是怎么回事?谢谢
Highestvalue= ...

其实是想表达:当前收盘价高于前N个交易日的最高价时,在下一根BAR的开盘价开多仓。

jwieen 发表于 2015-12-4 19:04:41

小米 发表于 2015-11-26 16:41 static/image/common/back.gif
highestvalue是计算是用high来计算的,, 而你的在判断条件是当close>highestvalue时才开多(先忽略avgp1>a ...

其实是想表达:当前收盘价高于前N个交易日的最高价时,在下一根BAR的开盘价开多仓。

小米 发表于 2015-12-7 09:05:42

jwieen 发表于 2015-12-4 19:03 static/image/common/back.gif
其实是想表达:当前收盘价高于前N个交易日的最高价时,在下一根BAR的开盘价开多仓。 ...

当前收盘价高于前N个交易日的最高价时,在下一根BAR的开盘价开多仓。
可以如你3#所写的,改为high与low来进行计算。(你所说的不能过检验是指示啥呢??单就这二句来说是没有问题的。)
或是原赋值不变的情况下,判断改为如下试试:
cLose>highestvalue
close<lowestvalue

jwieen 发表于 2015-12-9 18:20:14

小米 发表于 2015-12-7 09:05 static/image/common/back.gif
当前收盘价高于前N个交易日的最高价时,在下一根BAR的开盘价开多仓。
可以如你3#所写的,改为high与lo ...

改成high或者cLose>highestvalue,还是不能通过程序编译,不知道是怎么回事?

小米 发表于 2015-12-10 08:54:51

jwieen 发表于 2015-12-9 18:20 static/image/common/back.gif
改成high或者cLose>highestvalue,还是不能通过程序编译,不知道是怎么回事? ...

这三表达并没有问题,不可能是这个原因导致不能编译吧。
有检查过其它语句吗??或是你的公式编辑界面,提示不能通过编译的那段代码截图我看看

jwieen 发表于 2015-12-12 22:35:26

本帖最后由 jwieen 于 2015-12-12 23:37 编辑

如下

jwieen 发表于 2015-12-12 22:39:41

本帖最后由 jwieen 于 2015-12-12 23:37 编辑

小米 发表于 2015-12-10 08:54 static/image/common/back.gif
这三表达并没有问题,不可能是这个原因导致不能编译吧。
有检查过其它语句吗??或是你的公式编辑界面, ...

页: [1]
查看完整版本: 简单的均线交叉,加载后不显示信号,求助。