1/.歷史數據的結果 只會盡可能地還原當時的交易條件 並不會還原到100%
2/.考慮一下你兩個測試是不是在同一個時間上去採的樣 根據你的代碼 tv是最新的結果 不會成為歷史自然不會相同
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工作的結構也不進相同
我建議你給出更完整的數據採樣方法 這樣論壇裡的各路高手會比較願意提供協助
首先你要弄清楚用来衡量这个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.
第一个按钮是历史数据中测试
第二个按钮是真实数据测试
我在测试中发现历史数据测试出来的变量数值错误,请看下面的简单程序
void OnTick()
{
string sym="USDCAD";
double tv=SymbolInfoDouble(sym,SYMBOL_TRADE_TICK_VALUE);
}
用第一个按钮 历史数据中测试 上面变量 tv值是 1.0
用第二个按钮 真实数据中测试 上面变量 tv值是 0.78
应该第二个值是正确的,请教一下为什么第一个会出现错误(历史数据和真实数据都是在USDCAD上面测试的)