初学者的问题 MQL5 MT5 MetaTrader 5 - 页 876

 
Vitaly Muzichenko:

不幸的是,我没有遇到过这篇文章,也许其他人可以建议一下。

你将无法设置订单,因为你将无法输入正确的设置价格。这同样适用于地段。

我用鼠标设定。

  • 点击上面的价格+Ctrl - 卖出限制
  • 点击下面的价格+Ctrl -购买限制
  • 点击上面的价格+Ctrl+Shift - 买入停止
  • 点击价格下方+Ctrl+Shift - 卖出止损
你也可以转移BuyStopLimit和SellStopLimit。
 
Artyom Trishkin:

我在用鼠标打赌。

  • 点击上面的价格+Ctrl - 卖出限制
  • 点击下面的价格+Ctrl -购买限制
  • 点击上面的价格+Ctrl+Shift - 买入停止
  • 点击价格下方+Ctrl+Shift - 卖出止损
你也可以把买入止损点和卖出止损点与shifft

这篇文章中的控制面板https://www.mql5.com/ru/articles/62,可以在测试器中工作(只有按钮)?

Создание активных панелей управления на MQL5 для торговли
Создание активных панелей управления на MQL5 для торговли
  • 2010.04.15
  • Евгений
  • www.mql5.com
Удобство имеет большое значение в работе, а тем более в работе трейдера, где скорость и точность решают многое. При подготовке терминала к работе каждый настраивает своё рабочее место максимально комфортно для себя, чтобы в максимально короткий срок можно было совершить анализ и войти в рынок. Но реальность такова, что разработчики не могут...
 
Sergey Savinkin:

这篇文章中的控制面板https://www.mql5.com/ru/articles/62,可以在测试器中工作(只有按钮)?

那么就试试吧--是什么阻止了它?

我只是写了我自己是如何把挂单放在可视化器中的。

 
Artyom Trishkin:

那么就试试吧--是什么阻止了你?

我只是简单地写了我是如何在展示台上设置挂单的。

我现在正在尝试。我不想浪费时间,我在机器人的操作中不需要这个面板,我只是需要它来做一个测试。因此,我并不打算详细研究这个问题。

 
很好的文章,但在测试器中OnChartEvent() 事件没有被调用 按钮不工作。在论坛上找到了解决方案https://www.mql5.com/ru/forum/42817/page2
Использование переменных в событии OnChartEvent индикатора в тестере
Использование переменных в событии OnChartEvent индикатора в тестере
  • 2016.02.25
  • www.mql5.com
При тестировании в эксперте можно обрабатывать пользовательские события с помощью функции OnChartEvent(), но в индикаторах эта функция в тестере не вызывается.
 

你能告诉我为什么当我把下面的代码从close[i-1]改为close[i-2]时,会出现Array of Range?这段代码是严格按照MQL5的书编写的,但它并没有解释为什么当价格被移位超过2个单元格时,缓冲区会超限。

  {
   int values_to_copy;
   int start;
   int calculated=BarsCalculated (iBands1_handle);

   
   if (calculated <=0)
   {
    return (0);
   }
   if (prev_calculated==0 || calculated!=bars_calculated)
   {
    start=1;
    if (calculated> rates_total) values_to_copy=rates_total;
    else values_to_copy=calculated;
    }
    else
    {
   start=rates_total-1;
   values_to_copy=1;
   }
   
   if(!FillArrayFrom_iBands1_handleBuffer(Base,Upper,Lower,iBands1_handle,values_to_copy)) return(0);

   for (int i=start; i <rates_total &&!IsStopped ();i++)
   {
    Print("C ", close[i-2]);
   }
 
clickaider:

你能告诉我为什么当我把下面的代码从close[i-1]改为close[i-2]时,会出现Array of Range?这段代码是严格按照MQL5的书编写的,但它没有描述为什么当价格移位超过2个单元格时,会发生从缓冲区提款。

我认为我们正在谈论的是一个指标。因此,考虑访问数组-时间序列"关闭"的两种情况。(1)当"开始"等于 "1 "时会发生什么;(2)当"开始"等于 "rate_total-1 "时会发生什么。

如果你试图对情况(1)和情况(2)执行 "close[i-2]",只需在头脑中计算产生的"close"数组索引。

 
Vladimir Karputov:

我明白,我们正在谈论的是一个指标。因此,考虑访问"接近"时间序列阵列 的两种情况。(1)当"开始"等于 "1 "时会发生什么;(2)当"开始"等于 "rate_total-1 "时会发生什么。

如果你试图对情况(1)和情况(2)执行 "close[i-2]",只需在头脑中计算产生的"close"数组索引。

谢谢,我检查过了,有必要在start = 1的值中放一个大于1的数字,调试显示,当close数组试图从一个尚未出现在重新计算开始的单元格中取值时,就会发生错误。

 
我想用开盘和收盘时间以及烛台长度创建一个二维数组,这将是非常有趣的。我想在这个例子 的基础上用高等数学创建一个EA,即三重积分。让我们假设x和y知道价格和时间,找到z--在这种情况下我知道。
 
另一个问题--如果这段代码设置了收盘价 将高于线的条件(让我们假设这个条件实际上是在程序开始之前),代码的工作是应该的,但如果我们添加一个相反的条件,即在代码开始之前不同的当前条件,调试后的数据将不正确。请告知为什么会发生这种情况?毕竟,这只是条件语句中的一个比较,为什么要对代码的性能产生任何不利的影响?
   for (int i = start; i < rates_total &&!IsStopped ();i++)
   {
    if(close[i] > Upper[i])
    Print("C ", close[i]);
    
例如:如果
if(close[i] < Upper[i])

调试结果如下。

数据正常进行,以与价格刷新相同的速度刷新。

但如果我们最初设定了这样的条件。

if(close[i] > Upper[i])

那么结果将是不正确的。

也就是说,收盘价的数值与当前价格不一致


我不明白为什么会发生这样的情况。

帖子中的基本代码块