开拓者期货期权程序化系统交易论坛
标题:
请教老师,关于NumericSeries
[打印本页]
作者:
guoling
时间:
2008-10-27 10:23:25
标题:
请教老师,关于NumericSeries
老师,你好,
我的代码是这样的。
Vars
NumericSeries CurBuyState(0);
......
Begin
.......
If(QuoteDataExist == True)
{
If(A_BuyPosition == 0)
CurBuy = 0;
Else If((CurBuy == 0) && (A_BuyPosition > 0))
CurBuy= 1;
Else If((CurBuy == 1) && (A_BuyProfitLoss >= TotalProfitTarget))
CurBuy = 2;
Else
CurBuy = CurBuy[1];
}
Else
CurBuy = CurBuy[1];
FileAppend("d:\\Log.txt","CurBuy is : "+Text(CurBuy));
.........
End
问题是这样的:
当A_BuyProfitLoss >= TotalProfitTarget 满足时,我在Log.txt文件中发现CurBuy = 1。从不曾等于2
这到底是为什么呢?
谢谢
作者:
guoling
时间:
2008-10-27 10:25:00
老师,不好意思,代码有个地方没复制好。
重发一下代码
请教老师,关于NumericSeries
老师,你好,
我的代码是这样的。
Vars
NumericSeries CurBuy(0);
......
Begin
.......
If(QuoteDataExist == True)
{
If(A_BuyPosition == 0)
CurBuy = 0;
Else If((CurBuy == 0) && (A_BuyPosition > 0))
CurBuy= 1;
Else If((CurBuy == 1) && (A_BuyProfitLoss >= TotalProfitTarget))
CurBuy = 2;
Else
CurBuy = CurBuy[1];
}
Else
CurBuy = CurBuy[1];
FileAppend("d:\\Log.txt","CurBuy is : "+Text(CurBuy));
.........
End
问题是这样的:
当A_BuyProfitLoss >= TotalProfitTarget 满足时,我在Log.txt文件中发现CurBuy = 1。从不曾等于2
这到底是为什么呢?
谢谢
作者:
nopain
时间:
2008-10-27 10:53:33
不知道您是用在什么周期上?
你的代码逻辑看起来是没有问题。只是A_BuyProfitLoss是用Close来计算盈亏的,一样会出现讯号消失的问题。
像您这样的需求应该用全局变量。
作者:
guoling
时间:
2008-10-27 10:58:16
谢谢老师,我的周期是1分钟。
如果将CurBuy定义成全局变量,就没有问题了,是吧?
作者:
nopain
时间:
2008-10-27 11:40:22
用全局变量就不会出现讯号消失。至于是否能够解决您的问题,您自行测试看看
作者:
guoling
时间:
2008-10-27 11:56:39
好的,谢谢你,我已经改成用全局变量了,看看下午测试情况如何吧。
作者:
guoling
时间:
2008-10-28 10:19:47
老师,还是不对,代码是这样的,请看看哪里有问题。
Vars
NumericSeries CurBuy(0);
......
Begin
.......
If(QuoteDataExist == True)
{
CurBuy = GetGlobalVar(0);
If(A_BuyPosition == 0)
CurBuy = 0;
Else If((CurBuy == 0) && (A_BuyPosition > 0))
CurBuy= 1;
Else If((CurBuy == 1) && (A_BuyProfitLoss >= TotalProfitTarget))
CurBuy = 2;
Else
CurBuy = CurBuy;
SetGlobalVar(0,CurBuy );
}
FileAppend("d:\\Log.txt","CurBuy is : "+Text(CurBuy));
.........
End
问题是这样的:
当A_BuyProfitLoss >= TotalProfitTarget 满足时,我在Log.txt文件中发现CurBuy = 1。从不曾等于2
这到底是为什么呢?
作者:
guoling
时间:
2008-10-28 10:22:35
老师请帮忙看看吧,实盘测试都花了不少学费了,呵呵
作者:
nopain
时间:
2008-10-28 11:00:13
看看下面的代码,我测试过,这样可以的
Vars
Numeric curBuy(0);
Numeric TotalProfitTarget(100);
Begin
If(BarStatus == 0)
{
SetGlobalVar(0,0);
}else If(BarStatus == 2)
{
curBuy = GetGlobalVar(0);
If(A_BuyPosition == 0)
curBuy = 0;
else if(curBuy == 0 && A_BuyPosition > 0 )
curBuy = 1;
else if(curBuy == 1 && A_BuyProfitLoss >= TotalProfitTarget)
curBuy = 2;
SetGlobalVar(0,curBuy);
FileAppend("d:\\Log.txt","CurrentBar="+Text(CurrentBar)+"BarCount is : "+Text(BarCount));
FileAppend("d:\\Log.txt","CurBuy is : "+Text(CurBuy)+",A_BuyPosition is : "+Text(A_BuyPosition));
}
End
复制代码
作者:
guoling
时间:
2008-10-28 11:34:33
谢谢老师,不过还是没明白为什么用
If(QuoteDataExist == True)
不行呢?
作者:
guoling
时间:
2008-10-28 11:40:34
另外再请教老师两个问题,
时间周期为1分钟
1。 在一分钟内的实时有效的最新的行情数据的BarStatus是否也是2,
还是说只有时间间隔与前一个BAR刚好为1分钟的当前BAR的BarStatus才是2
2。同一个超级图表中可以插入多个交易指令的,是吧?
作者:
nopain
时间:
2008-10-28 12:01:41
QuoteDataExist除了要求BarStatus == 2,还有其他的条件。
您把BarStatus==2改成QuoteDataExist==true试试看。说不定也还是可以的
作者:
nopain
时间:
2008-10-28 12:03:05
1、图上最后一个Bar的BarStatus==2.
2、可以的,但放到一个图上,之间就相互关联了
作者:
guoling
时间:
2008-10-28 13:05:18
谢谢你,老师
欢迎光临 开拓者期货期权程序化系统交易论坛 (http://bbs.tb18.net/)
Powered by Discuz! X2