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

 

你好,你能给我一个提示吗?

寻找与历史上第一个条形图的高点相等的高点,我将找到的条形图的索引存储在变量High_i中。

我是这样走

 highr=High[i];
      High_i=0;
      for(j=i+3;j<=i+m;j++)
         {
         if(j>Bars-1) break;
         
         if(!ok1)
            {
            if(MathAbs(High[j]-highr)  <= n*Point)
               {
               
               High_i = j;


现在,我检查这三个柱子前后的高点是否应该低于第一个柱子的高点。

我需要把这个纳入循环。

if(High[High_i]>High[High_i-3]&&High[High_i]>High[High_i-2]&&High[High_i]>High[High_i-1]
   && High[High_i]>High[High_i+3]&&High[High_i]>High[High_i+2]&&High[High_i]>High[High_i+1])

一方面,我试图像这样检查它

 for(jl=High_i;jl<=High_i+3;jl++) 
    {
    // if (High_i!=0);
       
      if ( High[High_i]>High[jl])
          {
               cnt1++;
               if(cnt1>=3)
                  {
                  ok1=true;
                 BuyBuffer[i]=highr+5*Point;
                  }
               }
            }

请帮助。




	          
 
tatianati:
现在检查,前后三个小节的hai应该小于发现的小节的hai。

它可能是这样的。

bool Status_Successful = true;

for(int x=(High_i-3); x<=(High_i+3); x++) {
   if(x==High_i) {
      continue;
   }
   if(High[x]>=High[High_i]) {
      Status_Successful = false;
      break;
   }
}


if(Status_Successful==true) {
   ....
}
 
atztek:
可能是这样的。



谢谢你,这很有效

但在增加条数后,像这样。

for(int x=(High_i-7); x<=(High_i+7); x++)

出现了。

在'ta_v1_05.mq4'中数组超出范围(174,11)

第174行,这个

   if(High[x]>=High[High_i])

请告诉我如何解决这个问题。

 
你确定x是自然数还是0?如果high_i=例如6,那么x=-1,而high[-1]已经是个问题了。也许在第173行增加一个检查,如果(x<0)继续。
 
tatianati

danik:你确定x是自然数还是0?如果high_i=例如6,那么x=-1,而high[-1]已经是个问题了。也许在第173行增加一个检查,如果(x<0)继续。
对于三个酒吧,已经做了这样的 "检查"。
      for(j=i+3;j<=i+m;j++)

对于其他数值,你需要把它们全部改变。
你可以从这个开始,然后看看这是否解决了问题,或者是否有其他需要修复的地方。
 
你好,请告诉我,有一个关闭订单的功能,但由于某些原因,订单没有关闭,我不明白哪里出了问题。
void CloseOrders(int otype)
    {
      int ClosePrice;
      
      if (otype == OP_BUY) ClosePrice=Bid;
      if (otype == OP_SELL) ClosePrice=Ask;
    
       
      int total = OrdersTotal();
      for(int i = total-1; i >= 0; i--)
      {    
         if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
         { 
           if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == otype)
           OrderClose(OrderTicket(),OrderLots(),ClosePrice,Slippage,Yellow);
         }
      }
 
lufer:
你好,请告诉我,有一个关闭订单的功能,但由于某些原因,订单没有关闭,我不知道哪里出了问题。

价格不能太高!

int ClosePrice;
 
TarasBY:

价格不能太高!

哦,对了!!!。谢谢你!!!。
 
帮助我找到代码中的一个错误,它似乎在根据ZeroLag MACD指标数据为EUR/USD和GBP/USD画两条线,但什么也没有发生。以下是代码
#property indicator_separate_window
#property indicator_buffers 2
#property  indicator_color1 Red
#property  indicator_color2 DarkBlue
#property  indicator_width1 1
#property  indicator_width2 1
//+------------------------------------------------------------------+

extern string ExtParam1="EURUSD";
extern string ExtParam2="GBPUSD";
extern int FastEMA=12;
extern int SlowEMA=24;
extern int SignalEMA=9;

//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
//+------------------------------------------------------------------+
int init()
{
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,ExtMapBuffer1);
SetIndexLabel(0,ExtParam1); 

SetIndexStyle(1,DRAW_LINE);
SetIndexBuffer(1,ExtMapBuffer2);
SetIndexLabel(1,ExtParam2); 
//----
return(0);
}
//+------------------------------------------------------------------+
int start()
{
int counted_bars = IndicatorCounted();
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars --; 
int limit=Bars-IndicatorCounted();
int bar;
for(bar=0; bar<limit; bar++)
ExtMapBuffer1[bar]=iCustom(ExtParam1,Period(),"ZeroLag MACD",FastEMA,SlowEMA,SignalEMA,iBarShift(ExtParam1,0,Time[bar],false));
ExtMapBuffer2[bar]=iCustom(ExtParam2,Period(),"ZeroLag MACD",FastEMA,SlowEMA,SignalEMA,iBarShift(ExtParam2,0,Time[bar],false));
return(0);
}  
 
ASZmyrov:
请帮助我找到代码中的一个错误,似乎ZeroLag MACD应该用EUR/USD和GBPUSD指标的数据画两条线,但什么也没有发生。以下是代码

有传言说IndicatorCounted()不起作用,另外指标的重新计算从过去算到现在比较正确,代码中还有一些错误。

P.S. ZeroLag MACD本身也应该为新的虚拟机 进行 "调整"。

附加的文件: