OrderSend()函数中的一个错误? - 页 5

 
Sepulca:

静态的效果是100%。这里有一个测试。

而结果是。


嗯,它对我来说就像以前一样有效......没有变化!我甚至有打开一个新酒吧 的功能。

bool isNewBar()
   {
      static datetime lastBar;                                   // Задаём переменную для времени открытия последнего бара
      datetime currBar;                                                  // Задаём переменную для времени открытия текущего бара
      currBar = iTime(Symbol(),PERIOD_M1,0);          // Находим время открытия текущего бара
      if(lastBar!=currBar)                                               // Если время открытия последнего бара не равно времени открытия текущего бара, то...
         {
            lastBar=currBar;
            return(true);
         }
      return(false);
   }

这也能正常工作。这就是为什么我的代码被毫无理由地挑剔。而这个问题一般来说是正确的。 显然,测试仪出现了故障,所以读数都是错误的。M5 上,它在某种程度上是比较干净的,在M15 上,H1 也已经很像了。

 
hoz:


嗯,它的工作方式和以前一样......没有变化!我甚至还有一个新的开栏功能。

这也能正常工作。这就是为什么我的代码被毫无理由地批评。但这个问题在总体上是正确的。 显然,测试仪出现了故障,读数有偏差。M5 上,它在某种程度上更清晰,而在M15 上,H1 已经很糟糕了。


我建议马上写if(lastBar<currBar),尽管它几乎不会改变什么。我将进一步浏览你的帖子,也许我还会说些什么。
 
hoz:


嗯,它的工作方式和以前一样......没有变化!我甚至有一个新的开栏功能。

这也能正常工作。这就是为什么我的代码被无端批评的原因。但这个问题在总体上是正确的。 显然,测试仪出现了故障,读数有偏差。M5 上,它在某种程度上是比较干净的,在M15 上,H1 也已经很糟糕了。



它可能会有帮助。你的start()函数有点重做了。没有深入了解,但仍然是这样。

int start()
{
   fastMa = iMA(NULL,i_TF,i_fastMaPeriod,0,MODE_EMA,MODE_CLOSE,1);
   slowMa = iMA(NULL,i_TF,i_slowMaPeriod,0,MODE_EMA,MODE_CLOSE,1);
   
 /*  Print("Bid = ", Bid);
   Print("Ask = ", Ask);
   Print("fastMa = ", fastMa);
   Print("i_thresholdFromMa * pt = ", i_thresholdFromMa * pt);
   */
// Отслеживание открытия нового бара
   static datetime lastBarTime = iTime(NULL, 0, 1));    // Время проведения последних рассчётов, изначально принимаем предыдущий бар
   
   if (lastBarTime < iTime(NULL, 0, 0))         // Если случился новый бар
 // Рассчёт сигнала 
    {
     if("На этом баре случилось что-то, что вынуждает ждать следуещего бара")
      {
       ..........// Выполняем действия открытия/закрытия или что-то там ещё...
       lastBarTime = iTime(NULL, 0, 0);              // На текущем баре все необходимые действия выполнены, ждём следуещего бара..
      }
     else
      {
       "Ничего не случилось, ждем до следуещего тика"
      }
    }
                                       // .. успешно выполнены
  return (0);
}
 
Sepulca:



这可能会有帮助。你的start()函数有点重做了。没有深入了解,但仍然是这样。


那么这里的计算时间是从上一个条形图中提取的。这似乎不符合逻辑。我们需要现在的酒吧。
 
PapaYozh:

就个人而言,我从来没有遇到过不工作的statik。

这里有一个专家的例子,如果你想在图表上检查的话。

1.启动专家顾问。

2.更改TF。

3.确保cc不会再次变成20。

 
hoz:


嗯,它的工作方式和以前一样......没有变化!我甚至有一个新的开栏功能。

这也能正常工作。这就是为什么我的代码被毫无理由地批评。但这个问题在总体上是正确的。 显然,测试仪出现了故障,读数有偏差。M5 上,它在某种程度上是比较干净的,在M15 上,H1 也已经很糟糕了。

就你的情况而言。

时间被初始化了一次--当你启动EA时,它不会再被初始化,所以当你从M1切换到D1时,你将不得不等待大约一天来刷新图表 :(

 
tara:

适用于你的情况。

时间被初始化了一次--当你启动EA时,它不会再被初始化,所以当你从M1切换到D1时,你将不得不等待大约一天时间来刷新图表 :(



专家顾问在一个特定的TF上工作。我为什么要换掉它呢?
 
tara:

3.确保cc没有再次变成20。

这是EA的一个有记录的特征。
 
TheXpert:
这是EA的一个有记录的特征。


那么 "静态 "是什么?这更像是一个Fatalic...


顺便问一下,它在哪里有记载?

 
hoz:

专家顾问在一个特定的TF上工作。我为什么会突然需要换掉它呢?

你可以只改变一些参数。反应将只在设定的TF上的新条形 的第一个刻度后发生。

但你自己也想知道为什么专家顾问在较高的TF上无法解释:)