麻烦给看下这个写法哪里有问题
VarsBoolSeries BL(True);
Begin
If(BL && BarStatus==2) //
{
If(Close>Close)
{
SellShort(1,Open-2);
BL = False;
}
}
End
1.如果不加BarStatus==2这个条件,则程序正常,只开一次仓,后面不再开仓。
2.如果加上BarStatus==2,程序会不断开仓。而且按照正常来说,开仓后K线图上开仓的标志会留在上面,但是这个在当根k线上会显示开仓符号,当根k线结束后开仓符号随即消失(模拟账户已经开仓),这是为什么呢?
按照我的理解,这段语句加载图形后只能执行一次,为什么会不断重复执行呢? 在第一个IF语句前加一个BL的延续试试:
BL = BL;
If(BL && BarStatus==2) //
若还不行,程序开头多加下面一段
If(BarStatus == 0)
BL = True; Yuen_Lee 发表于 2021-8-2 14:10 static/image/common/back.gif
在第一个IF语句前加一个BL的延续试试:
BL = BL;
If(BL && BarStatus==2) //
好主意!多谢多谢,夜盘我试一下。 Yuen_Lee 发表于 2021-8-2 14:10 static/image/common/back.gif
在第一个IF语句前加一个BL的延续试试:
BL = BL;
If(BL && BarStatus==2) //
您好,昨天晚上试过您说的方法了,不行,还是老样子,重复开仓,而且信号不固定。看起来是Barstatus这个函数的问题,因为加上这个就不行,不加这个函数一切正常。 当根K线的重复开仓BL应该控制不了,因为每次在当根K线的数据更新, BL都会初始化为TRUE。如果想控制,可以用全局变量。
If(BarStatus == 0)
SetGlobalBar(0, 0)
If(GetGlobalBar(0) == 0 && BarStatus==2) //
{
If(Close>Close)
{
SellShort(1,Open-2);
SetGlobalBar(0, 1);
}
} Yuen_Lee 发表于 2021-8-3 11:10 static/image/common/back.gif
当根K线的重复开仓BL应该控制不了,因为每次在当根K线的数据更新, BL都会初始化为TRUE。如果想控制,可以 ...
Params
Vars
Begin
If(BarStatus == 0)
SetGlobalVar(0, 0);
If(GetGlobalVar(0) == 0 && BarStatus==2) //
{
If(Close>Close)
{
SellShort(1,Open-2);
SetGlobalVar(0, 1);
}
}
End
感谢回复!如上我测试了一下,这样写确实第二个if语句只执行一次,但是有个问题,按照正常的程序运行,开仓后开仓符号应该停留在图表上,可是这样写开仓符号会在当根k线结束的时候消失,这是怎么回事呢?模拟运行的时候,虽然开仓符号消失,但是模拟账户已经开仓。 这个问题貌似还是出现在BarStatus这个函数上,因为我把 && BarStatus==2这个条件去掉,则开仓符号显示完全正常。 ----------------------------------------------------------------
当根K线的重复开仓BL应该控制不了,因为每次在当根K线的数据更新, BL都会初始化为TRUE。如果想控制,可以用全局变量。
If(BarStatus == 0)
SetGlobalBar(0, 0)
If(GetGlobalBar(0) == 0 && BarStatus==2) //
{
If(Close>Close)
{
SellShort(1,Open-2);
SetGlobalBar(0, 1);
}
}
----------------------------------------------------------------
我仔细琢磨了一下,实际上BL我设置的是序列bool变量,按照序列变量的定义,序列变量会传递上个Bar上此变量的值,因此我一楼的那段程序也应该被执行一次。 tbmorning 发表于 2021-8-3 22:06 static/image/common/back.gif
----------------------------------------------------------------
当根K线的重复开仓BL应该控制不了,因 ...
在当前的最新K开仓后,对BL赋值False,这个值只有到当根K线走完才会固定下来。如果当前K线再一次刷新,程序会再运行一次,而此时的BL还是初始化的值TRUE,所以会出现重复开仓。 Yuen_Lee 发表于 2021-8-4 10:03 static/image/common/back.gif
在当前的最新K开仓后,对BL赋值False,这个值只有到当根K线走完才会固定下来。如果当前K线再一次刷新,程 ...
您好,感谢回复。我修改了一下程序,如下:
Params
Vars
Begin
If(MarketPosition == 0 && BarStatus==2)//
{
If(Close>Close)
{
Buy(1,Open+2);
}
}
End
这样写依然会重复开仓!并且开仓后当根k线的开仓符号在当根k线结束的时候会消失。我说的重复开仓不是说在一根k线上反复开仓,而是已经开过仓了,但是后面的k线只要满足(Close>Close)依然开仓。并且开仓后开仓符号不显示。这是哪里错了呢?
页:
[1]
2