但 mt5 的策略测试器无法使用该 tick 数据 - 对吗?:(
您是否可以编写一个脚本,从刻度线数据中为 MT5 创建一个人工符号,这样就可以使用自己的本地刻度线数据对该人工符号进行测试和优化?
== 谷歌翻译 ====>
但是,MT5 策略测试器不能使用 tick 数据,对吗? :(您能否编写一个脚本,通过刻度线数据为 MT5 创建一个人工符号,以便使用自己的本地刻度线数据对该人工符号进行测试和优化?
//https://www.mql5.com/zh/code/20225 #include <fxsaber\ThirdPartyTicks\Web.mqh> #include <fxsaber\ThirdPartyTicks\String.mqh> #include <fxsaber\ThirdPartyTicks\Data.mqh> struct SYMBOL_PROFILE { string Name; double BuyLots; double SellLots; bool operator ==( const SYMBOL_PROFILE &Value) const { return(this.Name == Value.Name); } string ToString( void ) const { return(this.Name + " +" + ::DoubleToString(this.BuyLots, 2) + " -" + ::DoubleToString(this.SellLots, 2)); } }; class SYMBOLS_PROFILE : public DATA<SYMBOL_PROFILE > { private: static const uchar CensoredURL[]; public: SYMBOLS_PROFILE( const string URL = NULL ) { uchar Bytes[]; if (WEB::Get(Bytes, (URL == NULL) ? ::CharArrayToString(SYMBOLS_PROFILE::CensoredURL) : URL)) { string Str = ::CharArrayToString(Bytes); STRING::Between(Str, "<tbody>", "</tbody"); STRING::Between(Str, "<tbody>", "</tbody"); Str = STRING::Between(Str, "<tbody>", "</tbody"); SYMBOL_PROFILE SymbProfile; while (::StringLen(Str) > 400) { SymbProfile.Name = STRING::Between(Str, "<td width=\"10%\">", "</td>"); SymbProfile.BuyLots = (double)STRING::Between(Str, "<span>", "</span>"); SymbProfile.SellLots = (double)STRING::Between(Str, "<span>", "</span>"); this.Add(SymbProfile); } } } string ToString(void ) const { string Res = NULL; const uint Size = this.GetAmount(); for (uint i = 0; i < Size; i++) Res += this[i].ToString() + "\n"; return(Res); } }; static const uchar SYMBOLS_PROFILE::CensoredURL[] = { 0x68, 0x74, 0x74, 0x70, 0x73, 0x3A, 0x2F, 0x2F, 0x72, 0x61, 0x6E, 0x6E, 0x66, 0x6F, 0x72, 0x65, 0x78, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x72, 0x75, 0x2F, 0x73, 0x68, 0x6F, 0x77, 0x2F, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x2F }; // 简介 void OnStart() { SYMBOLS_PROFILE Symbols; Print(Symbols.ToString()); }
结果
AUDCAD +0.06 -0.00 AUDCHF +0.02 -0.03 AUDUSD +0.05 -0.04 CADCHF +0.02 -0.03 CHFJPY +0.00 -0.01 DAX30 +0.00 -0.10 DJI30 +0.90 -0.00 EURAUD +0.16 -0.08 EURCAD +0.12 -0.00 EURCHF +0.00 -0.03 EURGBP +1.35 -19.99 EURJPY +0.00 -0.28 EURNZD +0.10 -0.00 EURRUB +0.00 -0.02 EURUSD +0.29 -0.19 GBPAUD +0.04 -0.03 GBPCAD +0.22 -0.54 GBPCHF +0.00 -0.06 GBPNZD +0.00 -0.05 GBPUSD +0.02 -0.02 NZDCAD +0.00 -0.01 NZDUSD +0.00 -0.01 USDCAD +0.09 -0.01 USDCHF +0.05 -0.01 USDJPY +0.15 -0.02 USDRUB +0.00 -0.02 USDZAR +0.00 -0.01 XAGUSD +0.00 -0.01 XAUUSD +0.02 -0.00 XBRUSD +0.00 -0.10
在第三方点数报价中,如果不借助该库 禁用限价订单的滑点功能,我们可以在测试器中得到以下结果
final balance 10005004.00 RUR OnTester result 10004391 2018.04.04 23:59:57 deal #397 balance -613.00 [withdrawal] done TESTER_Censored,M1: 6268667 ticks, 57486 bars generated. Environment synchronized in 0:00:00.468. Test passed in 0:00:03.416 (including ticks preprocessing 0:00:00.811). TESTER_Censored,M1: total time from login to stop testing 0:00:03.884 (including 0:00:00.468 for history data synchronization)
即利润为 5004 点,而 631 点(每八点)是测试器的 "奖励",这并不好。
在禁用限价订单滑点的情况下。
final balance 10004391.00 RUR OnTester result 10004391 TESTER_Censored,M1: 6268667 ticks, 57486 bars generated. Environment synchronized in 0:00:00.031. Test passed in 0:00:03.432 (including ticks preprocessing 0:00:00.827). TESTER_Censored,M1: total time from login to stop testing 0:00:03.463 (including 0:00:00.031 for history data synchronization)
没有 "奖励",这不是误导。
SlipPage
- 投票: 20
- 2016.08.25
- fxsaber
- www.mql5.com
Проскальзывания при исполнении ордеров вносят несистемные прибыль/убыток. Данный скрипт выводит величины этих проскальзываний в валюте счета. Можно оценить качество исполнения ордеров торговавшей ТС — вклад несистемных проскальзываний в ее мат. ожидание. Тестер в режиме...
您提到在 MO 中使用铸字,能详细说明一下吗?
我知道在当前版本中这是套利。或者是否有加载其他数据的选项?
我对从另一个开放式实时终端加载数据也很感兴趣,如何通过库更正确地实现这一点?
Maxim Dmitrievsky:
您提到使用铸字来制作《国防部》,能详细说明一下吗?
有人建议在国防部中使用历史。我没有解释,请参阅说明。自定义符号很方便,因为它们可以在 MQL 和测试器中同时使用。
据我所知,当前版本是套利。或者还有加载其他数据的变种?
当前版本是什么?我觉得没有理由使用其他数据源。
我还对从另一个开放终端实时加载数据感兴趣,如何通过库更恰当地实现这一点?
实时自定义是非常容易实现的。例如,实时股票符号(自动生成 M1 和 "tick "历史)只需 5-10 行纯 MQL 代码即可创建。
到目前为止,我自己只在 Tester/Optimiser 的基础上创建 TS 时使用自定义符号。为此,我使用该工具包作为源材料。
我使用其他工具加速和调整 Tester/Optimiser--请参阅上面的帖子。
ThirdPartyTicks:
与第三方逐笔报价档案协同工作的函数库。
作者: fxsaber