设为首页收藏本站

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

关于A_SendOrder函数使用的实例 [复制链接]

Rank: 1

精华
0
UID
228683
积分
5
帖子
3
主题
2
阅读权限
10
注册时间
2016-2-25
最后登录
2016-3-2
跳转到指定楼层
1#
发表于 2016-3-2 16:08:39 |只看该作者 |倒序浏览
版主您好,我从网上http://www.tradeblazer.net/article/45.html直接复制了这个每日平仓的范例,命名为test公式,然后在期货模拟账户打开这个交易公式,但是收盘时没有反应。我有这几个问题:
1)表示商品品种的data0,data1,data2在实际的交易公式编写时是不是要替换成商品编号,如Data0.A_SendOrder是不是要变化;
2)如果想做半小时线或者小时线的判断,这个条件语句是否成立,(CurrentTime*100-Floor(CurrentTime*100, 1))*100==29 Or (CurrentTime*100-Floor (CurrentTime*100, 1))*100==59;
3)如果方便请问是否可以提供一个单账户单商品的实际自动交易例子,或提供链接也可以,其中的A_SendOrder内容直接按实际使用的给出即可,不用伪代码。

非常感谢!

每日平仓的范例如下:
  1. Params
  2.     Numeric offSet(1);                    // 委托价格偏移,为了保证成交
  3.     Numeric BeforeMins(5);                // 收盘前几分钟开始操作
  4. Vars
  5.     Numeric tempPos; // 仓位
  6.     Numeric DeleteOrderTickCounter;
  7.     Numeric HasSendOrder(0);
  8. Begin
  9.     If(BarStatus == 0)
  10.     {
  11.         DeleteOrderTickCounter = 9999;
  12.         HasSendOrder = 0;
  13.         SetGlobalVar(0,DeleteOrderTickCounter);
  14.         SetGlobalVar(1,HasSendOrder);
  15.     }Else
  16.     {
  17.         DeleteOrderTickCounter = GetGlobalVar(0);
  18.         HasSendOrder = GetGlobalVar(1);
  19.     }

  20.     If(CurrentTime > (0.1459 - 0.0001*(BeforeMins-1))  AND BarStatus == 2  AND HasSendOrder == 0)
  21.     {
  22.         If(Data0.Close != InvalidNumeric  AND Data0.A_GetOpenOrderCount()>0) // 商品0全部撤单
  23.         {
  24.             Data0.A_DeleteOrder();
  25.             DeleteOrderTickCounter = 1;
  26.         }
  27.         If(Data1.Close != InvalidNumeric  AND Data1.A_GetOpenOrderCount()>0) // 商品1全部撤单
  28.         {
  29.             Data1.A_DeleteOrder();
  30.             DeleteOrderTickCounter = 1;
  31.         }
  32.         If(Data2.Close != InvalidNumeric  AND Data2.A_GetOpenOrderCount()>0) // 商品2全部撤单
  33.         {
  34.             Data2.A_DeleteOrder();
  35.             DeleteOrderTickCounter = 1;
  36.         }
  37.         DeleteOrderTickCounter = DeleteOrderTickCounter + 1;
  38.         SetGlobalVar(0,DeleteOrderTickCounter);

  39.         If(DeleteOrderTickCounter < 5) Return; // 撤单后需要延迟几个Tick才平仓

  40.         tempPos = Data0.A_BuyPosition();
  41.         If(tempPos > 0) // 平多单
  42.         {
  43.             Data0.A_SendOrder(Enum_Sell,Enum_Exit,tempPos,Data0.Q_BidPrice-offSet*Data0.MinMove*Data0.PriceScale);
  44.         }
  45.         tempPos = Data0.A_SellPosition();
  46.         If(tempPos > 0) //平空单
  47.         {
  48.             Data0.A_SendOrder(Enum_Buy,Enum_Exit,tempPos,Data0.Q_AskPrice+offSet*Data0.MinMove*Data0.PriceScale);
  49.         }

  50.         tempPos = Data1.A_BuyPosition;
  51.         If(tempPos > 0) // 平多单
  52.         {
  53.             Data1.A_SendOrder(Enum_Sell,Enum_Exit,tempPos,Data1.Q_BidPrice-offSet*Data1.MinMove*Data1.PriceScale);
  54.         }
  55.         tempPos = Data1.A_SellPosition;
  56.         If(tempPos > 0) //平空单
  57.         {
  58.             Data1.A_SendOrder(Enum_Buy,Enum_Exit,tempPos,Data1.Q_AskPrice+offSet*Data1.MinMove*Data1.PriceScale);
  59.         }

  60.         tempPos = Data2.A_BuyPosition;
  61.         If(tempPos > 0) // 平多单
  62.         {
  63.             Data2.A_SendOrder(Enum_Sell,Enum_Exit,tempPos,Data2.Q_BidPrice-offSet*Data2.MinMove*Data2.PriceScale);
  64.         }
  65.         tempPos = Data2.A_SellPosition;
  66.         If(tempPos > 0) //平空单
  67.         {
  68.             Data2.A_SendOrder(Enum_Buy,Enum_Exit,tempPos,Data2.Q_AskPrice+offSet*Data2.MinMove*Data2.PriceScale);
  69.         }
  70.         HasSendOrder = 1;
  71.         SetGlobalVar(1,HasSendOrder);
  72.     }
  73. End
复制代码

Rank: 1

精华
0
UID
228683
积分
5
帖子
3
主题
2
阅读权限
10
注册时间
2016-2-25
最后登录
2016-3-2
2#
发表于 2016-3-2 16:38:04 |只看该作者
补充问题:
模拟交易的程序已经写好后,也测试通过了。现在只是需要用实际交易的A_SendOrder函数代替模拟测试程序里所有的Buy Sell BuytoCover 和SellShort就可以了,请问最标准和简单的方法替代这些函数是怎么写的呢? 例如替代Buy(Lots, Close) ;是直接用A_SendOrder(Enum_Buy,Enum_Entry,1,Q_BidPrice);吗? 针对目前的超级图表里的商品,股指期货"IF888"需要在A_SendOrder之前加类似”data0."类似的标示吗?非常感谢!

使用道具 举报

Rank: 2

精华
0
UID
173393
积分
107
帖子
89
主题
10
阅读权限
30
注册时间
2013-10-9
最后登录
2023-4-4
3#
发表于 2016-3-12 02:33:30 |只看该作者
Zye436 发表于 2016-3-2 16:38
补充问题:
模拟交易的程序已经写好后,也测试通过了。现在只是需要用实际交易的A_SendOrder函数代替模拟测 ...

A函数没那么简单的。
每个动作都要打记号,不然就乱。
还有A函数不可避免用close,这个价格是不断变动的。那么你不处理好就会反复开仓或者反复止损。
data0 只是代表你图表中的商品,只有一个就无所谓,如果你叠加多个商品,就需要用data0 ,data1 来区分。

使用道具 举报

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

bottom

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

GMT+8, 2024-5-16 18:40

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部