前一个打钩的价值 - 页 3

 
PreviousTick = CurrentTick;

CurrentTick =   Bid;

if ( CurrentTick < PreviousTick )

       {

difference = PreviousTick - Bid;

TotalDescent = TotalDescent + difference;

descentarray[0]=TotalDescent;

       }


这段代码使MT4图表崩溃。它有什么问题?

差异,TotalDescent被声明为双数,起始值为0。Descentarray被声明为1d数组,没有最大数量的项目。有一个if语句来过滤掉previousTick=0的情况,TotalAscent的对应部分工作正常。

它一直运行到第一个递减刻度,然后就崩溃了,我是不是错过了什么?

 

请使用</>按钮来插入你的代码。


 
J.P.Satrio:


这段代码使MT4图表崩溃。它有什么问题?

差异,TotalDescent被声明为双数,起始值为0。Descentarray被声明为1d数组,没有最大数量的项目。有一个if语句来过滤掉previousTick=0的情况,TotalAscent的对应部分工作正常。

它一直运行到第一个递减刻度,然后就崩溃了,我是不是错过了什么?

你的数组有大小吗?

 
Keith Watford:

你对阵列的大小进行了调整吗?

没有,因为我不确定什么尺寸是必要的。正如我所说的,在没有设置固定大小的情况下,升力方面的阵列工作得很好。
 
J.P.Satrio:
不,因为我不确定什么尺寸是必要的。正如我所说的,在没有固定大小设置的情况下,升力方面的数组工作得很好。

你必须确定数组的大小。如果你不确定需要的大小,每次你想给它一个额外的元素,就把大小增加一个。

 
Keith Watford:

你必须确定数组的大小。如果你不确定所需的大小,每次你想给它一个额外的元素时,就把大小增加一个。

我一定会试一试的,谢谢。然而,我看到很多情况下,编码员没有为数组设置大小。我还是不知道为什么这种情况会不同。
如果我必须检查是否有必要在每次打勾 时增加和调整我的数组大小,这将使它变得更加复杂,所以我想我会设置一个足够大的尺寸来管理数据量。如果数组满了会怎样?(从未发生在我身上)再次崩溃?
 
J.P.Satrio:
我一定会试一试的,谢谢。然而,我看到很多情况下,编码者没有为数组设置大小。我还是不清楚为什么这种情况会不同。
如果我不得不检查是否有必要在每一次打勾 时增加和调整数组的大小,这将使它变得更加复杂,所以我想我会设置一个足够大的大小来管理数据量。如果数组满了会怎样?(从未发生在我身上)再次崩溃?

我不认为你会看到一个数组没有大小的情况。如果你试图在一个不存在的元素中放一个值,代码就会崩溃。

 
Keith Watford:

我不认为你会看到一个数组没有大小的情况。如果你试图在一个不存在的元素中放一个值,代码就会崩溃。

这样就好了。谢谢!
 

这个主题帮助我开发了代码,可以告诉我前一个Ask和当前Ask之间的差异。如果差值为零,则打印出0.0,但如果差值不是零,则有太多的数字,如1.000000000006551e-05。我的代码有什么问题吗,或者有什么方法可以纠正这个问题?符号是EURUSD,如果这很重要的话。这是我的第一段mql代码,所以对不足之处提前表示歉意。谢谢!

/* Global Variables */
double ask_prev;
double ask_curr;
double ask_diff;
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---

   MqlTick tick_curr;
//---
   if(SymbolInfoTick(Symbol(),tick_curr))
     {
      ask_curr = tick_curr.ask;
      ask_diff = ask_curr - ask_prev;
      Print(ask_diff);
      ask_prev = tick_curr.ask;
     }
   else Print("SymbolInfoTick() failed, error = ",GetLastError());
  }
//+------------------------------------------------------------------+
 
rdone:

这个主题帮助我开发了代码,可以告诉我前一个Ask和当前Ask之间的差异。如果差值为零,则打印出0.0,但如果差值不是零,则有太多的数字,如1.000000000006551e-05。我的代码有什么问题吗,或者有什么方法可以纠正这个问题?符号是EURUSD,如果这很重要的话。这是我的第一段mql代码,所以对不足之处提前表示歉意。谢谢!

为什么不直接...

MqlTick tick_curr, tick_last;

void OnTick()
{
   tick_last = tick_curr;
   SymbolInfoTick(Symbol(),tick_curr);
}