表示一个新的酒吧 - 页 4

 
Donald Gibson:

增强型MQL4?

从未听说过这个。


我也是,从昨天开始;)而正确的名称似乎是"更新的MQL4"。MQ写道。

(...) 从600版开始,MQL4编程语言 已经完全修改,达到了MQL5的水平--现在你可以使用统一的MetaEditor开发环境、单一风格、库和调试工具在MQL4/5中开发交易机器人。

(......)因此,我们决定在其中实现尽可能多的MQL5语言功能和特点,完全保留MQL4功能。换句话说,所有强大的MQL5功能,包括ООP 和本地代码编译器,将在MQL4中可用。

为了实现这一目标,我们已经开发了一个统一的编译器,自动支持MQL4和MQL5语言。

定义中的问题是 "语言 "这个词。语言是MQL,与C++是一种语言和Basic是一种语言一样。更新的MQL4/MQL5只是MQL的特定平台修改,不多不少,因此,(原生的)MQL4和更新的MQL4的比较与C和C++差不多。而MQL4.com向MQL5.com的迁移正好使这种混乱更加完美。正如这些帖子所显示的,大多数人并没有把OOP与MQL4联系起来,就像我一样。对我来说,这一直是MQL5,它支持两个平台,MT4和MT5。

但无论如何,它工作得很好,与周围所有其他蹩脚的东西相比,MQLWhatever 是最好的界面。

 

@Lorentzos Roussos

Alain can correct me on this but you may find gaps in instances where on the time horizon of a bar there where no ticks , so no bar will be in place

噗噗噗......。我还没有见过这样的口才。(这并不意味着什么)。

我使用我的 "NewBar-indicator "在前一个柱子的高点或低点上自动拉动止损。

(事实上,这有点困难,因为我认为 "Innenstaebe and Aussenstaebe" (eng. "inside and outside movements" ? ???)。 不知道正确的翻译是什么。

但我只打算在每分钟至少有20-100个点的流动性市场中使用。

我不认为我会找到一个没有任何刻度的10分钟周期。

无论如何,该程序应该能够处理这个问题。

谢谢!

威尔伯

 
Willbur:

@Lorentzos Roussos

噗噗噗......。我还没有见过这样的口才。(这并不意味着什么)。

我使用我的 "NewBar-indicator "在前一个柱子的高点或低点上自动拉动止损。

(事实上,这有点困难,因为我认为 "Innenstaebe and Aussenstaebe" (eng. "inside and outside movements" ? ???)。 不知道正确的翻译是什么。

但我只打算在每分钟至少有20-100个点的流动性市场中使用。

我不认为我会找到一个没有任何刻度的10分钟周期。

无论如何,该程序应该能够处理这个问题。

谢谢!

威尔伯

你使用的是iTime,如果没有新的条形图,它就不会启动,你是安全的。
 
你使用的是iTime,如果没有新条,无论如何都不会启动。你是安全的 <br / translate="no">

你说的 "你在使用iTime "是什么意思? 我认为 "iTime "只是你程序中的一个变量--如果你愿意,你可以把它命名为 "Bert "或 "Clarly"?

- - - - -

今天我做了一些测试。我发现了你提到的一些缺口。

例如,S&P500在20:34有一个柱子,在20:35和20:36,我没有从服务器(ActiveTrades)得到刻度和柱子。下一个点位在20:37到达。

随后,图表中没有这个时期的条形图(见附件M1图表)

我没有检查,但我认为在CopyRates()函数 中,这个时间段也没有条形。



我认为,你应该在这一点上检查你的代码。

我猜测,它将会把20:37的三个第一刻度线显示为新的条形。

(TimeCurrent()从20:34跳到20:37!你需要添加三次PeriodeSeconds()来达到这个目的)。

void OnTick()  
{
//---   if(TimeCurrent()>=projection)   
    {Print("New Bar "+TimeToString(projection,TIME_DATE|TIME_MINUTES));   
     projection=projection+PeriodSeconds();   
    }

威尔伯


 

大家好。

如果有人还在寻找......这里是我的代码的一个剪影,以确保每条街只有一个交易被打开。

  if (iBars(Symbol(),0) == BarsCurr)DisableTrading = 1;
  
  for(i=0;i<OrdersTotal();i++)
  {
  if (OrderSelect (i,SELECT_BY_POS,MODE_TRADES) == True && OrderMagicNumber() == MagicNumber) DisableTrading = 1;
  }

  for(i=OrdersTotal();i>0;i--)
  {
  if (OrderSelect (i,SELECT_BY_POS,MODE_HISTORY) == True && OrderMagicNumber() == MagicNumber)
  {
  if ((OrderClosePrice() >= Open[0] && OrderClosePrice() <= Close[0]) && (OrderOpenPrice() >= Open[0] && OrderOpenPrice()<= Close[0]))
  {
  DisableTrading = 1;
  }
   }
      }

ibars可以用bar代替,disabletrading = 1表示不做任何事情。酒吧部分可以用正常发布的内容来进一步理解。把BarsCurr = 0放在初始化部分,BarsCurr = Bars放在你代码的买/卖单 部分。

但我确实有一个问题,我试图通过信号反转来实现平仓指令......有什么想法?

 

由于关于承认NewBars的辩论变得有点长,我将很快总结出结果。

技术环境。

如果一个变化(新的交易或新的价格确定)被服务器检测到,服务器会向终端发送一个信号。终端程序触发了OnTick()例程。

通过这个信号我们可以得到以下信息。

当前时间()- 服务器发送tick时的时间。

关于最后一个 tick 的信息 - SymbolInfoTick()
- 勾选产生的服务器时间
- 问价
- 出价
- 最后价格(并非所有供应商都有)。
- 表示改变了什么的标志。

关于当前条形的信息
- CopyRates()
- 酒吧的 "名称",例如 "10:20:00"。
- 开-高-低-收

识别一个新的条形图(如Period = M1)。

因为服务器只在有变化的情况下才会发送信号。
名称为 "hh.mm:00 "的条形图可能比 "hh:mm:00 "晚出现。

这可能会对流动性差的符号造成特殊情况。

处理周期持续时间的解决方案不会发现这一点。

TimeCurrent() bars "name"
最后一次打勾 10:10:07 10.10:00
下一个刻度线 10:11:30 10:11:00

与此相反的是(在一个时期内零刻度)。

TimeCurrent() bars "name"
上一个刻度线 10:10:30 10:10:00
下一个时间点 10:13:40 10:13:00 10:12:00的条形图不见了!

我很少看到这样的情况(在服务器负载非常高的情况下),服务器时间已经切换到下一个时段,而条形图却没有。

TimeCurrent() bars "name"
上一个时间点 10:10:00 10:09:00
下一个时间点 10:10:00 10:10:00

结论。

为了抑制不必要的CopyRates(),使用TimeCurrent()是可以的。

当TimeCurent()到达新的时间段时,我们必须检查条形图是否也被切换了。

这让我想起了阿兰很早就提出的代码。

https://www.mql5.com/en/forum/22983

威尔伯

Improve your time execution by removing Bars function calls
Improve your time execution by removing Bars function calls
  • www.mql5.com
After a basic profiling I get the following results :.
 

@emeka Mbanefo

我的手册没有提到一个名为 "iBars "的函数

你确定这是MQL5的代码吗?

威尔伯

 
Willbur:

@emeka Mbanefo

我的手册没有提到一个名为 "iBars "的函数。

你确定这是MQL5的代码吗?

威尔伯

Ah, its not for mql5. It'sfor mql4, I think.不过,iBars是我在玩的。它的Bars是一个通用函数,正如我之前所说的。

仍然在等待关于信号反转代码的帮助。

谢谢。

 
emeka Mbanefo:

啊,这不是针对mql5的,是针对mql4的,我想。不过,iBars是我在玩的。它的Bars是一个一般的功能,正如我之前所说。

仍然在等待关于信号反转代码的帮助。

谢谢。

  • 请不要用不相关的内容劫持其他话题。
  • 这个话题是关于mql5的,正如已经说过的
  • 这个话题是关于检测新的条形图,而不是每个条形图只交易一次。
  • iBars在检测新条形上是不可靠的。
Indicate a new bar
Indicate a new bar
  • www.mql5.com
Another idea could be the check wether the number of bars has been incremented.
原因: