我想通过A_GetAccount获取可用资金和总权益,再用 保证金*手数 预估开仓后的账号风险,风险率小于85%(CalRiskRatio < 0.85)才允许建仓。
问题:当风险值已经超过85%时,策略信号会全部消失,包括前面已经开过仓的信号,从而导致平仓逻辑失效。去掉(CalRiskRatio < 0.85),信号可恢复正常,但风险率经常超限。
原因:A_GetAccount获取的是实时数据,不是序列,会使整个图表相关变量的历史数据被实时数据污染。
请问老师如何破解?
Bool ret = A_GetAccount(acc,0);
FreeMargin = acc.available;
LastEquity = acc.currMargin + FreeMargin;
CalRiskRatio = (LastEquity - FreeMargin + perMargin*Lots)/LastEquity;
If(开仓逻辑 And CalRiskRatio < 0.85) 开仓
不是图表变量被实时信号污染
而是这俩根本就是两个体系
你混用就是会乱的
图表信号的重要用途是回测 回测第一重要的是 每次测结果都是一样的
你实时数据一直在变 怎么保证稳定
所以是两套系统 老师一直都是不建议混用的