График тиковых свечей не обновляет количество баров.

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
jaffer wilson
2502
jaffer wilson  

Я попробовал следующий код:

#include "Symbol.mqh" 
#include <TradeAlgorithms.mqh> CIsNewBar newbar;
long id_;
const SYMBOL SYMB(_Symbol+"Tick_exp1234");
int OnInit()
  {
   if(SYMB.IsExist()) // If Created
     {
      SYMB.CloneProperties(); 
      MqlRates Rates[],ReplaceRates[];
      MqlTick Ticks[],ReplaceTicks[];

      int rates_total=candles;
      int Initiate=CopyRates(_Symbol,PERIOD_M1,0,rates_total,Rates)-1;
      int vv=CopyTicksRange(_Symbol,Ticks,COPY_TICKS_ALL,ulong(Rates[0].time)*1000,ulong(Rates[Initiate].time)*1000);
      Print("vv1 ==> ",vv);
      ArrayResize(ReplaceRates,vv-1);ArrayResize(ReplaceTicks,vv-1);
      for(int ii=0; ii<vv-1 && !IsStopped(); ii++)
        {
         ReplaceTicks[ii].time=Ticks[ii].time;
         ReplaceTicks[ii].bid=Ticks[ii].bid;
         ReplaceTicks[ii].ask=Ticks[ii].ask;
         ReplaceTicks[ii].last=Ticks[ii+1].bid;
         ReplaceTicks[ii].volume=Ticks[ii].volume;
         ReplaceTicks[ii].time_msc=Ticks[ii].time_msc;
         ReplaceTicks[ii].flags=TICK_FLAG_BID;
         ReplaceTicks[ii].volume_real=Ticks[ii].volume_real;

         ReplaceRates[ii].time=Ticks[ii].time;//datetime(Ticks[ii].time_msc);//Ticks[ii].time;
         ReplaceRates[ii].open = Ticks[ii].bid;
         ReplaceRates[ii].close= Ticks[ii+1].bid;
         if(Ticks[ii].bid>Ticks[ii+1].bid) {ReplaceRates[ii].high=Ticks[ii].bid;ReplaceRates[ii].low=Ticks[ii+1].bid;}
         else {ReplaceRates[ii].high=Ticks[ii+1].bid;ReplaceRates[ii].low=Ticks[ii].bid;}
         ReplaceRates[ii].tick_volume = long(Ticks[ii].volume);
         ReplaceRates[ii].real_volume = long(Ticks[ii].volume_real);
         ReplaceRates[ii].spread=int(fabs(Ticks[ii].bid-Ticks[ii+1].bid)*100000);

        }
      Print(SYMB.CloneTicks(ReplaceTicks),"  ",GetLastError());
      Print(SYMB.CloneRates(ReplaceRates),"  ",GetLastError());
      

      if(SYMB.On()) 
        {
         id_=ChartOpen(SYMB.Name,PERIOD_CURRENT);
         ChartSetInteger(id_,CHART_AUTOSCROLL,1);
         ChartSetInteger(id_,CHART_MODE,2);
         ChartSetInteger(id_,CHART_COLOR_CHART_LINE,clrYellow);
         ChartSetInteger(id_,CHART_SHIFT,0,ChartGetInteger(ChartID(),CHART_SHIFT));
        }
      Print("Количество баров:==> ",Bars(SYMB.Name,_Period));
     }
   return(INIT_SUCCEEDED);
  }


Выход:


Количество циклов: 6864

Количество свечей должно быть: 6863

Ставки заменены правильно, но количество свечей говорит на 50% меньше. Как видите 3522.

Пожалуйста, дайте мне знать, что я могу сделать, чтобы подсчет свечей = 6863?

Файлы:
jaffer wilson
2502
jaffer wilson  
Может кто-нибудь, пожалуйста, помогите мне? Я хочу знать, делаю ли я что-то не так. Я пытаюсь создать свечи на основе тиков. Пожалуйста, дайте мне знать.
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий