新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 964

 
Nikolai Semko:
我不明白为什么围绕测试器有这么多的炒作。我只需要它的单次通过。所有的优化都应该在程序中进行。
上一次使用测试仪进行诡计是在大约7-8年前。

好吧有点不同意,我现在已经完成了对任何TS的MM的自动搜索,唉,MM的规则是任何方式,我需要一个盘中TS,要找到一个MM,仅仅通过看图就能在一两年内测试超过5%的回撤--好吧,不现实(有止损的TS!)

现在,如果我有自动搜索的MM,不同的TS将被测试 - 它已经更容易......等待很长一段时间,MM将搜索的随机条目每年49小时,但我不会用手计算,我将把我的笔记本明天,让它喘息

我刚刚放弃了测试,是时候回家了,这里有5%的缩水,随机进入,说实话,我甚至不知道什么是最佳的MM--10组,在每一组中,一个订单将由一个MM策略开始,或者它将被转移到另一边,也许这个订单将被减少手数或增加,所有设置都是合理的,最大手数0.5,最小0.1。

 
Igor Makanu:

好象我不同意,我现在已经完成了对任何TS的MM的自动搜索,唉,MM的规则是任何方式,我需要一个盘中TS,要找到这样一个MM,仅仅通过看图表就能在一两年的测试中超过5%的缩水--好吧,不现实(有止损的TS!)。

现在,如果我有自动搜索的MM,不同的TS将被测试 - 它已经更容易......等待很长一段时间,MM将搜索随机条目,每年49小时,但我不会用手计算,我将把我的笔记本明天,让它膨大。

我甚至不知道哪个MM是最佳选择--10组,在每组中,一个订单要么被一个MM策略启动,要么被转移到另一边,也许这个订单的手数会减少或增加,所有设置都是合理的,最大手数0.5,最小0.1


什么是MM?机器什么的?
但这幅图是根据历史数据优化(调整)参数的结果。而现有的结果是基于相同的历史数据。没有什么魔法,只是一种胡闹。你不认为这样的结果会在未来数据的下一个区间重复出现,是吗?
好吧,你不能在有悬崖的山地上前行,只看后视镜。
伊戈尔,我建议转给你。


 
Nikolai Semko:
什么是MM?机器什么的?

MM与PUK相同。资金管理 规则。:))))

 
Pul-Adgi Mo-UlStan:

我已经花了一整天的时间将猫头鹰和指标的准备代码从mt4转移到mt5。这很疯狂,我已经在mt4上用不同的算法从头写了两个顾问....。

psc.忍耐一下,嘘嘘。好吧,这只是因为我需要快速测试mt5...

太糟糕了,没有转换器.....

我认为Tumblr的提议被拒绝是由于策略的披露?

 
Nikolai Semko:
那么MM是什么呢?什么是MM?
但这幅图是对历史数据进行参数优化的结果。而现有的结果是基于相同的历史数据。没有魔法,只有花招。你不认为这个结果会在未来的下一节数据上重复出现,对吗?
那么,你不能在有悬崖的山地上前进,只看后视镜。
伊戈尔,我建议给你换一个。


资金管理

这不完全是优化,目标还没有达到,随机输入的挂单跟随价格,在优化器中,根据公式y=kx+b进行选择,以后我将使用多项式和指数,但优化器只搜索因素和订单值,所以不要把它弄糊了--这是一个网格,嗯,差不多,但目标还没有达到。

当我看市场的时候(虽然我一直在做,暂停得很厉害),从我在论坛上注册开始,我就一直在和他们打交道。 当然,我花了很长时间来提高MQL的编程层,但我在相关写作专家的一年里,按照工人的要求得到了大致的想法 ))

没问题,请讲

 
Nikolai Semko:

你是否尝试过在程序开始时使用宏替换?
例如:

你不需要改变任何东西。
事实是,在MQL5中工作了很长时间,你会对MQL4感到厌烦。我知道这是怎么回事。

我做了这个,谢谢你,它的工作))))。

#define  Ask_ SymbolInfoDouble(_Symbol,SYMBOL_ASK)
#define  Bid_ SymbolInfoDouble(_Symbol,SYMBOL_BID)
#define  Point_ SymbolInfoDouble(_Symbol,SYMBOL_POINT)
 

有一个功能

OrderCloseTime

在μl5中,它被替换为))))。

      //--- select history for access
      HistorySelect(0,TimeCurrent());
      //---
      int    orders=HistoryDealsTotal();  // total history deals

      for(int i=orders-1;i>=0;i--)
        {
         ulong ticket=HistoryDealGetTicket(i);
         if(ticket==0){Print("HistoryDealGetTicket failed, no trade history"); break;}
         //--- check symbol
         if(HistoryDealGetString(ticket,DEAL_SYMBOL)!=_Symbol) continue;
         //--- check Expert Magic number
         if(HistoryDealGetInteger(ticket,DEAL_MAGIC)!=(MA_MAGIC1||MA_MAGIC2)) continue;
         //--- check 
         datetime timCloseOrder=?????????????????????
         ГДЕ ВРЕМЯ ЗАКРЫТИЯ ОРДЕРА ВЗЯТЬ???????? 

我已经是第三天失去理智了,我已经走过了所有的陷阱,我正在测试时间限制,我想不出该怎么做,至少要写出他们把OrderCloseTime() 放在哪里----_901。)

 
Pul-Adgi Mo-UlStan:

有一个功能

在μl5中,它被替换为))))。

我快疯了第三天我已经经历了所有的陷阱,所有测试的时间限制我都想不出来怎么做,至少要写出OrderCloseTime() 在哪里----)))))))))))))))。

是的,要找到平仓的时间是一场噩梦......。

在mql5中没有这样的先验功能,因为这里的 "生命 "秩序在交易被创建时就结束了。一般来说,我们把我们在mql4中所说的订单分为3个阶段 订单--交易--位置。为了获得平仓的日期和时间,我们需要选择所需头寸的历史记录,并查看其中的所有交易,检查输入的类型。你需要 DEAL_ENTRY_OUT - 部分或完全退出头寸,以及 DEAL_ENTRY_IN_OUT -逆转头寸。然后通过检查这种交易的日期和时间,你就能发现该头寸是什么时候被关闭的。

 
Pul-Adgi Mo-UlStan:

如何做到这一点,至少要写出OrderCloseTime()----))))))))))))))) 的地方。

我也问过这个问题,不幸的是,论坛上只有少数人知道答案,这里是开头https://www.mql5.com/ru/forum/6343/page1096#comment_12518595

这里是解决方案https://www.mql5.com/ru/forum/6343/page1098#comment_12519819

这是一个普遍的解决方案:https://www.mql5.com/ru/code/16006

 
Igor Makanu:

我也问过这个问题,不幸的是,论坛上只有少数人知道答案,这里是开头https://www.mql5.com/ru/forum/6343/page1096#comment_12518595

这里是解决方案https://www.mql5.com/ru/forum/6343/page1098#comment_12519819

这是一个普遍的解决方案:https://www.mql5.com/ru/code/16006

在MQL5中,把库作为教程是非常不好的,也是不正确的--它们提供的知识是零。对于那些已经明白什么是什么的人来说,需要图书馆。

原因: