设为首页收藏本站

 找回密码
 注册
查看: 8493|回复: 22
打印 上一主题 下一主题

q函数a函数无法发单 [复制链接]

Rank: 4

精华
0
UID
51272
积分
463
帖子
67
主题
14
阅读权限
50
注册时间
2011-7-3
最后登录
2016-7-25
跳转到指定楼层
1#
发表于 2011-10-27 16:25:41 |只看该作者 |倒序浏览
套利模型,data0设置为cu1205,data1设置为1201
如果1205盘口价差超过200,那么开始下单,具体如下:
//------------------------------------------------------------------------
//如有疑问,请联系:曹丹13814801336
//------------------------------------------------------------------------

Params
    Numeric profit(150);
        Numeric lots(1);
Vars
        Bool Cond;
       
Begin

Cond=Data0.Q_AskPrice-Data0.Q_BidPrice>=profit;
If(Data0.MarketPosition==0&&data1.MarketPosition==0)
  return;
//---------------------------------------------------------------------
If(cond&&Data0.MarketPosition==0)    //挂单
{
A_SendOrder(Enum_Buy,Enum_Entry,Lots,data0.Q_BidPrice+MinMove*PriceScale);
A_SendOrder(Enum_Sell,Enum_Entry,Lots,data0.Q_askPrice-MinMove*PriceScale);
}
//---------------------------------------------------------------------
If(Data0.MarketPosition==1)           //不活跃品种多单成交
  {
   A_SendOrder(Enum_Sell,Enum_Entry,Lots,data1.Q_askPrice);
  }
  
If(Data0.MarketPosition==1&&data1.MarketPosition==-1)
  {
   A_SendOrder(Enum_Sell,Enum_Exit,Lots,data0.Q_askPrice-MinMove*PriceScale);
  }
  
If(Data0.MarketPosition==0&&data1.MarketPosition==-1)
  {
   A_SendOrder(Enum_buy,Enum_Exit,Lots,data1.Q_BidPrice);
  }
  
  
//---------------------------------------------------------------------------------------

If(Data0.MarketPosition==-1)           //不活跃品种空单成交
  {
   A_SendOrder(Enum_buy,Enum_Entry,Lots,data1.Q_BidPrice);
  }
  
If(Data0.MarketPosition==-1&&data1.MarketPosition==1)
  {
   A_SendOrder(Enum_buy,Enum_Exit,Lots,data0.Q_BidPrice+MinMove*PriceScale);
  }
  
If(Data0.MarketPosition==0&&data1.MarketPosition==1)
  {
   A_SendOrder(Enum_sell,Enum_Exit,Lots,data1.Q_askPrice);
  }
  

End
今天1205合约价格几次超过150,可是没信号。。。。请老师帮忙解决

初级操盘手

懒惰的投机者

Rank: 8Rank: 8

精华
0
UID
68068
积分
6707
帖子
483
主题
31
阅读权限
100
注册时间
2011-9-27
最后登录
2022-2-18
2#
发表于 2011-10-27 19:33:06 |只看该作者
你是说信号还是不下单?
使用了A,Q函数不会在图表出现信号。
[color=green]自动化交易,摒弃人性弱点。[/color]
[color=blue][由上而下的系统,由下而上的系统][/color]

使用道具 举报

Rank: 4

精华
0
UID
51272
积分
463
帖子
67
主题
14
阅读权限
50
注册时间
2011-7-3
最后登录
2016-7-25
3#
发表于 2011-10-27 21:53:29 |只看该作者
你是说信号还是不下单?
使用了A,Q函数不会在图表出现信号。
莫小漠 发表于 2011-10-27 19:33



    不下单,信号是肯定没有的

使用道具 举报

初级操盘手

懒惰的投机者

Rank: 8Rank: 8

精华
0
UID
68068
积分
6707
帖子
483
主题
31
阅读权限
100
注册时间
2011-9-27
最后登录
2022-2-18
4#
发表于 2011-10-28 09:45:05 |只看该作者
If(Data0.MarketPosition==0&&data1.MarketPosition==0)
  return;

这条语句
如果2个合约持仓为0,返回。
你之前有仓位吗,没有的话,不会运行到下面去的。
[color=green]自动化交易,摒弃人性弱点。[/color]
[color=blue][由上而下的系统,由下而上的系统][/color]

使用道具 举报

Rank: 4

精华
0
UID
18911
积分
301
帖子
91
主题
27
阅读权限
50
注册时间
2010-11-3
最后登录
2013-12-9
5#
发表于 2011-10-28 10:23:39 |只看该作者
MarketPosition 和 A,Q函数 不能同时使用。

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
2
UID
4130
积分
20906
帖子
6519
主题
17
阅读权限
200
注册时间
2009-4-15
最后登录
2019-4-12
6#
发表于 2011-10-28 10:27:21 |只看该作者
回复 1# 铭森泳烁

MarketPosition不要和A、Q函数同时使用!
您的公式,只有满足cond后,以下这部分会发单。其他部分都不会发单。

If(cond&&Data0.MarketPosition==0)    //挂单
{
A_SendOrder(Enum_Buy,Enum_Entry,Lots,data0.Q_BidPrice+MinMove*PriceScale);
A_SendOrder(Enum_Sell,Enum_Entry,Lots,data0.Q_askPrice-MinMove*PriceScale);
}

使用道具 举报

Rank: 4

精华
0
UID
51272
积分
463
帖子
67
主题
14
阅读权限
50
注册时间
2011-7-3
最后登录
2016-7-25
7#
发表于 2011-10-28 15:46:47 |只看该作者
回复 6# lh948


    请问现在能否发单,我测试了一天,只有data0能发单,data1不发单,而且里面的撤单也无效,不知道为什么,请管理员帮我看看
Params
    Numeric profit(150);
        Numeric lots(1);
Vars
        Bool Cond;
        Numeric longposition0;
        Numeric longposition1;
        Numeric shortposition0;
        Numeric shortposition1;
       
Begin

longposition0=GetGlobalVar(0);
longposition1=GetGlobalVar(2);
shortposition0=GetGlobalVar(1);
shortposition1=GetGlobalVar(3);
//------------------------------------------
If (BarStatus == 0) //持仓初始化
{
  If(longPosition0 == InvalidNumeric )
   {
    longPosition0 = 0;
    SetGlobalVar(0,longPosition0);
   }
   If(shortPosition0 == InvalidNumeric)
   {
    shortPosition0 = 0;
    SetGlobalVar(1,shortPosition0);
   }
   If(longPosition1 == InvalidNumeric )
   {
    longPosition1 = 0;
    SetGlobalVar(2,longPosition0);
   }
   If(shortPosition1 == InvalidNumeric)
   {
    shortPosition1 = 0;
    SetGlobalVar(3,shortPosition0);
   }
}

//---------------------------------------------------------------------
Cond=Data0.Q_AskPrice-Data0.Q_BidPrice>=profit;    //价差超过150
If(cond&&longposition0==0&&shortposition0==0&&longposition1==0&&shortposition1==0)    //挂单
{
  A_SendOrder(Enum_Buy,Enum_Entry,Lots,data0.Q_BidPrice+10);
  A_SendOrder(Enum_Sell,Enum_Entry,Lots,data0.Q_askPrice-10);
  SetGlobalVar(0,longposition0+lots);
  SetGlobalVar(1,shortposition0+lots);
}

//---------------------------------------------------------------------
Commentary("data0.A_BuyPosition="+Text(data0.A_BuyPosition));
Commentary("data0.A_sellPosition="+Text(data0.A_sellPosition));
Commentary("longposition1="+Text(longposition1));
Commentary("shortposition1="+Text(shortposition1));
If(data0.A_BuyPosition==lots&&shortposition1<lots)           //不活跃品种多单成交
  {
   A_SendOrder(Enum_Sell,Enum_Entry,Lots,data1.Q_bidPrice);//主力开空对冲
   SetGlobalVar(3,shortposition1+lots);
  }
  
If(data0.A_BuyPosition==lots&&data1.A_SellPosition==lots&&shortposition0==lots)
  {
   data0.A_DeleteOrder();       //未成交的不活跃空单撤单
   A_SendOrder(Enum_Sell,Enum_Exit,Lots,data0.Q_askPrice-MinMove*PriceScale);//平不活跃多单
   SetGlobalVar(0,longposition0-lots);
   SetGlobalVar(1,shortposition0-lots);
  }
  
If(data0.A_BuyPosition==0&&data0.A_sellPosition==0&&shortposition1==lots)//平主力空单
  {
   A_SendOrder(Enum_buy,Enum_Exit,Lots,data1.Q_askPrice);
   SetGlobalVar(3,shortposition1-lots);
  }
  
//---------------------------------------------------------------------------------------

If(data0.A_sellPosition==lots&&longposition1<lots)           //不活跃品种空单成交
  {
   A_SendOrder(Enum_buy,Enum_Entry,Lots,data1.Q_askPrice);//主力开多对冲
   SetGlobalVar(2,longposition1+lots);
  }
  
If(data0.A_sellPosition==lots&&data1.A_buyPosition==lots&&longposition0==lots)
  {
   data0.A_DeleteOrder();     //未成交的不活跃多单撤单
   A_SendOrder(Enum_buy,Enum_Exit,Lots,data0.Q_bidPrice+MinMove*PriceScale);//平不活跃空单
   SetGlobalVar(1,longposition0-lots);
   SetGlobalVar(0,longposition1-lots);
  }
  
If(data0.A_sellPosition==0&&data0.A_BuyPosition==0&&longposition1==lots)//平主力多单
  {
   A_SendOrder(Enum_sell,Enum_Exit,Lots,data1.Q_BidPrice);
   SetGlobalVar(2,longposition1-lots);
  }

End

使用道具 举报

初级操盘手

懒惰的投机者

Rank: 8Rank: 8

精华
0
UID
68068
积分
6707
帖子
483
主题
31
阅读权限
100
注册时间
2011-9-27
最后登录
2022-2-18
8#
发表于 2011-10-29 11:45:34 |只看该作者
回复 7# 铭森泳烁


    是不是A_sendorder函数前面也应该加上data1

使用道具 举报

Rank: 4

精华
0
UID
51272
积分
463
帖子
67
主题
14
阅读权限
50
注册时间
2011-7-3
最后登录
2016-7-25
9#
发表于 2011-10-29 12:37:08 |只看该作者
回复 9# 莫小漠


应该不是这个问题,a_sendorder函数本来就是对不同图标的商品发单的,不过我也不确定,希望管理员能过来看看。

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
2
UID
4130
积分
20906
帖子
6519
主题
17
阅读权限
200
注册时间
2009-4-15
最后登录
2019-4-12
10#
发表于 2011-10-29 23:04:46 |只看该作者
回复 9# 铭森泳烁

对data1发单:
data1.A_SendOrder()

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-5-21 22:36

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部