Não há como obter a história de forma alguma. Eu tentei isso:
int copied = CopyTicksRange( _Symbol, ticks, COPY_TICKS_TRADE );
Eu tentei isso:
int copied = CopyTicksRange( _Symbol, ticks, COPY_TICKS_TRADE, 0, inpStartTime*1000 );
Tentei isto:
int copied = CopyTicksRange( _Symbol, ticks, COPY_TICKS_TRADE, inpStartTime*1000 );
Tentei isto:
int copied = CopyTicksRange( _Symbol, ticks, COPY_TICKS_TRADE, inpStartTime*1000, (inpStartTime+72000)*1000 );
A resposta é sempre a mesma:
2016.11.30 21:36:45.965 UseCopyTicks: Получено 288181 тиков за 93009 мкс
2016.11.30 21:36:47.908 UseCopyTicksRange: ОШИБКА #4401 (Запрашиваемая история не найдена). Тики не получены!
2016.11.30 21:36:48.011 UseCopyTicks: Получено 288186 тиков за 102971 мкс
2016.11.30 21:36:49.992 UseCopyTicksRange: ОШИБКА #4401 (Запрашиваемая история не найдена). Тики не получены!
2016.11.30 21:36:50.090 UseCopyTicks: Получено 288189 тиков за 98423 мкс
Experimentei-o em VTBR-12.16, BR-12.16, RTS-12.16 futuros. Experimentei-o em COPY_TICKS_ALL ticks - o mesmo resultado. Prezados desenvolvedores, vocês estão correndo com os usuários? Ou você está simplesmente entediado com os testes de seus desenvolvimentos antes do lançamento?
Não há como obter a história de forma alguma. Eu tentei isso:
int copied = CopyTicksRange( _Symbol, ticks, COPY_TICKS_TRADE );
Eu tentei isso:
int copied = CopyTicksRange( _Symbol, ticks, COPY_TICKS_TRADE, 0, inpStartTime*1000 );
Tentei isto:
int copied = CopyTicksRange( _Symbol, ticks, COPY_TICKS_TRADE, inpStartTime*1000 );
Tentei isto:
int copied = CopyTicksRange( _Symbol, ticks, COPY_TICKS_TRADE, inpStartTime*1000, (inpStartTime+72000)*1000 );
A resposta é sempre a mesma:
2016.11.30 21:36:45.965 UseCopyTicks: Получено 288181 тиков за 93009 мкс
2016.11.30 21:36:47.908 UseCopyTicksRange: ОШИБКА #4401 (Запрашиваемая история не найдена). Тики не получены!
2016.11.30 21:36:48.011 UseCopyTicks: Получено 288186 тиков за 102971 мкс
2016.11.30 21:36:49.992 UseCopyTicksRange: ОШИБКА #4401 (Запрашиваемая история не найдена). Тики не получены!
2016.11.30 21:36:50.090 UseCopyTicks: Получено 288189 тиков за 98423 мкс
Experimentei-o em VTBR-12.16, BR-12.16, RTS-12.16 futuros. Experimentei-o em COPY_TICKS_ALL ticks - o mesmo resultado. Prezados desenvolvedores, vocês estão correndo com os usuários? Ou você está simplesmente entediado com os testes de seus desenvolvimentos antes do lançamento?
Demotivador É a 100ª modificação e ainda não funciona...
http://demotivatorium.ru/sstorage/3/2012/03/2703120956251657.jpgNão há como obter a história de forma alguma. Eu tentei isso:
int copied = CopyTicksRange( _Symbol, ticks, COPY_TICKS_TRADE );
Eu tentei isso:
int copied = CopyTicksRange( _Symbol, ticks, COPY_TICKS_TRADE, 0, inpStartTime*1000 );
Tentei isto:
int copied = CopyTicksRange( _Symbol, ticks, COPY_TICKS_TRADE, inpStartTime*1000 );
Tentei isto:
int copied = CopyTicksRange( _Symbol, ticks, COPY_TICKS_TRADE, inpStartTime*1000, (inpStartTime+72000)*1000 );
A resposta é sempre a mesma:
2016.11.30 21:36:45.965 UseCopyTicks: Получено 288181 тиков за 93009 мкс
2016.11.30 21:36:47.908 UseCopyTicksRange: ОШИБКА #4401 (Запрашиваемая история не найдена). Тики не получены!
2016.11.30 21:36:48.011 UseCopyTicks: Получено 288186 тиков за 102971 мкс
2016.11.30 21:36:49.992 UseCopyTicksRange: ОШИБКА #4401 (Запрашиваемая история не найдена). Тики не получены!
2016.11.30 21:36:50.090 UseCopyTicks: Получено 288189 тиков за 98423 мкс
Experimentei-o em VTBR-12.16, BR-12.16, RTS-12.16 futuros. Experimentei-o em COPY_TICKS_ALL ticks - o mesmo resultado. Prezados desenvolvedores, vocês estão correndo com os usuários? Ou você está simplesmente entediado com os testes de seus desenvolvimentos antes do lançamento?
Aquele que não trabalha, come estudante
Aprender estudante
http://rusdemotivator.ru/uploads/posts/2013-03/1362153136_s01bb56czdsk.jpg
Aprender estudante
http://rusdemotivator.ru/uploads/posts/2013-03/1362153136_s01bb56czdsk.jpg
Acho que é apenas um bug na documentação da Web, ainda está realmente em branco em ME. Ou a função ainda está em desenvolvimento. Segundo, você está solicitando dados de algum lugar de 1970 e se pergunta por que os carrapatos do século passado não estão dando de volta )!!!! O que você está fumando lá?
É assim que funciona.
{
datetime dt1 = D'2016.11.28 00:00:00', dt2 = D'2016.11.30 00:00:00';
MqlTick ticks[];
ulong start, msc;
//--- Замеряем время старта перед получением тиков
start=GetMicrosecondCount();
int copied = CopyTicksRange( _Symbol, ticks, COPY_TICKS_ALL, dt1*1000, dt2*1000);
//--- Рассчитаем, за сколько мс получена история
msc=GetMicrosecondCount()-start;
Print("copied=", copied, " msc=", msc);
return;
}
// вывод
2016.12.01 04:52:08.134 TestCopyTicks (EURUSD.m,M15) copied=333081 msc=1294871
2016.12.01 04:52:16.877 TestCopyTicks (EURUSD.m,M15) copied=333081 msc=318596
***
Acho que é apenas um bug na documentação da Web, na verdade ainda não está em ME. Ou a função ainda está em desenvolvimento. Segundo, você está solicitando dados de algum lugar de 1970 e se pergunta por que os carrapatos do século passado não estão dando de volta )!!!! O que você está fumando lá?
É assim que funciona.
{
datetime dt1 = D'2016.11.28 00:00:00', dt2 = D'2016.11.30 00:00:00';
MqlTick ticks[];
ulong start, msc;
//--- Замеряем время старта перед получением тиков
start=GetMicrosecondCount();
int copied = CopyTicksRange( _Symbol, ticks, COPY_TICKS_ALL, dt1*1000, dt2*1000);
//--- Рассчитаем, за сколько мс получена история
msc=GetMicrosecondCount()-start;
Print("copied=", copied, " msc=", msc);
return;
}
// вывод
2016.12.01 04:52:08.134 TestCopyTicks (EURUSD.m,M15) copied=333081 msc=1294871
2016.12.01 04:52:16.877 TestCopyTicks (EURUSD.m,M15) copied=333081 msc=318596
***
Alexey, obrigado por se envolver nos testes. Como você pode ver, eu tentei tanto de uma data específica como para uma data específica e sem data. Mas a questão é: 1. eu usei __DATE__ e parece haver problemas com substituições de macros; 2. eu testei em futuros; Sim, se você olhar a documentação - deveria pelo menos ter começado a carregar carrapatos. No entanto - nada acontece.
Você tentou executar meu indicador em seu ambiente?
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Continuando a lutar para melhorar: carrapatos, acesso a carrapatos e sincronização de carrapatos. @Slawa, @Renat Fatkhullin e pessoas responsáveis por carrapatos, por favor, juntem-se à discussão. Acho que vamos encontrar mais de um erro. Além disso, acho que será interessante para @fxsaber, @coderex e outros usuários de carrapatos.
Vamos começar:
1. Não há uma palavra sobre a nova função CopyTicksRange() na documentação ME construiu 1486. Não é muito útil a partir do site. Acrescente-o à documentação do editor, por favor;
2. Ao tentar solicitar carrapatos via CopyTicksRange():
int copied = CopyTicksRange( _Symbol, ticks, COPY_TICKS_TRADE, inpStartTime*1000 );
Constantemente obtemos -1 e erro #4401 "pedido de histórico não encontrado". E deveria ser assim:
Если параметр to_msc не указан, то отдаются все тики до конца истории.
O código está completamente abaixo:
//| test_CopyTicksRange.mq5 |
//| Tapochun |
//| https://www.mql5.com/ru/users/tapochun |
//+------------------------------------------------------------------+
#property copyright "Tapochun"
#property link "https://www.mql5.com/ru/users/tapochun"
#property version "1.00"
#property indicator_chart_window
#property indicator_plots 0
//---
#include <errordescription.mqh>
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
input datetime inpStartTime=__DATE__; // Время начала загрузки истории
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
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[])
{
if(prev_calculated<=0)
{
//---
UseCopyTicksRange();
//---
UseCopyTicks();
}
//---
return(rates_total);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void UseCopyTicksRange()
{
MqlTick ticks[];
//--- Замеряем время старта перед получением тиков
ulong start=GetMicrosecondCount();
//--- Запрашиваем тиковую историю
int copied=CopyTicksRange(_Symbol,ticks,COPY_TICKS_TRADE,inpStartTime*1000);
//--- Рассчитаем, за сколько мс получена история
ulong msc=GetMicrosecondCount()-start;
//--- Проверяем количество скопированных тиков
if(copied>0) // Если история получена
{
//--- Выведем информацию о количестве тиков и затраченном времени
Print(__FUNCTION__,": Получено ",copied," тиков за ",msc," мкс");
//--- Проверка синхронизации тиковой истории
if(GetLastError()==0) // Если история синхронизирована
{
//--- Выходим
return;
}
else // Если история рассинхронизирована - сообщение
{
Print(__FUNCTION__,": Получено ",copied," тиков за ",msc," мкс. Тики еще не синхронизированы!");
return;
}
}
else if(copied==0) // Если получено 0 тиков - сообщение
Print(__FUNCTION__,": ВНИМАНИЕ! Получено 0 тиков. Возможно установлен некорректный параметр from ("+
TimeToString(inpStartTime,TIME_DATE|TIME_SECONDS)+".",inpStartTime*1000%1000,"). Текущее время "+TimeToString(TimeCurrent()));
else // Если тики не получены - ошибка
Print(__FUNCTION__,": ОШИБКА #",GetLastError()," ("+ErrorDescription(_LastError)+"). Тики не получены!");
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void UseCopyTicks()
{
MqlTick ticks[];
//--- Замеряем время старта перед получением тиков
ulong start=GetMicrosecondCount();
//--- Запрашиваем тиковую историю
int copied=CopyTicks(_Symbol,ticks,COPY_TICKS_TRADE,inpStartTime*1000,10000000);
//--- Рассчитаем, за сколько мс получена история
ulong msc=GetMicrosecondCount()-start;
//--- Проверяем количество скопированных тиков
if(copied>0) // Если история получена
{
//--- Выведем информацию о количестве тиков и затраченном времени
Print(__FUNCTION__,": Получено ",copied," тиков за ",msc," мкс");
//--- Проверка синхронизации тиковой истории
if(GetLastError()==0) // Если история синхронизирована
{
//--- Выходим
return;
}
else // Если история рассинхронизирована - сообщение
{
Print(__FUNCTION__,": Получено ",copied," тиков за ",msc," мкс. Тики еще не синхронизированы!");
return;
}
}
else if(copied==0) // Если получено 0 тиков - сообщение
Print(__FUNCTION__,": ВНИМАНИЕ! Получено 0 тиков. Возможно установлен некорректный параметр from ("+
TimeToString(inpStartTime,TIME_DATE|TIME_SECONDS)+".",inpStartTime*1000%1000,"). Текущее время "+TimeToString(TimeCurrent()));
else // Если тики не получены - ошибка
Print(__FUNCTION__,": ОШИБКА #",GetLastError()," ("+ErrorDescription(_LastError)+"). Тики не получены!");
}
//+------------------------------------------------------------------+
CopyTicks() retorna o resultado correto.