任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 159

 
hoz:

有一个功能。这里是它的开端。

大意是这样的。函数的第二个形式参数的默认值为0。所以,根据文档,我可以在没有第二个参数的情况下调用这个函数,因为它将默认为0

我是这样称呼的。

编译员皱起了眉头。

为什么?

把它从库中移到做什么的代码中。如果错误消失了,这意味着在wha-tam-do代码中的正确库连接有问题。首先。

如果它没有消失--看看传递给函数的参数是什么。在想法中,应该有一个字符串类型 的参数,包含货币对的名称。只需通过Symbol()

 
artmedia70:

把它从库中移到wha-tam-do代码中。如果错误消失,说明在wha-tam-do代码中,库的正确连接有问题。首先。

如果它没有消失--看看传递给函数的参数是什么。在想法中,应该有一个字符串类型的参数,包含货币对的名称。只需传递Symbol()。



这真的很有帮助。我会考虑的。

这真是太奇怪了。如果参数的传递 是正确的,我为什么要在库中寻找?这个错误写得很清楚。还是没有什么特别的东西?我只是希望我知道需要什么。

这个功能是借来的,所以我把它和作者的联系方式一起发布。

//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|  Автор : TarasBY, taras_bulba@tut.by                                              |
//+-----------------------------------------------------------------------------------+
//|        Получаем торговую информацию по символу                                    |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
void fGet_MarketInfo (string fs_Symbol, int fi_Ticket = 0)
{
//----
         if (fs_Symbol != bs_Symbol || fi_Ticket < 0)
         {
                  if (fi_Ticket > 0)
                  {
                     bs_Symbol = OrderSymbol();
                  }
                  else
                  {
                     bs_Symbol = fs_Symbol;
                  }
                  if (bs_Symbol == Symbol())
                  {
                      bi_SymDigits = Digits;
                      bd_SymPoint = Point;
                  }
                  else
                  {
                      bi_SymDigits = MarketInfo (fs_Symbol, MODE_DIGITS);
                      bd_SymPoint = MarketInfo (fs_Symbol, MODE_POINT);
                  }
        if (bd_SymPoint == 0.0)
        {
           bd_SymPoint = fGet_Point (fs_Symbol);
        }
                  bd_ProfitMIN = NDP (ProfitMIN_Pips);
         }
         if (fi_Ticket > 0)
         {
            fGet_OrderDetails (fi_Ticket);
         }
    //---- Получаем текущие цены по инструменту
    RefreshRates();
    bda_Price[0] = NDD (fGet_TradePrice (0, bb_RealTrade, bs_Symbol));
    bda_Price[1] = NDD (fGet_TradePrice (1, bb_RealTrade, bs_Symbol));
    bd_Spread = NDD (bda_Price[1] - bda_Price[0]);
//----
}

我是这样导入的。

#import "hoz_Base@Library.ex4"
    double ND (double v);
    string DToS (double v);
    string DToSByLots (double v);
    void fGet_MarketInfo (string fs_Symbol, int fi_Ticket = 0);
#import

现在的电话是这样的。

fGet_MarketInfo (fs_Symbol);

你如何解决这样的问题?

 
hoz: 如何解决此类问题?

研究文件。编译库默认不传递参数--在调用函数时必须传递所有参数。 细阅读。摘录。

由于导入的函数在被编译的模块之外,编译器无法验证传递的参数是否正确。因此,必须准确描述传递给导入函数的参数的组成和顺序,以避免运行时的错误。传递给导入函数的参数(包括来自EX4和DLL模块的)不能有默认值。
 
TarasBY:

没有默认参数传递给编译库--你必须在调用函数时传递所有参数。 细阅读。摘录。

由于导入的函数在被编译的模块之外,编译器无法验证传递的参数是否正确。因此,必须准确描述传递给导入函数的参数的组成和顺序,以避免运行时的错误。传递给导入函数的参数(包括来自EX4和DLL模块的)不能有默认值。

啊,就是这样。活到老,学到老!谢谢你,我会记住的。
 

在MT4中运行优化时,我们需要在"优化结果"选项卡中收到类似于 "报告 "选项卡中单次生成的信息。

如何实现这一点?

 

我决定熟悉一下图书馆的情况。我从我的指标中提取了一部分代码,并把它放到了函数中,我把这个函数乘上,并把它粘贴到两个库文件中。

我把第一个命名为 "indi.mqh",第二个简单地命名为 "djo.mq4"。

int countbars(int& hist, int obrax, bool tikk)
{ 
 int z=0;
 static int PreBars=0; 
 static datetime BarTime=0;
 if (Bars == PreBars && tikk==false)return(-1);
 if (Bars < hist+obrax)  
 {
  if (Bars-obrax<=1) {Alert (" Недостатьньо історії");return(-1);}
  hist=Bars-obrax;
 }
 
 if (Bars-PreBars == 0 && BarTime==Time[0] && tikk==true) return(0);
 else  
 {
  if (Bars-PreBars == 1 && BarTime==Time[1]) z=1;
  else  z=hist;
 }
 PreBars = Bars;  
 BarTime=Time[0];
 return (z);
}

说到这里:当提到第一个时,一切都按计划进行。

 include <indi.mqh>

当用第二种方法取代第一种方法并通过一种方法访问第二种方法时。

#import "djo.ex4"  int countbars(int& hist, int obrax, bool tikk);  #import

但是根本没有任何作用,甚至是警报--启动后没有任何地方。而就在刚才,终端自己关闭了 ))

因为我猜想,每次访问导入的函数 时,所有的常量都会被重新初始化?

我在哪里可以读到关于mql4导入的细节,哪些bug被修复或者没有被修复等等?

谢谢,我去睡觉了............

 
ALXIMIKS:

我决定熟悉一下图书馆的情况。我从我的指标中提取了一部分代码,并把它放到了函数中,我把这个函数乘上,并把它粘贴到两个库文件中。

我把第一个命名为 "indi.mqh",第二个简单地命名为 "djo.mq4"。

说到这里:当提到第一个时,一切都按计划进行。

当用第二种方法取代第一种方法并通过一种方法访问第二种方法时。

但根本没有任何作用,甚至没有警报--启动后无处可去。而就在刚才,终端自己关闭了 ))

因为我猜想,每次访问导入的函数时,所有的常量都会被重新初始化?

我在哪里可以读到关于mql4导入的细节,哪些bug被修复或者没有被修复等等?

谢谢,我去睡觉了............

可以通过引用来传递参数。在这种情况下,对这些参数的修改将影响到以引用方式传递的被调用函数中的相应变量。你不能通过引用传递数组的元素。参数只能在单个模块的范围内以引用方式传递,这种机会不提供给库函数。为了指定参数是通过引用传递的,修饰符&必须放在数据类型的后面。而这里还有一些实验。
 
告诉我,当我越过两个滑动平均数时,我会得到一个声音信息。当打开时,这个声音信息会重复出现,就像历史上有多少次的穿越一样。问题。我怎样才能让它只对当前时间内产生的信号产生信息。也就是说,只有在当时,而且是在字面上收到的信号......
 
Zolotai:
告诉我,当我越过两个滑动平均数时,我会得到一个声音信息。当打开时,这个声音信息会重复出现,就像历史上有多少次的穿越一样。问题。我怎样才能让它只对当前时间内产生的信号产生信息。也就是说,只有在当时,而且是在字面上收到的信号......
在什么的开幕式上?这感觉就像一个指标。有许多解决方案。这一切都取决于代码。
 
artmedia70:
当打开什么?这感觉就像一个指标。有许多解决方案。这一切都取决于代码。


这与代码没有关系。我只是需要合适的条件。问题是我们是否能知道当前酒吧的时间。我怎么能完全知道酒吧的时间呢?