Yury Kirillov: Tente usar em seu Expert Advisor todas as formas possíveis de receber ticks e OnTick e CopyTicks, e depois compare os resultados e use o mais adequado.
E o que a OnTick() tem a ver com isso? Não se destina a receber todas as carrapatas, mas sim ao processamento do recebimento das mesmas. Você não precisa nem comparar nada aqui, OnTick() não será chamado a cada tick e não permitirá receber todos os dados da estrutura MqlTick.
O Service Desk ofereceu-se para experimentá-lo na nova construção, 1545. Mas o resultado não mudou, como antes, solicitando carrapatos das 10h às 11h para alguns papéis devolve zero arrays, e então os dados começam a vir das 11h por algum motivo. Talvez depois disso, os carrapatos já estejam "normais" quando se pergunta, mas não há relevância.
antru: Essa é praticamente a única mensagem que eles enviam. Já faz um bom tempo, a central de serviço não responde. Ignorar minhas mensagens é normal?
Sobre ignorar suas mensagens - você tem o ramo errado. Há uma linha separada sobre SD. Em geral, lembre-os, escrevendo um comentário sobre o pedido. Você anexou o código e outras evidências à DBO?
Alexey Kozitsyn: Sobre ignorar seus postos - você tem o tópico errado. Há uma linha separada sobre SD. Na verdade, lembre-os escrevendo um comentário sobre o pedido. Você anexou o código e outras evidências à DBO?
Sim, é claro, até explicou o código... silêncio... Obrigado pela dica, vou colocá-la em uma linha separada
Feito código de depuração para verificar o CopyTicksRange. Enquanto a mesa de serviço está permanentemente em silêncio, eu me perguntava se existe um erro no código. Meus olhos devem ter vidrado... Por favor, olhe com olhos frescos.
Abaixo está o código, anexe os resultados. Primeiro zip - início do Metatrader antes da negociação, o segundo zip - início às 22h30 EST (o tempo em arquivos de depuração foi 3 horas a menos).
Não entendo por que no primeiro zeep nenhum carrapato voltou em nenhum papel.
De modo algum. Pessoal, como obter a fita em tempo real? Talvez eu esteja reinventando a roda e fazendo algo errado, você pode me dar um código de exemplo sobre como obter carrapatos em papéis em tempo real?
Por alguma razão, os carrapatos do dia atual não são mais exibidos, tanto de acordo com o antigo algoritmo como com o novo... e independentemente de a fita estar ou não habilitada na janela...
aqui está o código onde inseri sua função...
//+------------------------------------------------------------------+//| Smelchak.mq5 |//| Pavel&Antru |//| |//+------------------------------------------------------------------+#property copyright"Pavel&Antru"#property link""#property version"1.00"bool g_bEnterInfoSent = false;
datetime g_dEndOfTheDay;
datetime g_dDayBegin;
long LastTime = 0; // time_msc-время последнего тика (самого свежего), полученного из историиint Count = 0; // Количество тиков в последенем запросе, у которых time_msc == LastTime// Возвращает свежие тики, пришедшие после предыдущего вызоваint GetFreshTicks( MqlTick &Ticks[], constuint flags = COPY_TICKS_TRADE, constuint count = 100000 )
{
int Res = 0;
MqlTick NewTicks[];
constint NewAmount = CopyTicks(Symbol(), NewTicks, flags, LastTime, count);
if ((NewAmount > 0) && (Count < NewAmount))
{
Res = ArrayCopy(Ticks, NewTicks, 0, Count);
// Взяли крайнее время из текущей истории
LastTime = NewTicks[NewAmount - 1].time_msc;
Count = 1;
// Находим (Count) в текущей истории количество тиков со временем LastTimefor (int i = NewAmount - 2; i >= 0; i--)
{
if (NewTicks[i].time_msc < LastTime)
break;
Count++;
}
}
return(Res);
}
//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+intOnInit()
{
EventSetTimer(3);
MqlDateTime startTime;
TimeGMT(startTime);
startTime.hour = 7;
startTime.min = 0;
startTime.sec = 0;
g_dDayBegin = StructToTime(startTime);
startTime.hour = 17;
startTime.min = 0;
startTime.sec = 0;
g_dEndOfTheDay = StructToTime(startTime);
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+voidOnDeinit(constint reason)
{
}
//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+voidOnTick()
{
}
//+------------------------------------------------------------------+voidOnTimer()
{
MqlDateTime mdt;
datetime dCurrent = TimeCurrent(mdt);
if (!g_bEnterInfoSent && mdt.hour + 3 == 9)
{
MqlDateTime startTime;
TimeGMT(startTime);
startTime.hour = 7;
startTime.min = 0;
startTime.sec = 0;
g_dDayBegin = StructToTime(startTime);
startTime.hour = 17;
startTime.min = 0;
startTime.sec = 0;
g_dEndOfTheDay = StructToTime(startTime);
g_bEnterInfoSent = true;
}
if (g_bEnterInfoSent && mdt.hour + 3 == 22)
{
g_bEnterInfoSent = false;
}
datetime lastTime = TimeCurrent();
if (true)
{
MqlTick tick[];
int nResult = GetFreshTicks(tick);
MqlDateTime tickTime;
if (ArraySize(tick))
{
TimeToStruct(tick[0].time, tickTime);
string sTicksFileName = StringFormat("%s.ticks.%.04d.%.02d.%.02d.csv", Symbol(), tickTime.year, tickTime.mon, tickTime.day);
int nTicksOutputFile = FileOpen(sTicksFileName, FILE_READ | FILE_WRITE | FILE_CSV, ',');
if (nTicksOutputFile == INVALID_HANDLE) nTicksOutputFile = FileOpen(sTicksFileName, FILE_WRITE | FILE_CSV, ',');
if (nTicksOutputFile != INVALID_HANDLE)
{
FileSeek(nTicksOutputFile, 0, SEEK_END);
MqlDateTime tickTime;
for (int i = 0; i<ArraySize(tick); i++)
{
TimeToStruct(tick[i].time, tickTime);
FileWrite(nTicksOutputFile, StringFormat("%.04d.%.02d.%.02d %.02d:%.02d:%.02d.000", tickTime.year, tickTime.mon, tickTime.day,
tickTime.hour, tickTime.min, tickTime.sec),
tick[i].bid,
tick[i].ask,
tick[i].last,
tick[i].volume,
((tick[i].flags & TICK_FLAG_BUY) ? "Buy" : "") +
((tick[i].flags & TICK_FLAG_SELL) ? "Sell" : ""));
}
FileClose(nTicksOutputFile);
}
g_dDayBegin = dCurrent;
}
}
}
Como resultado, eu o executei em dois papéis, ALRS e AFLT. Os carrapatos só voltaram para os dias anteriores. Nenhum por hoje. Qual poderia ser o problema?
Por alguma razão, os carrapatos do dia atual não são mais exibidos, tanto de acordo com o antigo algoritmo quanto com o novo... e independentemente de a fita estar ou não ligada na janela...
aqui está o código onde inseri sua função...
Como resultado, eu o executei em dois papéis, ALRS e AFLT. Os carrapatos só voltaram para os dias anteriores. Nenhum por hoje. O que poderia ser?
Há carrapatos nas janelas na fita, guardo 100.000 últimos carrapatos - sem carrapatos para hoje
Tente usar em seu Expert Advisor todas as formas possíveis de receber ticks e OnTick e CopyTicks, e depois compare os resultados e use o mais adequado.
Essa é praticamente a única mensagem que eles enviam. Já faz um bom tempo, a central de serviço não responde. Ignorar minhas mensagens é normal?
Sobre ignorar seus postos - você tem o tópico errado. Há uma linha separada sobre SD. Na verdade, lembre-os escrevendo um comentário sobre o pedido. Você anexou o código e outras evidências à DBO?
Sim, é claro, até explicou o código... silêncio... Obrigado pela dica, vou colocá-la em uma linha separada
Feito código de depuração para verificar o CopyTicksRange. Enquanto a mesa de serviço está permanentemente em silêncio, eu me perguntava se existe um erro no código. Meus olhos devem ter vidrado... Por favor, olhe com olhos frescos.
Abaixo está o código, anexe os resultados. Primeiro zip - início do Metatrader antes da negociação, o segundo zip - início às 22h30 EST (o tempo em arquivos de depuração foi 3 horas a menos).
Não entendo por que no primeiro zeep nenhum carrapato voltou em nenhum papel.
De modo algum. Pessoal, como obter a fita em tempo real? Talvez eu esteja reinventando a roda e fazendo algo errado, você pode me dar um código de exemplo sobre como obter carrapatos em papéis em tempo real?
Pessoal, como se obtém a ração em tempo real?
Fórum sobre comércio, sistemas automatizados de comércio e testes de estratégia comercial
Indicador de estoque misterioso
fxsaber, 2016.10.04 11:28
Por alguma razão, os carrapatos do dia atual não são mais exibidos, tanto de acordo com o antigo algoritmo como com o novo... e independentemente de a fita estar ou não habilitada na janela...
aqui está o código onde inseri sua função...
Como resultado, eu o executei em dois papéis, ALRS e AFLT. Os carrapatos só voltaram para os dias anteriores. Nenhum por hoje. Qual poderia ser o problema?
Por alguma razão, os carrapatos do dia atual não são mais exibidos, tanto de acordo com o antigo algoritmo quanto com o novo... e independentemente de a fita estar ou não ligada na janela...
aqui está o código onde inseri sua função...
Como resultado, eu o executei em dois papéis, ALRS e AFLT. Os carrapatos só voltaram para os dias anteriores. Nenhum por hoje. O que poderia ser?
Há carrapatos nas janelas na fita, guardo 100.000 últimos carrapatos - sem carrapatos para hoje