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

 
Alexey Viktorov:

然后你继续使用同样的措辞。


)))两个对象,一个较年长,一个较年轻,我需要较年轻(较近)对象的点价,我在评论中得到较年长(较远)对象的点价。为什么?如果上一个被注释掉的循环返回了最远的对象,那么当前的循环必须返回最接近的对象--最后一个,但返回倒数第二个。我在这里错过了一些东西。
 
PolarSeaman:
)))两个对象,一个较年长,一个较年轻,我需要较年轻(较近)对象的点价,我在评论中得到较年长(较远)对象的点价。为什么?如果上一个被注释掉的循环返回了最远的对象,那么当前的循环必须返回最接近的对象--最后一个,但返回倒数第二个。我在这里错过了一些东西。

一,二--要按时间选择循环中的对象,你需要比较两个时间--前一个对象和当前对象。如果当前时间 较长,则将其存储在一个变量中,以便在循环的下一次迭代中检查。在循环结束时,该变量将包含最近创建的对象。

 
YanSay:

试过了,不工作,我一定是做错了什么(

这里最粗暴的错误是在OrderDelete()函数参数中指定数值100而不是ticket。

下一个错误不是那么粗糙,但它与检查止损的计算值而不是其实际值有关。

订单类型也不被检查。如果我们选择了一个市场订单,怎么办?如何删除它?没有检查过订单符号。

考虑到这些错误,我们得到的代码 在价格达到止损时删除挂单

for (int i = OrdersTotal() - 1; i >= 0; --i)
{
   if (!OrderSelect(i, SELECT_BY_POS))
      continue;

   if (OrderSymbol() != Symbol())
      continue;

   if (OrderMagicNumber() != 100)
      continue;

   if (((OrderType == OP_BUYSTOP || OrderType() == OP_BUYLIMIT) && Bid <= OrderStopLoss()) ||
       ((OrderType == OP_SELLSTOP || OrderType() == OP_SELLLIMIT) && Ask >= OrderStopLoss() && OrderStopLoss() > 0.0))
   {
      if (OrderDelete(OrderTicket()))
         RefreshRates();
   }
                                        
}   
同时,在你的代码中,检查开单后是否立即达到止损。似乎在打开一个挂单后,这段代码不再被执行。也就是说,你需要将执行分支分开。一个人负责设置顺序,第二个人负责其伴奏。
Совершение сделок - Торговые операции - MetaTrader 5
Совершение сделок - Торговые операции - MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
 

女士们,先生们,大家好!

你能告诉我如何捕捉组合键,如Ctrl+1。我知道如何在键盘上抓住一个键。

但我需要在mt4中进行组合 - 如何做到这一点!

 
Игорь:

女士们,先生们,大家好!

你能告诉我如何捕捉组合键,如Ctrl+1。我知道如何在键盘上抓住一个键。

我需要一个Mt4的组合 - 如何做到这一点!

事件OnChartEvent,分析参数lparam和sparam,因为按Ctrl+1是两个事件。

 
Ihor Herasko:

OnChartEvent事件,分析lparam和sparam参数,因为按Ctrl+1是两个事件。

不,它不工作,我试过了!!。

它只显示ctrl键,其他所有的加1和字母都不工作!!。

 
Игорь:

不,它不起作用,我试过了!!。

它只显示kntrl键,其他所有的加1和字母都不起作用!!。

我写道。

按Ctrl+1是两个事件

抓住两个事件并进行分析。

2018.04.05 12:26:32.170 Test EURUSD,M15: OnChartEvent, id: CHARTEVENT_KEYDOWN, lparam: 17, dparam: 1.0, sparam: 285
2018.04.05 12:26:32.396 Test EURUSD,M15: OnChartEvent, id: CHARTEVENT_KEYDOWN, lparam: 49, dparam: 1.0, sparam: 2

这是一个Ctrl+1的按键。

 
Ihor Herasko:

我写道。

抓住两个事件并进行分析。

这是一个Ctrl+1的按键。

在这里,我只有countercl或1,而在其他方面没有事件,或显示你的代码!

在按下ctrl后,没有其他事件,直到你释放ctrl !

我发现了这个错误,谢谢 !

 
删除了重复的内容。
 
Vitaly Muzichenko:

有资料吗?=)

:)

原因: