开拓者期货期权程序化系统交易论坛

标题: 求助,此套利程序在模拟交易中不产生交易 [打印本页]

作者: 13302164608    时间: 2010-3-11 10:35:24     标题: 求助,此套利程序在模拟交易中不产生交易

Params
       Numeric   a1(300);
       Numeric   b1(500);
       Numeric   c1(600);
       Numeric   d1(400);
Vars
Begin
If((Data0.Close-Data1.Close)<a1 && GetGlobalVar(0)==0 && Data0.A_BuyPosition==0 && Data1.A_SellPosition==0)
{
Data0. A_SendOrder(Enum_Buy, Enum_Entry, 1,Q_AskPrice);
Data1.A_SendOrder(Enum_Sell,Enum_Entry,1,Q_BidPrice);
SetGlobalVar(0,1);
}
//当价差小于300时,买入开仓前一品种,卖出开仓后一品种
If((Data0.Close-Data1.Close)>b1 && GetGlobalVar(0)==0 && Data1.A_BuyPosition==0 && Data0.A_SellPosition==0)
{
Data0.A_SendOrder(Enum_sell,Enum_Exit,1,Q_bidPrice);
Data1.A_SendOrder(Enum_buy,Enum_Exit,1,Q_askPrice);
SetGlobalVar(0,1);
}
//当价差大于500时,卖出平仓前一品种,买入平仓后一品种
If((Data0.Close-Data1.Close)>c1 && GetGlobalVar(0)==0 && Data1.A_BuyPosition==0 && Data0.A_SellPosition==0)
{
Data0.A_SendOrder(Enum_sell,Enum_Entry,1,Q_bidPrice);
Data1.A_SendOrder(Enum_buy,Enum_Entry,1,Q_askPrice);
SetGlobalVar(0,1);
}
//当价差大于600时,卖出开仓前一品种,买入开仓后一品种
If((Data0.Close-Data1.Close)<d1 && GetGlobalVar(0)==0 && Data0.A_BuyPosition==0 && Data1.A_SellPosition==0)
{
Data0.A_SendOrder(Enum_Buy,Enum_exit,1,Q_AskPrice);
Data1.A_SendOrder(Enum_Sell,Enum_exit,1,Q_BidPrice);
SetGlobalVar(0,1);
}
end
//当价差小于400时,买入平仓前一品种,卖出平仓后一品种
作者: 觉文基金    时间: 2010-3-11 11:35:49

Data0. A_SendOrder(Enum_Buy, Enum_Entry, 1,Q_AskPrice);
Data1.A_SendOrder(Enum_Sell,Enum_Entry,1,Data1.Q_BidPrice);

报价怎么改比较合适不然 data1商品 报价有问题的
作者: 13302164608    时间: 2010-3-11 12:53:03     标题: 回复 2# 觉文基金 的帖子

十分感谢。

作者: 13302164608    时间: 2010-3-11 13:34:08     标题: 改后还是不交易

Params
     
Vars
Begin
If((Data0.Close-Data1.Close)<-16 && GetGlobalVar(0)==0 && Data0.A_BuyPosition==0 && Data1.A_SellPosition==0)
{
Data0. A_SendOrder(Enum_Buy, Enum_Entry, 1,Q_AskPrice);
Data1.A_SendOrder(Enum_Sell,Enum_Entry,1,data1.Q_BidPrice);
SetGlobalVar(0,1);
}
//当价差小于300时,买入开仓前一品种,卖出开仓后一品种
If((Data0.Close-Data1.Close)>-10 && GetGlobalVar(0)==0 && Data1.A_BuyPosition==0 && Data0.A_SellPosition==0)
{
Data0.A_SendOrder(Enum_sell,Enum_Exit,1,Q_bidPrice);
Data1.A_SendOrder(Enum_buy,Enum_Exit,1,data1.Q_askPrice);
SetGlobalVar(0,1);
}
//当价差大于500时,卖出平仓前一品种,买入平仓后一品种
If((Data0.Close-Data1.Close)>-8 && GetGlobalVar(0)==0 && Data1.A_BuyPosition==0 && Data0.A_SellPosition==0)
{
Data0.A_SendOrder(Enum_sell,Enum_Entry,1,Q_bidPrice);
Data1.A_SendOrder(Enum_buy,Enum_Entry,1,data1.Q_askPrice);
SetGlobalVar(0,1);
}
//当价差大于600时,卖出开仓前一品种,买入开仓后一品种
If((Data0.Close-Data1.Close)<-15 && GetGlobalVar(0)==0 && Data0.A_BuyPosition==0 && Data1.A_SellPosition==0)
{
Data0.A_SendOrder(Enum_Buy,Enum_exit,1,Q_AskPrice);
Data1.A_SendOrder(Enum_Sell,Enum_exit,1,data1.Q_BidPrice);
SetGlobalVar(0,1);
}
end
//当价差小于400时,买入平仓前一品种,卖出平仓后一品种
作者: lh948    时间: 2010-3-11 14:03:46

看看当前图表GetGlobalVar(0)是否为0
用commerntry输出查看
作者: efrog    时间: 2010-10-25 10:51:06

由于程序没有限制在BarStatus==2状态下运行,所以在你关联启动自动交易策略前,程序已经在BarStatus==1下运行了很多次,很有可能已将GetGlobalVar(0)设为1,因此当实际行情到来时,指令就被公共变量GV0给屏蔽了。
这个程序还却一段恢复GV0的程序段, 不然只会发出一个交易指令。
作者: feijian0000    时间: 2012-10-16 13:32:54

全局变量使用错误!
作者: zhen2710    时间: 2014-4-14 15:56:44

好像全局变量用的不对




欢迎光临 开拓者期货期权程序化系统交易论坛 (http://bbs.tb18.net/) Powered by Discuz! X2