在历史数据测试中(Debuging on history data)遇到的问题

 

第一个按钮是历史数据中测试

第二个按钮是真实数据测试

                                       

我在测试中发现历史数据测试出来的变量数值错误,请看下面的简单程序

void OnTick()
  {

   string sym="USDCAD";
   double tv=SymbolInfoDouble(sym,SYMBOL_TRADE_TICK_VALUE);
  }


用第一个按钮  历史数据中测试 上面变量 tv值是 1.0

第二个按钮  真实数据中测试 上面变量 tv值是 0.78

应该第二个值是正确的,请教一下为什么第一个会出现错误(历史数据和真实数据都是在USDCAD上面测试的)

 

1/.歷史數據的結果 只會盡可能地還原當時的交易條件 並不會還原到100%

2/.考慮一下你兩個測試是不是在同一個時間上去採的樣 根據你的代碼 tv是最新的結果 不會成為歷史自然不會相同

 
Hung Wen Lin #:

1/.歷史數據的結果 只會盡可能地還原當時的交易條件 並不會還原到100%

2/.考慮一下你兩個測試是不是在同一個時間上去採的樣 根據你的代碼 tv是最新的結果 不會成為歷史自然不會相同

谢谢,您的回答,我还是有点疑问,

tv=SymbolInfoDouble(sym,SYMBOL_TRADE_TICK_VALUE);  tvd的值 是 SYMBOL_TRADE_TICK_VALUE, SymbolInfoDouble

这是一个货币对的属性值Identifier of a symbol property. 按理说不大应变化,不管是在历史数据中,还是真实数据中,每一个tick对应的实际价值(value)不应该是大体不变的么?

 

其實 我並不太明白你採集數據的方式 所以只是根據經驗給出可能的狀況建議

MT4跟MT5工作的結構也不進相同

我建議你給出更完整的數據採樣方法 這樣論壇裡的各路高手會比較願意提供協助

 
Qfeng #:

谢谢,您的回答,我还是有点疑问,

tv=SymbolInfoDouble(sym,SYMBOL_TRADE_TICK_VALUE);  tvd的值 是 SYMBOL_TRADE_TICK_VALUE, SymbolInfoDouble

这是一个货币对的属性值Identifier of a symbol property. 按理说不大应变化,不管是在历史数据中,还是真实数据中,每一个tick对应的实际价值(value)不应该是大体不变的么?

你测试一下美元在后面的品种,看tick value是否会有变化?比如EURUSD, XAUUSD

 

首先你要弄清楚用来衡量这个tick value的计价币种是什么? 是USD还是CAD?

1, 如果是CAD, 那么USDCAD每个tick变动带来的价格变化一定是1 CAD的整数倍, 通常就是0.00001.

2, 如果是USD, 那么USDCAD每个tick变动带来的价格变化要在1的计算结果的基础上再换算成美元, 也就是0.00001除以当前USDCAD汇价. 如果当前USDCAD汇价为1.30270, 那么当前USDCAD按USD计算的tick value就是0.0000076764.

由于货币对通常是10万单位为一个标准合约, 那么上述1,2的结果按一个标准手计算的tick value分别就是1和0.76764.

以上计算的前提:

按照货币对的digits为5,即精确到小数点后第5位, 每个point就是0.00001. 每个tick变动一个point, 即tick size也是0.00001.


计价币种和作为计算对象的货币对是互相独立的, 计价货币是根据你的交易账户设置而定. 

同样是计算USDCAD, 你完全可以将黄金甚至比特币作为计价币种计算USDCAD的tick value.