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

 
Igor Makanu:

专家顾问没有指标缓冲区,也不在终端绘制。

在帮助中阅读专家顾问与脚本和指标的区别是什么

谢谢你的答复。

你能告诉我如何实现这一功能吗?

 

你好!帮助将一个数组传入一个函数

有结构

struct pattern
  {
   double            x;
   datetime          y;
 };  

我声明了几个静态数组,像这样的结构

pattern last_pattern_up[NUMBER_OF_SYMBOLS][NUMBER_OF_PERIODS], last_pattern_dn[NUMBER_OF_SYMBOLS][NUMBER_OF_PERIODS];

现在,我想把一个静态数组传入一个函数中,但它给我一个错误- '[' - 需要数组

void MyFunction(pattern &array)
{
   Print(array[1][1].x," ",array[1][1].y);
   }

如何正确地将一个数组传入一个函数?

 
Tango_X:

你好!帮助将一个数组传入一个函数

有结构

我声明了几个静态数组,像这样的结构

现在,我想把一个静态数组传入一个函数,但它给我一个错误--'[' - 需要数组

如何正确地将一个数组传入一个函数?

void MyFunction(pattern &array[][NUMBER_OF_PERIODS])
 
Artyom Trishkin:

谢谢你!超级棒

 
Alexander Layzerevich:

谢谢你的答复。

你能告诉我如何实现这一功能吗?

只有通过iCustom()调用指标的专家顾问和单独的图表指标才有可能。

也就是说,如果你在图表上启动专家顾问并改变其设置(你传递给iCustom()的设置),该指标将不会在图表上做出反应。

由专家顾问调用的指标将在测试结束时显示在策略测试器中。 在可视化模式的测试中,你可以将指标 策略测试器的图表中....。

如果你想以不同的方式使用指标,你可以使用你自己选择的指标,但我不知道如何改变模板中的参数 ...也许有人已经做到了

 
Alexander Layzerevich:

谢谢你的答复。

你能告诉我如何实现这一功能吗?

绘制线条(OBJ_TREND)。

 
Alexander Layzerevich:

谢谢你的答复。

你能告诉我如何实现这一功能吗?

如果你根本不使用指标来画线,而只是用从指标转移到专家顾问的计算结果,那么只能用图形对象--趋势线。不过,它很贵。但我们可以限制图表上条形图的可见区域。

 

谢谢你的提示。

事实上,"指标 "也是这样做的。

即我有计算值,我需要用线连接它们。(OBJ_TREND)

 
Igor Makanu:

在修改订单时,至少需要改变一个参数,错误#1 - 如果在向服务器发送请求后,没有任何需要改变的地方

解除打印你发送到服务器的内容,你就会马上看到它。

尽管我添加了一个额外的条件来检查是否有止损或盈利,但错误仍然存在。

if(OrderMagicNumber() == id_number && (OrderStopLoss() == 0 || OrderTakeProfit() == 0))


也适用于尾随

if(OrderMagicNumber() == id_number && OrderStopLoss() != 0)
           {
            if(OrderType() == OP_BUY)
              {
               if(OrderComment() == "1" && Bid - OrderOpenPrice() >= a1 && OrderStopLoss() != OrderOpenPrice() + l1) {bol = OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+l1,OrderTakeProfit(),0,clrNONE);};
               if(OrderComment() == "2" && Bid - OrderOpenPrice() >= a2 && OrderStopLoss() != OrderOpenPrice() + l2) {bol = OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+l2,OrderTakeProfit(),0,clrNONE);};
              }
            else
              {
               if(OrderComment() == "1" && OrderOpenPrice() - Ask >= a1 && OrderStopLoss() != OrderOpenPrice() - l1) {bol = OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-l1,OrderTakeProfit(),0,clrNONE);};
               if(OrderComment() == "2" && OrderOpenPrice() - Ask >= a2 && OrderStopLoss() != OrderOpenPrice() - l2) {bol = OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-l2,OrderTakeProfit(),0,clrNONE);};
              };
           };
 
Alexandr Sokolov:

错误仍然存在,尽管我已经添加了一个额外的条件来检查止损或盈利的存在。

也适用于尾随

OrderStopLoss() != NormalizeDouble(OrderOpenPrice() - l1,_Digits)
原因: