'CopyTicks' 테스트 - 페이지 4

 
CopyTicks 

////////////////////////////////////////////////////////////////////////////////////////////////////////// 

MqlTick tick_array[];  

int OnInit()
  {
   int copied=CopyTicks(_Symbol,tick_array,COPY_TICKS_ALL,0,countHistoryTicks);
   if(Save_File!=NOT_SAVE)
     {
      SaveTicksToFile(tick_array);
     }
   return(INIT_SUCCEEDED);
  }



void SaveTicksToFile(MqlTick &massiveTicks[])

  {

   string filename,file_buffer;

   StringConcatenate(filename,Symbol(),".txt");

   int file_handle=FileOpen(filename,FILE_READ|FILE_WRITE|FILE_ANSI|FILE_SHARE_READ);

FileSeek(file_handle,0,SEEK_END);

   int sizeMassiveTicks=ArraySize(massiveTicks);

   int i=0;

   while(i<sizeMassiveTicks)

     {

      StringConcatenate(file_buffer,TimeToString(massiveTicks[i].time,TIME_DATE|TIME_SECONDS)," ",DoubleToString(massiveTicks[i].bid,_Digits)," ",DoubleToString(massiveTicks[i].ask,_Digits)," ",DoubleToString(massiveTicks[i].last,_Digits)," ",IntegerToString(massiveTicks[i].volume,_Digits)," ",IntegerToString(massiveTicks[i].time_msc)," ",IntegerToString(massiveTicks[i].flags,_Digits));

      FileWrite(file_handle,file_buffer);

      i++;

     }

   FileClose(file_handle);

  } 
 

SymbolInfoTick 

////////////////////////////////////////////////////////////////////////

int OnCalculate(const int rates_total,

                const int prev_calculated,

                const datetime &time[],

                const double &open[],

                const double &high[],

                const double &low[],

                const double &close[],

                const long &tick_volume[],

                const long &volume[],

                const int &spread[])

  {

   MqlTick last_tick;

   SymbolInfoTick(Symbol(),last_tick);



   TickStruct tick={0,0,0,0,0,0,0};

   tick.time=TimeCurrent();

   tick.bid=last_tick.bid;

   tick.ask=last_tick.ask;

   tick.flag=last_tick.flags;

   tick.last=last_tick.last;

   tick.time_msc=last_tick.time_msc;

   tick.volume=last_tick.volume;

   int total=ArraySize(g_ticks);

   if(ArrayResize(g_ticks,total+1,1000)<0)

     {

      Alert(": индикатору не хватает памяти для сохранения данных об очередном тике.");

     }

   else

     {

      g_ticks[total]=tick;

      UpTick[rates_total-1]=total;

     }

   if(total>999)

     {

      SaveTempTicks();

      ArrayFree(g_ticks);

     }

   return(rates_total);

  } 

 

 

void SaveTempTicks()

  {

// Создание файла тиковой истории

   int hTicksFile=FileOpen(Symbol()+"fullTicks.tks",FILE_BIN|FILE_READ|FILE_WRITE|FILE_SHARE_READ|FILE_SHARE_WRITE);

   if(hTicksFile<1)

      return;

   FileSeek(hTicksFile,0,SEEK_END);

// Запись файла 

   int total=ArraySize(g_ticks),i=0;

   while(i<total)

     {

      if(FileWriteStruct(hTicksFile,g_ticks[i])==0)

        {

         Print("Ошибка сохранения данных во временный файл...");

         return;

        }

  i++;

     }

FileClose(hTicksFile);

 }  
 
가능한 한 짧고 문제를 명확하게 보여주는 예를 만드십시오. 이상적으로는 모든 처리가 하나의 파일에서 이루어집니다.
 
 

디버거에서 값을 봅니다.

SymbolInfoTick (Symbol(),last_tick)을 통해 받은 last_tick,

CopyTicks(_Symbol,tick_array,COPY_TICKS_ALL,0,1)를 통한 tick_array;

모든 것이 실시간이고 틱은 동일하며 차이점은 플래그에 있습니다. 이러한 방식으로 볼륨의 차이를 포착하는 것은 불가능했으며 플래그의 차이만큼 일반적이지 않습니다.

적어도 그들을 정의합시다.

 
zimbabve15 :

디버거에서 값을 봅니다.

SymbolInfoTick(Symbol(),last_tick)을 통해 받은 last_tick,

CopyTicks(_Symbol,tick_array,COPY_TICKS_ALL,0,1)를 통한 tick_array;

모든 것이 실시간이고 틱은 동일하며 차이점은 플래그에 있습니다. 이러한 방식으로 볼륨의 차이를 포착하는 것은 불가능했으며 플래그의 차이만큼 일반적이지 않습니다.

적어도 그들을 정의합시다.

결정하려면 파일이 필요합니다. 예.
 

ED-3.16.txt - CopyTicks를 통한 브로커 열기

두 번째 파일은 SymbolInfoTick (Symbol(),last_tick)을 통해 동일한 브로커,

파일:
ED-3.16.txt  707 kb
 
두 번째 파일은 SymbolInfoTick (Symbol(),last_tick) 을 통한 동일한 브로커 이며,
파일:
 
*.txt 파일을 MetaEditor로 어떻게 구동할 수 있습니까? 문제가 있는 경우 가장 간단한 예를 하나의 파일로 만드십시오.
 
Karputov Vladimir :
*.txt 파일을 MetaEditor로 어떻게 구동할 수 있습니까? 문제가 있는 경우 가장 간단한 예를 하나의 파일로 만드십시오.
예, 전혀 문제가 되지 않습니다. 확장자를 변경하면 MetaEditor가 이를 먹습니다. 이 로그를 생성한 프로그램의 소스 코드 파일을 요청하는 것이 좋습니다.
 
Alexey Kozitsyn :
예, 전혀 문제가 되지 않습니다. 확장자를 변경하면 MetaEditor가 이를 먹습니다. 이 로그를 생성한 프로그램의 소스 코드 파일을 요청하는 것이 좋습니다.
그래서 저는 이미 두 페이지를 요청하고 있습니다. 가능한 한 가장 짧은 예제를 제공하십시오("예제"가 *.mq5 파일인 경우를 대비하여 지정합니다. 한 조각, 즉 한 개 ) 문제.
사유: