Testando 'CopyTicks'. - página 3

 

Eu não estou testando, estou lembrando os desenvolvedores. A prática mostra que nunca é supérfluo)).

Quanto à direção comercial - em Forts ela é sempre dada pela troca.

O algoritmo atualmente utilizado no terminal não é adequado para isso - você tem que tirar informações da troca.

 
Dmitriy Skub:

Eu não estou testando, estou lembrando os desenvolvedores. A prática mostra que nunca é supérfluo)).

Sobre a direção do negócio - nas fortalezas é sempre dada pela troca.

O algoritmo que agora é usado no terminal não é adequado para isso - devemos necessariamente tirar informações da troca.

Há apenas vários tópicos sobre copyticks (e mqltickinfo) que terminam com "espera".

Aqui está mais, por exemplo:

https://www.mql5.com/ru/forum/61607


Portanto, realmente, "esperando por". :-)

CopyTicks на медленном рынке
CopyTicks на медленном рынке
  • www.mql5.com
На нём видно, что после получения первых 10 тиков после запуска терминала, CopyTicks перестаёт работать:. - - Категория: автоматические торговые системы
 
Qual é a situação com CopyTicks() agora na construção 1210?
 
Михаил:
E agora, na construção de 1210, como está indo CopyTicks()?
Tudo está bem:História do carrapato
 
Михаил:
E agora, em 1210, como é com CopyTicks()?

Quase que funciona. Sem duplicatas. Os volumes não são perdidos.

Mas, falta a direção do comércio de bandeiras. O cálculo de licitação/procura não dá uma fidelidade adequada.

A estrutura real é antiga e difere do que é descrito na ajuda. Portanto, entendo que se trata de uma construção intermediária. Então, como sempre, estamos esperando pelo próximo))

 
Dmitriy Skub:

Está quase funcionando. Sem duplicatas. Os volumes não faltam.

Mas, falta a direção do comércio de bandeiras. O cálculo de licitação/procura não dá uma fidelidade adequada.

A estrutura real é antiga e difere da descrita na ajuda. Portanto, entendo que se trata de uma construção intermediária. Então, como sempre, estamos esperando pelo próximo))

Obrigado
 

Fórum sobre comércio, sistemas comerciais automatizados e estratégias comerciais de teste

MqlTick

zimbabve15, 2016.02.03 06:15

Broker "Opening" tool ED-3.16 left table - tick data is written by indicator in OnCalculate procedure via SymbolInfoTick request, right table - via CopyTicks. Estrutura de ambos: tempo, lance, pedido, flipper, volume, time_msec, bandeira.

Por que os mesmos carrapatos têm volumes e bandeiras diferentes?

Se recebermos dados brutos do corretor com bandeira zero através do SymbolInfoTick, então parece que o terminal processa o tick de entrada e atribui uma bandeira a ele com base na comparação com o tick anterior? O que fazer com os volumes? A diferença é significativa.


Fórum sobre comércio, sistemas automatizados de comércio e testes estratégicos

MqlTick

zimbabué15, 2016.02.03 06:39

FiboFroup corretor de carrapatos à esquerdavia SymbolInfoTick , tabela à direita via CopyTicks. Estrutura de ambos: tempo, licitação, pedido, greve, volume, tempo_msec, bandeira.

As bandeiras são diferentes, porque os valores de compra/venda nos mesmos carrapatos, escritos de maneiras diferentes.


 
zimbabve15:


É uma epidemia afixar "folhas" sem qualquer código?
 

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_SUCCEED);

}


SaveTicksToFile(MqlTick &massiveTicks[])

{

nome de arquivo string,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].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 taxas_total,

const int prev_calculado,

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 último_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)

{

Alerta(": o indicador não tem memória suficiente para salvar os dados do próximo tick;)

}

senão

{

g_ticks[total]=tick;

UpTick[rates_total-1]=total;

}

if(total>999)

{

SaveTempTicks();

ArrayFree(g_ticks);

}

retorno(taxas_total);

}

nulo SaveTempTicks()

{

// Criação do arquivo de histórico de carrapatos

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

if(hTicksFile<1)

retornar;

FileSeek(hTicksFile,0,SEEK_END);

// registro de arquivo

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

enquanto(i<total)

{

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

{

Imprimir("Salvar dados em um arquivo temporário falhou...");

retornar;

}

i++;

}

FileClose(hTicksFile);

}

 
Por favor, corrija sua postagem(Insira o código corretamente no fórum). Seria bom se você anexasse o arquivo em si (*.mq5), além do código em sua mensagem.
Razão: