如何获得保正金率?
if(!A_GetMarginRate(Symbol, MarginRateValue)) { Alert("保证金率获取失败"); Return; } MarginRateNum = MarginRateValue.Rate; // 修正处:使用Rate字段 // 计算动态手数 if(Q_UpperLimit > Q_LowerLimit*1.03) { SetGlobalVar(10, IntPart(MarginRateNum/10*A_FreeMargin/(BuyOrderPrice*BigPointValue*ContractUnit))); SetGlobalVar(11, IntPart(MarginRateNum/10*A_FreeMargin/(SellOrderPrice*BigPointValue*ContractUnit))); }
A函数要挂账户后才能获取 ,你后面的Q函数也是一样的
回复:MarginRateNum = MarginRateValue.Rate;编译出错,提示Rate不是结构成员?
回复: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 = MarginRateValue.Rateio; // 多头 kMarginRateNum = MarginRateValue.Rateio; //空头 // 计算动态手数 if(Q_UpperLimit > Q_LowerLimit*1.03) { SetGlobalVar(10, IntPart(MarginRateNum/10*A_FreeMargin/(BuyOrderPrice*BigPointValue*ContractUnit))); SetGlobalVar(11, IntPart(MarginRateNum/10*A_FreeMargin/(SellOrderPrice*BigPointValue*ContractUnit))); }