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

标题: 管理员,反馈bug [打印本页]

作者: cs_tai    时间: 2011-5-23 09:29:17     标题: 管理员,反馈bug

代码加上If(AccountDataExist == False){Return;}后,A_sendorder不能执行。已经选择账户和可执行商品自动交易。
作者: lh948    时间: 2011-5-23 10:06:34

回复 1# cs_tai


    你是在哪个版本上使用的?
在V4版本上测试一下代码正常
  1. Begin
  2.         If(AccountDataExist == False) Return;
  3.         A_SendOrder(Enum_Buy,Enum_Entry,1,Q_AskPrice);
  4.         PlotBool("AccountDataExist",AccountDataExist);
  5. End
复制代码

作者: cs_tai    时间: 2011-5-23 11:22:35

4.03版本,您试试以下的代码
Params
   Numeric RiskRatio(5);
Vars
   NumericSeries Ma1;
   NumericSeries Ma2;
   Numeric lots;
   Numeric myprice;
Begin

        If(AccountDataExist == False) Return;
                Lots = (A_FreeMargin*RiskRatio/100) /(ContractUnit*BigPointValue*Close*MarginRatio);
        Lots = IntPart(Lots);
                Ma1 = Average(Close,30);       
        ma2 = Average(Close,10);               
        If(A_BuyPosition == 0 && close[1]>Ma1[1] && close[1]>Ma2[1])
        {
                 myprice = Q_AskPrice +MinMove*PriceScale;
                 A_SendOrder(Enum_Buy,Enum_Entry,lots,myprice);
                }
        If(A_BuyPosition != 0 && close[1]<Ma2[1])
                {
                 myprice = Q_BidPrice - MinMove*PriceScale;
                 A_SendOrder(Enum_Sell,Enum_Exit,A_BuyPosition,myprice);
                }
        PlotBool("AccountDataExist",AccountDataExist);

End
作者: cs_tai    时间: 2011-5-23 14:00:12

//------------------------------------------------------------------------
// 简称: test_A
// 名称: test_A
// 类别: 公式应用
// 类型: 用户应用
// 输出:
//------------------------------------------------------------------------
Params
   Numeric RiskRatio(5);
Vars
   NumericSeries Ma1;
   NumericSeries Ma2;
   Numeric lots;
   Numeric myprice;
Begin

        If(AccountDataExist == False) Return;
                Lots = (A_FreeMargin*RiskRatio/100) /(ContractUnit*BigPointValue*Close*MarginRatio);
        Lots = IntPart(Lots);
                Ma1 = Average(Close,30);       
        ma2 = Average(Close,10);               
        If(A_BuyPosition == 0 && close[1]>Ma1[1] && close[1]>Ma2[1])
        {
                 myprice = Q_AskPrice +MinMove*PriceScale;
                 A_SendOrder(Enum_Buy,Enum_Entry,lots,myprice);
                }
        If(A_BuyPosition != 0 && close[1]<Ma2[1])
                {
                 myprice = Q_BidPrice - MinMove*PriceScale;
                 A_SendOrder(Enum_Sell,Enum_Exit,A_BuyPosition,myprice);
                }
               
               
                 If(A_SellPosition == 0 && close[1]<Ma1[1] && close[1]<Ma2[1])
        {
                 myprice = Q_AskPrice -MinMove*PriceScale;
                 A_SendOrder(Enum_Sell,Enum_Entry,lots,myprice);
                }
        If(A_SellPosition != 0 && close[1]>Ma2[1])
                {
                 myprice = Q_BidPrice + MinMove*PriceScale;
                 A_SendOrder(Enum_Buy,Enum_Exit,A_SellPosition,myprice);
                }
               
        PlotBool("AccountDataExist",AccountDataExist);

End



以上代码只买不卖
AccountDataExist=N/A;bool (True)
作者: cs_tai    时间: 2011-5-23 22:11:14

请求管理员回复一下
作者: lh948    时间: 2011-5-24 10:30:42

回复 5# cs_tai


    3楼代码启动自动交易后,A_SendOrder就开始交易了;
    4楼代码测试买卖正常
  1. Params
  2.    Numeric RiskRatio(5);
  3. Vars
  4.    NumericSeries Ma1;
  5.    NumericSeries Ma2;
  6.    Numeric lots;
  7.    Numeric myprice;
  8. Begin
  9.         Ma1 = Average(Close,30);
  10.         ma2 = Average(Close,10);
  11.         PlotNumeric("MA1",ma1);
  12.         PlotNumeric("MA2",ma2);
  13.         If(AccountDataExist == False) Return;
  14.         Lots = (A_FreeMargin*RiskRatio/100) /(ContractUnit*BigPointValue*Close*MarginRatio);
  15.         Lots = IntPart(Lots);

  16.         If(A_BuyPosition == 0 && close[1]>Ma1[1] && close[1]>Ma2[1])
  17.         {
  18.                 myprice = Q_AskPrice +MinMove*PriceScale;
  19.                 A_SendOrder(Enum_Buy,Enum_Entry,lots,myprice);
  20.         }
  21.         If(A_BuyPosition > 0 && close[1]<Ma2[1])
  22.         {
  23.                 myprice = Q_BidPrice - MinMove*PriceScale;
  24.                 A_SendOrder(Enum_Sell,Enum_Exit,A_BuyPosition,myprice);
  25.         }

  26.         If(A_SellPosition == 0 && close[1]<Ma1[1] && close[1]<Ma2[1])
  27.         {
  28.                 myprice = Q_BidPrice -MinMove*PriceScale;
  29.                 A_SendOrder(Enum_Sell,Enum_Entry,lots,myprice);
  30.         }
  31.         If(A_SellPosition > 0 && close[1]>Ma2[1])
  32.         {
  33.                 myprice = Q_AskPrice + MinMove*PriceScale;
  34.                 A_SendOrder(Enum_Buy,Enum_Exit,A_SellPosition,myprice);
  35.         }
  36.         PlotBool("AccountDataExist",AccountDataExist);
  37. End
复制代码

作者: cs_tai    时间: 2011-5-24 22:47:01

我 的为什么不行尼?郁闷
作者: cs_tai    时间: 2011-6-2 11:56:04     标题: 管理员,v4问题

//------------------------------------------------------------------------
// 简称: test_A
// 名称:  ...
cs_tai 发表于 2011-5-23 14:00



    v4版确实问题多多,上述代码只开多单,不能平仓,不开空单。我完全卸载了v3后,安装了v404,使用buysell是正常的,但使用上述代码怎么都是这个问题,非常无助,管理员可以帮我分析一下吗?
作者: cs_tai    时间: 2011-6-2 20:18:20

非常无助,管理员可以帮我分析一下什么原因吗?
作者: wwr_5817    时间: 2020-1-13 22:00:29

本帖最后由 wwr_5817 于 2020-1-14 07:36 编辑

64位旗舰版5.6.1.7,我今晚夜盘前在所用公式应用的FileAppend记录中,发现日盘最后1根Bar内,有1Tick的AccountDataExist==False,然后Return;其后,日盘收盘前某Tick,A_SendOrder开仓未成而夜盘开盘后显示日盘最后1根Bar上有开仓信号!咋回事?




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