程序库: 交易品种 - 页 4 123456789101112 新评论 fxsaber 2018.04.17 11:44 #31 关于交易、自动交易系统和交易策略测试的论坛 交易中的机器学习:理论与实践(不仅是交易) fxsaber, 2018.04.15 16:31 让我们创建一个具有正确 tick 分布的自定义符号,并编写一个圣杯 TC。让我们进行回溯测试并发布结果。 // 利用生成的刻度线创建自定义字符的示例 #property script_show_inputs input string SymbName = "TESTER"; #include <fxsaber\ThirdPartyTicks\CustomSymbol.mqh> //https://www.mql5.com/zh/code/20225 // 生成具有所需属性的刻度历史记录 - 技术示例 int GetTicks( MqlTick &Ticks[], const int Amount = 1 e5 ) { static const MqlTick NullTick = {0}; const int Size = ArrayResize(Ticks, Amount); long time = (TimeCurrent() - 7 * 24 * 3600) * 1000; for (int i = 0; i < Size; i++) { Ticks[i] = NullTick; const double Price1 = NormalizeDouble(MathRand() / 1000.0, 3); const double Price2 = NormalizeDouble(MathRand() / 1000.0, 3); Ticks[i].bid = MathMin(Price1, Price2); Ticks[i].ask = MathMax(Price1, Price2); time += MathRand(); Ticks[i].time_msc = time; Ticks[i].time = (datetime)(time / 1000); } return(Size); } void OnStart() { CUSTOMSYMBOL Symb(SymbName); // 创建一个符号 if (Symb.IsCustom()) { Symb.SetProperty(SYMBOL_TRADE_STOPS_LEVEL, 0); // 使符号的货币成为账户的货币 Symb.SetProperty(SYMBOL_CURRENCY_PROFIT, AccountInfoString(ACCOUNT_CURRENCY)); Symb.SetProperty(SYMBOL_CURRENCY_MARGIN, AccountInfoString(ACCOUNT_CURRENCY)); Symb.SetProperty(SYMBOL_CURRENCY_BASE, AccountInfoString(ACCOUNT_CURRENCY)); // 计算利润 // Symb.SetProperty(SYMBOL_TRADE_TICK_VALUE, 1); // Symb.SetProperty(SYMBOL_TRADE_TICK_SIZE, Symb.GetProperty(SYMBOL_POINT)); MqlTick Ticks[]; GetTicks(Ticks); // 形成勾选历史记录 if ((Symb.AddTicks(Ticks) > 0) && (Symb.DataToSymbol() > 0) && Symb.On()) // 向符号发送打钩历史记录 ChartOpen(Symb.Name, PERIOD_CURRENT); // 打开图表 } }在这个脚本中,我们只需要编写自己的 GetTicks。根据生成的历史记录,我们将拥有一个几乎完整的(自定义)符号,可在测试器中进行交易。 fxsaber 2018.07.09 14:20 #32 fxsaber:另一种使用自定义符号的情况(不一定需要借助该库)。可以在新的历史数据 上对智能交易系统进行全自动定期回溯测试,并将测试结果传输到实战智能交易系统,使真实情况与测试器同步。这样,您无需编写自己的测试程序即可实现此类交易逻辑。使用此方案的另一种可能性:从市场上获取免费的 Expert Advisor 演示版,并在测试器中使用新报价进行追逐,复制器从测试器的结果中获取数据。因此,不需要付费版本。也许有必要禁止市场专家顾问在自定义符号上进行回溯测试....。// 在回溯测试中包含当前日期 #property script_show_inputs #include <Symbol.mqh> //https://www.mql5.com/zh/code/18855 input int Offset = -24 * 7; // 以小时为单位的偏移 #define HOUR 3600 void OnStart() { const SYMBOL Symb(_Symbol + "_Offset" + (string)Offset); // 创建一个符号 if (Symb.IsExist()) // 如果创建了符号 { Symb.CloneProperties(); // 复制属性 MqlRates Rates[]; // 移位条形图时间 for (int i = CopyRates(_Symbol, PERIOD_M1, 0, (int)SeriesInfoInteger(_Symbol, PERIOD_M1, SERIES_BARS_COUNT), Rates) - 1; i >= 0; i--) Rates[i].time += Offset * HOUR; // Symb.CloneTicks(Ticks); // 记录偏移柱状图,并将符号纳入市场观察中 if ((Symb.CloneRates(Rates) > 0) && Symb.On()) ChartOpen(Symb.Name, PERIOD_CURRENT); // 打开一个新的符号图表 } } MT5 Build 1880 - 目前运行正常。 fxsaber 2018.08.01 23:03 #33 在测试仪中设置滑点的两种方法 在实际刻度点之间插入伪刻度点(根据滑点值降低价格)。奇数点差 - 分析,偶数点差 - 交易。分析使用真实符号,交易使用自定义符号。自定义 - 根据滑点值对真实符号进行降级。 Igor Makanu 2018.08.02 10:37 #34 伟大的图书馆,但是,我引述: Andrey Khatimlianskii:谢谢!一如既往,比我想的要复杂一些;)您的代码有一个不可否认的优点--可以被提取和使用。但要修改其中的任何内容都很困难,这是一个缺点。只需一行代码,我就能创建一个完全现成的自定义符号副本,这非常方便,但是: 请告诉我如何使用您的库创建自己的符号,但不是复制历史数据- 我想修改 OHLC,不想破坏您的代码 ))), 谢谢您的帮助! Viktar Dzemikhau 2018.08.02 12:49 #35 我想知道为什么需要自定义符号?如果 DC 上的真实符号可以交易? Igor Makanu 2018.08.02 13:13 #36 Viktar Dzemikhau: 我想知道为什么需要自定义符号?如果 DC 中的真实符号可以交易?我的想法是,"自动交易不可能总是使用任何符号,如果 EA 不能在该符号上运行,也许需要另一种符号或使用自定义图表"。 这是有一定道理的。 ;) Viktar Dzemikhau 2018.08.02 15:21 #37 Igor Makanu:我正在发展 dickfix 的想法,比如 "并不总是可以使用任何符号进行自动交易,如果 EA 无法在此符号上运行,可能需要另一种符号或使用自定义图表"。这是有一定道理的。;) 这是垃圾。什么符号有什么区别?如果符号是真实的,它就可以被访问。我有自己的符号类。该类的 唯一必要成员 是交易工具的名称。你输入另一个工具,我就能得到所有必要的数据。因此,在进入这个主题后,我就在想,为什么要自定义符号呢?如果可以交易,它的名称就是如此这般;如果不能交易......它怎么会不能交易呢? Igor Makanu 2018.08.02 16:39 #38 Viktar Dzemikhau: 如果可以交易,它的名字就叫某某;如果不能交易......它怎么会不能交易呢?为什么不能交易? 专家顾问将在策略测试器中工作,因此您可以使用优化器...这意味着您可以寻找模式。 俗话说,人各有志--如果你认为可以将数据存储在类中,那就请便吧,对我来说,将数据输出到自定义符号中,然后在该图表上使用指标会更容易。 以下是我的合成图表中的欧元兑美元 - 英镑兑美元价差。 https://charts.mql5.com/18/849/spread-h1-alpari-international-limited.png 非常方便的是,您可以直观地查看图表并分析条形图的时间,此外还有所有的 TF,您可以在策略测试器中运行策略,而且返回到真实符号也不成问题。 Viktar Dzemikhau 2018.08.02 17:00 #39 Igor Makanu:为什么不呢?在策略测试器中,智能交易系统可以工作,因此您可以使用优化器...这意味着您可以寻找模式。俗话说,人各有志--如果你认为数据可以存储在类中,那就继续吧,对我来说,将数据输出到自定义符号中,然后在该图表上使用指标会更方便。我当然会这么做。毕竟,在 5 中,您可以随时访问不同的工具。为每种工具编写一个类是多余的。这就好比有形状,我们不会使用基类形状,而总是写一个新的。fxsaber 有时写的 东西很有水平。而且他知道得更清楚,显然他需要这样做。但我认为这是不必要的。 Igor Makanu: Expert Advisor 可以在策略测试器中运行,因此您可以使用优化器......这意味着您可以寻找模式俗话说,人各有志--如果您认为数据可以存储在类中,那就请便吧,对我来说,将数据输出到自定义符号中,然后在该图表上使用指标更方便。下面是我的合成图表中欧元兑美元 - 英镑兑美元价差的草图。https://charts.mql5.com/18/849/spread-h1-alpari-international-limited.png非常方便的是,您可以直观地查看图表并分析条形图的时间,此外还有所有 TFs,您可以在策略测试器中运行策略,而且返回到真实符号也不成问题。如果我知道它能带来什么,也许我会支持这个想法。但现在的情况是......) )) fxsaber 2018.08.02 19:03 #40 Igor Makanu:请告诉我如何使用您的库创建自己的符号,但不要复制历史数据- 我想修改 OHLC,不想破坏您的代码 ))),不胜感激!以上是简短代码。那里有详细的注释。 123456789101112 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
关于交易、自动交易系统和交易策略测试的论坛
交易中的机器学习:理论与实践(不仅是交易)
fxsaber, 2018.04.15 16:31
让我们创建一个具有正确 tick 分布的自定义符号,并编写一个圣杯 TC。让我们进行回溯测试并发布结果。
在这个脚本中,我们只需要编写自己的 GetTicks。根据生成的历史记录,我们将拥有一个几乎完整的(自定义)符号,可在测试器中进行交易。
另一种使用自定义符号的情况(不一定需要借助该库)。
可以在新的历史数据 上对智能交易系统进行全自动定期回溯测试,并将测试结果传输到实战智能交易系统,使真实情况与测试器同步。这样,您无需编写自己的测试程序即可实现此类交易逻辑。
使用此方案的另一种可能性:
从市场上获取免费的 Expert Advisor 演示版,并在测试器中使用新报价进行追逐,复制器从测试器的结果中获取数据。因此,不需要付费版本。
也许有必要禁止市场专家顾问在自定义符号上进行回溯测试....。
MT5 Build 1880 - 目前运行正常。
在测试仪中设置滑点的两种方法
伟大的图书馆,但是,我引述:
谢谢!一如既往,比我想的要复杂一些;)
您的代码有一个不可否认的优点--可以被提取和使用。但要修改其中的任何内容都很困难,这是一个缺点。
只需一行代码,我就能创建一个完全现成的自定义符号副本,这非常方便,但是:
请告诉我如何使用您的库创建自己的符号,但不是复制历史数据- 我想修改 OHLC,不想破坏您的代码 ))), 谢谢您的帮助!
我想知道为什么需要自定义符号?如果 DC 中的真实符号可以交易?
我的想法是,"自动交易不可能总是使用任何符号,如果 EA 不能在该符号上运行,也许需要另一种符号或使用自定义图表"。
这是有一定道理的。
;)
我正在发展 dickfix 的想法,比如 "并不总是可以使用任何符号进行自动交易,如果 EA 无法在此符号上运行,可能需要另一种符号或使用自定义图表"。
这是有一定道理的。
;)
如果可以交易,它的名字就叫某某;如果不能交易......它怎么会不能交易呢?
为什么不能交易? 专家顾问将在策略测试器中工作,因此您可以使用优化器...这意味着您可以寻找模式。
俗话说,人各有志--如果你认为可以将数据存储在类中,那就请便吧,对我来说,将数据输出到自定义符号中,然后在该图表上使用指标会更容易。
以下是我的合成图表中的欧元兑美元 - 英镑兑美元价差。
https://charts.mql5.com/18/849/spread-h1-alpari-international-limited.png
非常方便的是,您可以直观地查看图表并分析条形图的时间,此外还有所有的 TF,您可以在策略测试器中运行策略,而且返回到真实符号也不成问题。
为什么不呢?在策略测试器中,智能交易系统可以工作,因此您可以使用优化器...这意味着您可以寻找模式。
俗话说,人各有志--如果你认为数据可以存储在类中,那就继续吧,对我来说,将数据输出到自定义符号中,然后在该图表上使用指标会更方便。
我当然会这么做。毕竟,在 5 中,您可以随时访问不同的工具。为每种工具编写一个类是多余的。这就好比有形状,我们不会使用基类形状,而总是写一个新的。fxsaber 有时写的 东西很有水平。而且他知道得更清楚,显然他需要这样做。但我认为这是不必要的。
Expert Advisor 可以在策略测试器中运行,因此您可以使用优化器......这意味着您可以寻找模式
俗话说,人各有志--如果您认为数据可以存储在类中,那就请便吧,对我来说,将数据输出到自定义符号中,然后在该图表上使用指标更方便。
下面是我的合成图表中欧元兑美元 - 英镑兑美元价差的草图。
https://charts.mql5.com/18/849/spread-h1-alpari-international-limited.png
非常方便的是,您可以直观地查看图表并分析条形图的时间,此外还有所有 TFs,您可以在策略测试器中运行策略,而且返回到真实符号也不成问题。
如果我知道它能带来什么,也许我会支持这个想法。但现在的情况是......) ))
请告诉我如何使用您的库创建自己的符号,但不要复制历史数据- 我想修改 OHLC,不想破坏您的代码 ))),不胜感激!
以上是简短代码。那里有详细的注释。