关于减仓的问题
编了个减仓模型,代码如下,通过了程序编译,但是加载到行情上,减多单策略有效(出信号了且与思路一致),减空单却无效(无信号),不知道是怎么回事?请老师帮助。.......
If(MarketPosition==1)
{
.......
if(CurrentEntries==2 And Close<Lowest(Low,10) And Close>MA20 And CurrentContracts>=2) //减多单
{
Sell(1,Close-Offset * MinMove * PriceScale);
}
.......
}
If(MarketPosition==-1)
{
......
if(CurrentEntries==2 And Close>Highest(High,10) And Close<MA20 And CurrentContracts>=2) //减空单
{
BuyToCover(1,Close+Offset * MinMove * PriceScale);
}
......
} 本帖最后由 小米 于 2015-12-15 10:59 编辑
持空时,currentcontracts的值是负数。。
公式里需要改为 if(CurrentEntries==2 And Close>Highest(High,10) And Close<MA20 And CurrentContracts<=-2)
PS:该公式条件里有使用到close的判断,这样代码的用于实时交易,是可能出现信号消失的问题。需注意 小米 发表于 2015-12-15 10:58 static/image/common/back.gif
持空时,currentcontracts的值是负数。。
公式里需要改为 if(CurrentEntries==2 And Close>Highest(High
你好,CurrentEntries这个统计建仓次数的函数,所统计的建仓次数,包括前面已经平仓的那次吗?比如我建仓后,又加仓2次(其中第一次加完仓后,我把所加仓位平掉了,然后再加了次仓),这样这个函数返回的建仓次数是2次还是3次啊? jwieen 发表于 2015-12-16 10:44 static/image/common/back.gif
你好,CurrentEntries这个统计建仓次数的函数,所统计的建仓次数,包括前面已经平仓的那次吗?比如我建仓 ...
在公式的指定位置加上commentary("currenteentries:"+text(currententries)); 自己测试一下,就可以很清楚地得到答案了 小米 发表于 2015-12-16 13:21 static/image/common/back.gif
在公式的指定位置加上commentary("currenteentries:"+text(currententries)); 自己测试一下,就可以很清 ...
老师,你好!
If(MarketPosition==-1)
{
if(CurrentEntries==1 And Close>Highest(High,30) And Close<avgp2 And (avgp2-Close)/avgp2<0.03) //空单加仓
{
SecondPrice=Close;
SellShort(2,Close-Offset * MinMove * PriceScale);
}
编了个程序,收盘价高于前30个BAR(半小时线),时加空,但是出来的信号有问题,请看一下是否这个语句有问题,如图: jwieen 发表于 2015-12-16 13:28 static/image/common/back.gif
老师,你好!
If(MarketPosition==-1)
{
第一个2手是开仓,后一个2手是加仓,加仓的信号有问题。 jwieen 发表于 2015-12-16 13:30 static/image/common/back.gif
第一个2手是开仓,后一个2手是加仓,加仓的信号有问题。
加仓的信号有问题是指什么问题?请具体说明一下。。
抱歉啊。。光看图,我猜不出来问题呢。 jwieen 发表于 2015-12-16 13:28 static/image/common/back.gif
老师,你好!
If(MarketPosition==-1)
{
是指要收盘价高于前30个bar的最高价后才有加仓,但条件没有满足就加仓了,是吗?
highest是一个序列函数,其赋值运算放条件里,可能因为条件限制而导致取值范围受限,从而导致计算结果出错。。
而这个公式里洽洽是放到条件中了。。
建议你声明一个中间变量,如。my30highestmy30highest =Highest(High,30) ;
If(MarketPosition==-1)
{
if(CurrentEntries==1 And Close> my30highest And Close<avgp2 And (avgp2-Close)/avgp2<0.03) //空单加仓
{
SecondPrice=Close;
SellShort(2,Close-Offset * MinMove * PriceScale); 小米 发表于 2015-12-16 14:17 static/image/common/back.gif
加仓的信号有问题是指什么问题?请具体说明一下。。
抱歉啊。。光看图,我猜不出来问题呢。 ...
根据程序,我原意是收盘价高于前30根BAR的最高价是,加空2手,程序也是如此设计的,但你看图上信号,加空2手的信号,不是在高于前30个bar的最高价的地方出现的,图上只是在高于前13个BAR的最高价的地方出信号。还有很多信号都有问题,这只是其中一个,有的高于前9个、11个的最高价也在出信号。不知道是怎么了 小米 发表于 2015-12-16 14:21 static/image/common/back.gif
是指要收盘价高于前30个bar的最高价后才有加仓,但条件没有满足就加仓了,是吗?
highest是一个序列函数 ...
多谢老师,声明中间变量后,问题解决了。:victory:
页:
[1]
2