[AVISO FECHADO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Não posso ir a lugar algum sem você. - página 426
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Здравствуйте! Как бы организовать в тестере стратегий оптимизацию (или тестирование) на промежутке времени, определенном не датами, а количеством последних баров? Попытка установки в советнике ограничителя времени работы, который определяется заданным количеством баров и основывается на TimeCurrent(), ничего не дала.
Хотя:
Возвращает последнее известное время сервера (время прихода последней котировки) в виде количества секунд, прошедших после 00:00 1 января 1970 года.
Замечание: при тестировании последнее известное время сервера моделируется
Получается, что время, на котором работает оптимизатор, задается только в окне тестера фразой "Использовать дату:". Может кто знает какую-нибудь хитрость?
Você pretende definir a hora do dia de negociação?
Se assim for
Вы имеете ввиду задавать время торгов внутри дня?
Если так то
Gostaria de otimizar os parâmetros de uma EA em prazos curtos em um pequeno período de tempo próximo à hora atual. O Testador de Estratégia, por outro lado, permite definir a data na qual o processo de otimização começa e termina. Quando o TF é de 15 minutos (por exemplo), então em um dia (e este é o mínimo que permite que o testador se ajuste) haverá 96 barras. E eu acho que é muito. Eu gostaria que esta TF fosse otimizada nas últimas 2 horas, ou seja, em 8 barras, por exemplo.
Eu inseri tal fragmento na EA:
história interna externa=100; //História em bares, na qual trabalha o Expert AdvisorStartDateTime=TimeCurrent()-História*Periodo()*60;
if(TimeCurrent()<StartDateTime) // A hora de início não chegou
{
Alerta("A hora de início não chegou. A EA não funcionou",": ",Symb,", ",Period());
retorno; // Saída início()
}
Eu esperava que a EA no testador de estratégia não funcionasse antes do StartDateTime. Mas não!
Я хотел бы оптимизировать параметры советника на коротких таймфреймах на малом промежутке времени поближе к текущему времени. Тестер же стратегий позволяет установить дату на которой начинается и на которой заканчивается процесс оптимизации. Когда же ТФ равен 15 минутам (например), то в сутках (а это минимум который позволяет установить тестер) будет 96 баров. А это по моему много. Хотелось бы для этого ТФ пооптимизировать на последних 2-х часах т.е. на 8-ми например барах.
Nota: ao testar, o último tempo conhecido do servidor é simulado.
O testador suporta M1 TF, não amarre-o às barras, amarre-o ao tempo, talvez você precise disso também.
Замечание: при тестировании последнее известное время сервера моделируется.
Тестер поддерживает ТФ М1, не привязывайтесь к барам, привязывайтесь ко времени, возможно это тоже нужно.
A frase: ao testar, o último tempo conhecido do servidor é simulado e no TimeCurrent( ) no entanto, não funciona. Sua variante é boa, mas temos que verificar se ela funciona? Em segundo lugar, ao mudar a TF é necessário mudar um pedaço de código ou reconhecer em que TF ele funciona, para perceber adequadamente os números "início" e "fim". Em terceiro lugar, acho que é muito mais conveniente colocar o número do baro para trás - não há necessidade de calcular o "início" manualmente. Na MQL lidamos com barras! E a última coisa: qual é a desvantagem deste código? (Exceto que não funciona no testador de estratégia. E essa é a minha pergunta)
Замечание: при тестировании последнее известное время сервера моделируется.
Тестер поддерживает ТФ М1, не привязывайтесь к барам, привязывайтесь ко времени, возможно это тоже нужно.
Mais ou menos como:
data é data e hora, um inteiro não assinado contendo o número de segundos decorridos desde 0 horas em 1 de janeiro de 1970.
и
Os dados dos tipos cor e data/hora são representados como números inteiros. Os tipos inteiros, juntamente com os tipos de ponto flutuante, são chamados de tipos aritméticos (numéricos).
Caso contrário, como sair dela.
Obrigado pela dica sobre o formato numérico, no entanto. Há uma direção de busca. Se ainda houver uma solução pronta, será grato
Na verdade, é melhor usar o Time[0] em vez do TimeCurrent() no testador, me pareceu que o TimeCurrent() funcionava no testador antes...
e agora o TimeCurrent() no testador (ou não no testador) muito provavelmente dará o tempo quando chegar a última citação...
neste caso, vai dar certo
extern int History=100; // History in bars, em que o Expert Advisor trabalha
StartDateTime=Time[History];
if(Time[0] < StartDateTime) // A hora de início não chegou
{
Alert("A hora de início não chegou. EA não funciona",": ",Symb,", ",Period());
retorno; // Saída início()
}
Вроде как:
datetime - дата и время, беззнаковое целое число, содержащее количество секунд, прошедших с 0 часов 1 января 1970 года.
и
Данные типов color и datetime представляются в виде целых чисел. Целые типы вместе с типами с плавающей точкой называются арифметическими (числовыми) типами.
А если нет, то как выйти из этого положения.
Хотя, спасибо за подсказку на счет формата чисел. Есть направление поиска. Если всеже есть готовое решение буду благодарен
Bem, no comentário anterior, o erro foi exibido através do alerta.
A ajuda diz "Nota: ao testar, o último tempo conhecido do servidor é simulado", mas se não forem simuladas todas as perguntas para o editor de ajuda.
Você verificou, encontrou o erro...
Somente você conhece a solução, pois não conhecemos a direção da lógica.
Não entendo apenas porque há tanto texto
StartDateTime=TimeCurrent()-História*Periodo()*60;
quando tudo pode ser feito muito mais facilmente?
Готовое решение знаете только Вы, так как дальнейшее направление логики нам не известно.
Concordo plenamente com sua solução na resposta anterior: trata-se de uma incompatibilidade de formato de dados! O pedido de uma solução pronta se resume a resolver a questão da conversão de formato. Mas obviamente a MQL4 não tem tais opções. Por exemplo, hoje é o 43º dia do ano, ou seja, o 43º bar no período diário desde o início do ano. Suponha que eu queira otimizar meu Expert Advisor em 60 barras. Isso significa que o testador deve começar a trabalhar com 365-(60-43)=348º dia (barra) do ano anterior. Isto é, devemos tomar TimeDayOfYear(TimeCurrent()) (é uma int!) e compará-lo com 348. Obviamente, temos que levar em conta também o valor do ano (ano passado). Em resumo, acho que consegui. Só temos que implementá-lo. Será muito mais difícil em TFs pequenos, quando se tiver que testar um grande número de barras, que (por exemplo, 5 minutos) irão além da hora anterior, ou talvez no dia anterior.
Todo seu problema está na declaração do problema, deixe claro para os outros... Sinceramente, não entendi a que horas você precisa testar de...
Se você precisa começar com uma barra de 60 barras, comece com 60 barras.
int startTime = iTime(NULL,PERÍODO_D1, N); // N - número da barra a partir do momento atual no cronograma diário