Testen von 'CopyTicks' - Seite 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);

 }  
 
Erstellen Sie ein möglichst kurzes Beispiel, das das Problem deutlich macht. Im Idealfall erfolgt die gesamte Verarbeitung in einer Datei.
 
 

Im Debugger schaue ich mir die Werte an:

last_tick erhalten überSymbolInfoTick(Symbol(),last_tick),

tick_array über CopyTicks(_Symbol,tick_array,COPY_TICKS_ALL,0,1);

Alles in Echtzeit, die Ticks sind gleich, die Flaggen sind unterschiedlich. Ich habe es nicht geschafft, den Unterschied in der Lautstärke auf diese Weise zu erfassen, er ist nicht so häufig wie der Unterschied in den Flaggen.

Wir sollten sie zumindest definieren.

 
zimbabve15:

Im Debugger schaue ich mir die Werte an:

last_tick erhalten über SymbolInfoTick(Symbol(),last_tick),

tick_array über CopyTicks(_Symbol,tick_array,COPY_TICKS_ALL,0,1);

Alles in Echtzeit, die Ticks sind gleich, die Flaggen sind unterschiedlich. Ich habe es nicht geschafft, den Unterschied in der Lautstärke auf diese Weise zu erfassen, er ist nicht so häufig wie der Unterschied in den Flaggen.

Wir sollten sie zumindest definieren.

Um sie zu definieren, benötigen wir eine Beispieldatei.
 

ED-3.16.txt - Makleröffnung über CopyTicks

Zweite Datei gleicher Broker überSymbolInfoTick(Symbol(),last_tick),

Dateien:
ED-3.16.txt  707 kb
 
zweite Datei desselben Brokers überSymbolInfoTick(Symbol(),last_tick),
Dateien:
 
Wie werde ich in der Lage sein, *.txt-Dateien in MetaEditor zu laden? Wenn es ein Problem gibt, machen Sie das Beispiel so einfach wie möglich - eine Datei.
 
Karputov Vladimir:
Wie werde ich in der Lage sein, *.txt-Dateien in MetaEditor zu laden? Wenn es ein Problem gibt, machen Sie das Beispiel so einfach wie möglich - eine Datei.
Eigentlich ist es kein Problem, ändern Sie die Erweiterung und MetaEditor wird es essen. Fragen Sie lieber nach den Quellcodedateien des Programms, durch das dieses Protokoll erhalten wird.
 
Alexey Kozitsyn:
Kein Problem, ändern Sie die Erweiterung und MetaEditor wird sie übernehmen. Fragen Sie lieber nach den Quellcode-Dateien des Programms, das dieses Protokoll erzeugt hat.
Ich habe also bereits um zwei Seiten gebeten: Geben Sie das kürzeste Beispiel (ich stelle klar, nur für den Fall, dass "Beispiel" ist *.mq5-Datei in der Anzahl von einem Stück - das ist nur eine), die das Problem zeigt.