[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 5. - 页 209

 
polycomp:
这些是函数,而对象是出现在图形上的矩形。

附加的文件:
 
polycomp:


附加的文件:
 
我们将不得不看,这需要时间。
 
polycomp:
重新初始化后,代码工作方式不同的可能原因之一是MT4中静态变量初始化的特殊性。在isNewBar()函数中,你使用这样的变量。在初级初始化期间,BarTime = 0。在进一步重新初始化时,这个变量将包含以前的值(不是0)。为了检查这个假设,让BarTime变量成为全局变量,并检查代码如何工作。
 
polycomp:
alsu

首先,在Print中打印一些库函数的内容,这样你就可以知道它们是否被完全调用了

图形对象是在库函数中创建的。在第一次调用指标后,对象被创建并显示在终端窗口。

当你再次调用它们时,它们并没有出现在对象列表中,这表明外部函数在重新计算指标时由于某种原因没有发挥作用,而终端对这个问题保持沉默。

好的。不使用间接符号,而是在指示器中打印(" 调用此函数");我们将立即看到此函数是否被调用。

你应该不那么傲慢,那么错误就会更快被发现)

 
polycomp:



一般来说,你的问题很可能出现在函数中

bool isNewBar()
{
  static datetime BarTime;  
   bool res=false;
    
   if (BarTime!=Time[0]) 
      {
         BarTime=Time[0];  
         res=true;
      } 
   return(res);
}

问题是,在重新初始化过程中,静态数据并没有被重置,所以当你重新启动时,你的BarTime总是等于上次计算的最后一个Bar的时间,也就是说,isNewBar()是假的,直到一个新的蜡烛 到来。最好是把这个函数从库中移到mqh inluder中,并在init()中明确将BarTime=0归零。

这只是对代码的初步了解,如果我错了,请不要太严厉地判断。

 
polycomp:



我将首先从你的库中删除这一行

#property library

由于你使用的不是一个库,而是一个包含文件

 
alsu:

在我印象中,当你设置挂单时,你必须特别记住这个时间。你可以直接在订单的注释中记住它(或在magik中,作为一个特殊的变态:)。
非常感谢你。
 

问题1.

如何对这个想法进行编码。

设置一个挂单,但只有当 挂单设置的价格与任何TF60蜡烛的开盘价一致时,才 将其 转换为市价 单。

问题2.

如何对这个想法进行编码。

如果一个挂单被转换为市价单,在10分钟内,我们应该设置另一个挂单,其数值 相同 开仓价 止损 价、成交量 与之前被转换为市价单的挂单相同。

谢谢你。

 
alsu:

好的。也许,我们不应该通过间接符号来判断,而应该直接输入指标本身:Print("调用这样那样的函数");我们马上就会看到它是否被调用。

你应该减少过度自信,那么错误就会更快地被发现)。

alsu

一般来说,你的问题很可能是在函数中

问题是,在重新初始化时,静态数据没有被清零,所以在重新启动时,BarTime总是等于上次计算的最后一个条形的时间,也就是说,isNewBar()将是假的,直到有新的蜡烛到来。最好是把这个函数从库中移到mqh inluder中,并在init()中明确将BarTime=0归零。

这只是对代码的初步了解,如果我错了,请不要太严厉地判断。


非常感谢您!

从库中删除了isNewBar(),放在指标文件中。一切都像钟表一样运作!