[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要路过。没有你就无处可去 - 3. - 页 479

 
costy_:

在不知道NumTimeFrames TimeFrames[i]是空的还是什么的 情况下,你怎么回答呢

写得更充分一些,如何,或者说,如果没有什么,要仔细阅读什么。写下完整的代码,否则你很可能会 "啃下科学的花岗岩",,,,)) if(true)continue; else return("Sleep("+7*1000*60*60+")")。

你说对了。


int TimeFrames[]={5,15,30,60}; 
int NumTimeFrames=ArraySize(TimeFrames);
int total_bars[]; ArrayResize(total_bars,NumTimeFrames);
string instrument = Symbol();

// пробегаем по задданым периодам
for(i=0; i<NumTimeFrames; i++)
  {
    // пробегаем по всем барам выбранного периода, ЕСЛИ на нем появились новые бары 
    if(total_bars[i]!=iBars(instrument,TimeFrames[i]))
     {


        // тут вычисления индиктора

        total_bars[i]=iBars(instrument,TimeFrames[i]); // запоминаем число баров на данном периоде
     }


基本上,按照我的理解,我们可以跳过检查新条 的出现。

实际上,这可以简化为一个简单的问题:"MT在什么指令下,在什么时刻下载经纪公司的报价?

 
palladin:

你能举出你用来测试你的声明的代码吗?


//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
   Print(iBars(Symbol(), PERIOD_D1));
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
Reshetov:

因为我以为你没有理解这个问题。

试试这个。


int start()
  {
//----
   Print(iBars(Symbol(), PERIOD_M1));
//----
   return(0);
  }
//+------------------------------------------------------------------+


Запустите на периоде М5 и подождите минуту, в логе вы обнаружите, что с каждой минутой отображается одно и то же число! Хотя оно, очевидно, должно увеличиваться с каждой минутой)

 
palladin:

因为我以为你没有理解这个问题。

试试这个。



Запустите на периоде М5 и подождите минуту, в логе вы обнаружите, что с каждой минутой отображается одно и то же число! Хотя оно, очевидно, должно увеличиваться с каждой минутой)



你显示的是什么数字?

这个iBars条的时间是什么?

有一个关于M1的故事吗?
 

Reshetov ,sergeev ,costy_

谢谢


我重新检查了一下,看来它毕竟是有效的,而我的假设是错误的。

iBars似乎真的能正常工作,甚至在当前的图形上也不能。


 
for(i=0;i<=OrdersTotal();i++)
    {
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == false) break;
    if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
      {
      if(OrderType() == OP_BUYSTOP)
        {
        if(OrderOpenPrice() > priceBuy)
          {
          priceBuy = OrderOpenPrice();
          }
        }
      }
    } 
  if(TakePrices1 == false)
    {  
    bTakeProfit = priceBuy + (10*2)*Point;
    TakePrices1 = true;
    }
这块选择最高的买单,在其价格上增加20点,并将止盈移至该水平。但实际上不是20个点,是13个点。为什么是13,不是10,不是30,而是13? 这个数字是怎么来的?
 
sss2019:
这块选择最高的买单,在其价格上增加20点,并将止盈移至该水平。但事实上不是20个点,是13个点。为什么是13,不是10,不是30,而是13? 这个数字是怎么来的?


20-Spred

以买入价开盘,以卖出价收盘

 
Vinin:


20-Spred

以买入价开盘,以卖出价收盘


没有,止盈还没有触发。这段代码找到最高的待定买单,并从其开盘价中减去20点。利润只是被转移到20点以上。这里似乎不应该考虑差价,而且,差价固定在2分,而我们缺少7分。
 
我不明白问题出在哪里。似乎当我打印这些数值时,价格处于正确的水平,但当我把这个数值放入订单时,其止盈 仍然只移动了13点。
 

追踪报道