在MQL5中一起学习和写作 - 页 21

 

потому что вы берете каждый раз новое время тика, и оно конечно не равно предыдущему.

在上一个函数中,你取的是条形图的开始时间。所以在这里也要取条形图的时间,而不是刻度时间。

向不懂的人解释一下,代码中的哪个参数要改成哪个。

如何描述条形时间,而不是刻度时间?

 
Khomtchenko:

向不明白的人解释一下,代码中的哪个参数要改成哪个。

如何描述条形时间,而不是刻度时间?

例如:https://www.mql5.com/ru/docs/series/copytime
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyTime
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyTime
  • www.mql5.com
Доступ к таймсериям и индикаторам / CopyTime - Документация по MQL5
 
Khomtchenko:

向不明白的人解释一下,代码中的哪个参数要改成哪个。

如何描述一个条形的时间,而不是一个刻度?

这里有一个关于"新酒吧 "事件处理程序 的流行描述

一般来说,在提出问题之前,不要懒得去看文章和代码库。

 

Вот тут все популярно описано Обработчик события "новый бар"

一般来说,在提出问题之前,不要懒得去看文章和代码库。

是的,我看了那里。他们开始是为了健康,最后是一堆文件,做一些特定的事情,但我只需要一个函数,就可以了。他们不能给我最终产品的代码。他们制造了一个混乱...
 

在mql4中,你可以在五行中找出该酒吧是否是新的。而现在已经写了一大堆文件,不知道该把它们放在哪里,在程序里面写什么......

总之,如果有专家,那就给我一个代码的例子,这样我就不会吃亏了,我可以自己送任何人去图书馆,无论是电子的还是真实的。

Обработчик события "новый бар"
Обработчик события "новый бар"
  • 2010.10.04
  • Konstantin Gruzdev
  • www.mql5.com
Язык программирования MQL5 позволяет решать задачи на совершенно новом уровне. Даже те задачи, которые уже вроде имеют решения, благодаря объектно-ориентированному программированию могут подняться на качественно новый уровень. В данной статье специально взят простой пример проверки появления нового бара на графике, который был преобразован в достаточно мощный и универсальный инструмент. Какой? Читайте в статье.
 
Khomtchenko:
我并不怀疑,但我问这个问题只是为了检查一下--有没有人在mql4和mql5中创建了一个相同的EA,并比较了测试结果?如果代码经过适当的转换,它应该是完美相似的,不是吗?还是我错了?

如果测试是在那里平行进行的,而在mql5中,逻辑被放在onTick中,那么它将是类似的。

唯一的区别可能是在价差上。在5,历史包含了传播。在4版本中,测试器的扩散等于终端中当前的扩散。

如果测试 "每一个刻度",看起来会更小,因为各版本的刻度生成算法是不同的。

 
Khomtchenko:

在mql4中,你可以在五行中找出该酒吧是否是新的。而现在已经写了一大堆文件,不知道该把它们放在哪里,在程序里面写什么......

总之,如果有专家,那就给我一个代码的例子,这样我就不会吃亏了,我可以自己送任何人去图书馆,无论是电子的还是真实的。

这里,声明lastbar 变量为静态或全局变量,iTime 数组为全局变量。

bool NewBar()
  {

   if(CopyTime(_Symbol,_Period,0,1,iTime)<1)return(false);

   if(lastbar!=iTime[0])
     {
      lastbar=iTime[0]];
      return(true);
     }
   else
     {
      return(false);
     }
  }
 

页面上有一个例子,其中有isNewBar函数

https://www.mql5.com/ru/forum/2804/38752#comment_38752

Что меняет режим тестера "только цены открытия"?
Что меняет режим тестера "только цены открытия"?
  • www.mql5.com
Собственно, для советника работающего по onTick, в режиме "Только цены открытия" при тестировании все вычисления индикаторов и вызов функции OnTick() в экспертах происходит только один раз на бар.
 

1.我并没有要求在mql4和mql5上测试相同策略的结果。

我习惯在一个新的条形图上进场,如果条件符合进场要求,则平仓,如果指标显示相反的信号,则在一个新的条形图上再次进场。

在mql4上,我用这个程序在一个新条上输入。

void Fun_New_Bar() // Ф-ия обнаружения ..

{ // ...新酒吧

static datetime New_Time=0; // 当前酒吧的时间。

New_Bar=false; //没有新条形图

if(New_Time!=Time[0]) // 比较时间

{

New_Time=Time[0]; // 现在的时间是

New_Bar=true; // 新条被捕获。

}

}

这就是使用我的策略在mql4上测试机器人的结果。

mql4 EA的测试结果

谢谢你送来确定新栏的程序。他们正在工作。我做了一个脚本,在新的条形图上写出Alert,并在M1上测试,所以我没有等太久。

但同样的策略在mql5专家顾问中使用这两个程序,得到的结果完全不同(也是一样的)。

mql5顾问的测试结果

我没有白白地撕扯我的衬衫和跺脚。我想重复这些结果,但它们并不一致。

下面是mql4中的onStart函数大约是这样的

int start()

{

GetIns()。

Fun_New_Bar()。

如果(New_Bar==false)返回(0)。

如果(Total()>0)

{

CloseSellEnd()。

CloseBuyEnd()。

}

如果(Total()<1)

{

OpenBuy()。

OpenSell()。

}

return(0);

}

在mlq5中也是如此。

空白的OnTick()

{

GetIns()。

如果(NewBar())

{

如果(Total()>0)TryToClose()。

如果(Total()<1)

{

OpenBuy(Lots,10, "EUR/USD (Buy)",102406)。

OpenSell(Lots,10, "EUR/USD (Sell)",102406)。

}

}

}

GetIns处理指标参数,Total()-给出mql4所需魔力的头寸数量或mql5所需的符号。

帮助。

 

我想我已经找到了差异的原因。你不会相信的。MT4和MT5有不同的报价历史。似乎略有不同,而且该策略的测试结果有很大差异!!!!

这里有一个不同终端上的情节。

你仔细看看,是有区别的。一个小的?而策略的测试结果有什么不同,也很小吗?

我将与开发商联系!好一个测试版!!!。