A_GetMarginRate函数这样写编译错?请指导

/ 计算动态手数

           if(Q_UpperLimit > Q_LowerLimit*1.03)

           {

               SetGlobalVar(10, A_GetMarginRate*A_FreeMargin/(BuyOrderPrice*BigPointValue*ContractUnit));

               SetGlobalVar(11, A_GetMarginRate*A_FreeMargin/(SellOrderPrice*BigPointValue*ContractUnit));

           }。A_GetMarginRate函数这样写编译错?请指导

如何写这样一条公式
请老师帮忙讲解一下这样写的好处
锁仓保证金不足的问题,请指导
这样写会信号闪烁吗
请tblaocai老师帮修改用户函数
这样写能实现发单5秒钟后不成交,马上撤单吗?
根据多空信号,把K线标志成这样的,在TB里怎么写?
怎么对市场里的全部商品进行涨跌排序?这样的代码怎么写呀?
怎么对市场里的全部商品进行涨跌排序?这样的代码怎么写呀?
老师,编译的时候显示最终目标文件编译错误。怎么回事啊?

你参数都没填

 if(!A_GetMarginRate(Symbol, MarginRateValue))

       {

           Alert("保证金率获取失败");

           Return;

       }

       MarginRateNum = MarginRateValue.RateShort; 但编译出错,RateShort不是结构成员工?

你从哪里看来的rateshort?

函数手册里只有这三个属性

Params

   // 可添加参数    

Vars

 Numeric BuyTriggerPrice;       // 做多触发价

   Numeric SellTriggerPrice;      // 做空触发价

   Numeric BuyOrderPrice;         // 做多委托价

   Numeric SellOrderPrice;        // 做空委托价

   MarginRate MarginRateValue;    // 保证金率结构体

   Numeric dMarginRateNum;         // 保证金率数值

   Numeric kMarginRateNum;

   

Events

   onBar(ArrayRef<Integer> indexs)

   {

       // 初始化全局变量

       if(BarStatus == 0 || GetGlobalVar(0) == InvalidNumeric)

       {

           SetGlobalVar(0, 0);  // 初始化标志

           SetGlobalVar(3, 9999); // 时间戳初始值

           SetGlobalVar(5, 0);   // 做多价格

           SetGlobalVar(6, 0);   // 做空价格

           SetGlobalVar(10, 0);  // 做多数量

           SetGlobalVar(11, 0);  // 做空数量

           SetGlobalVar(13, 0);  // 多单状态

           SetGlobalVar(14, 0);  // 空单状态

           SetGlobalVar(17,9999);  //

           SetGlobalVar(18, 0);  //

           SetGlobalVar(4, 0);  //

       }

       

       if(Q_UpperLimit == InvalidNumeric || Q_LowerLimit == InvalidNumeric) return;

       

       // 实时交易逻辑(K线结束时)

       if(BarStatus == 2)

       {

           // 计算实时参数

           BuyTriggerPrice = Q_LowerLimit + 33.33/100*(Q_UpperLimit - Q_LowerLimit);

           SellTriggerPrice = Q_UpperLimit - 33.33/100*(Q_UpperLimit - Q_LowerLimit);

           

           BuyOrderPrice =Round( Min(Open - 15.33/100*(Q_UpperLimit-Q_LowerLimit), BuyTriggerPrice),2);

           SellOrderPrice =Round( Max(Open + 15.33/100*(Q_UpperLimit-Q_LowerLimit), SellTriggerPrice),2);

           

           SetGlobalVar(5, BuyOrderPrice);

           SetGlobalVar(6, SellOrderPrice);

           if(!A_GetMarginRate(Symbol, MarginRateValue))

       {

           Alert("保证金率获取失败");

           Return;

       }

       dMarginRateNum = longMarginRateio;  // 多头

        kMarginRateNum = shortMarginRateio;  //空头

           

           

           // 计算动态手数

           if(Q_UpperLimit > Q_LowerLimit*1.03)

           {

               SetGlobalVar(10, IntPart(dMarginRateNum/10*A_FreeMargin/(BuyOrderPrice*BigPointValue*ContractUnit)));

               SetGlobalVar(11, IntPart(kMarginRateNum/10*A_FreeMargin/(SellOrderPrice*BigPointValue*ContractUnit)));

           }请帮修改一下保正金率获得代码的正确写法。谢谢。

 if(!A_GetMarginRate(Symbol, MarginRateValue))

       {

           Alert("保证金率获取失败");

           Return;

       }

       dMarginRateNum = MarginRateValue.longMarginRatio;  // 多头

        kMarginRateNum = MarginRateValue.shortMarginRatio;  //空头

建议先把基础学好,不要空中楼阁

谢谢你的建议,因正实盘,便学便用。按你的修改编译通过了。先摸盘测一下,正常后应用于实盘。

摸测保正金率获取实败?

 if(!A_GetMarginRate(Symbol, MarginRateValue))

       {

           Alert("保证金率获取失败");

            dMarginRateNum = 12.98/100;  // 多头

            kMarginRateNum = 12.98/100;  //空头


       }

       dMarginRateNum = MarginRateValue.longMarginRatio;  // 多头


       kMarginRateNum = MarginRateValue.shortMarginRatio;  //空头

在保正金率实败时赋予常用保正金率12.98/100.保正能正常发单,这样编代码正确否?

我没看懂。

真实账户的保证金率是你可以想设置多少就设置多少的吗?


因为我的代码要加载到所有品种,计算各品种的发单数量,有交易所的动太保正金率方便多了。可设有点麻烦。