Perguntas de um "boneco" - página 54

 
Urain:
Corrigir os erros do homem com a alcunha Expert? que deve ir no fio do humor.
Quanto do seu posto é de corrico numa escala de 10 ? =)
 
Expert:
Na medida em que o seu posto se relaciona com o corrico numa escala de 10? =)

No início pensei que era Andrei quem fazia tais perguntas, mas depois lembrei-me que o seu apelido é TheXpert, ao qual ele corresponde.

Uma vez que se aproximou tanto, esteja preparado a ponto de ser duplamente solicitado.

É melhor mudá-lo, não é demasiado tarde para 3 mensagens, já há um perito suficiente no fórum.

 
tol64:

Por favor, aconselhar como implementar correctamente a nova verificação de bares em EA multi-divisas no esquema apresentado.

Adicionei uma matriz estática para armazenar o tempo de abertura de uma nova barra para cada símbolo:

void OnTick()
{ 
 // Объявление массивов переменных для торговых сигналов
 static datetime New_Bar[2];  
 static bool UpSignal[2], DnSignal[2];

 // Получение торговых сигналов
 TradeSignalCounter(0, остальные параметры);
 TradeSignalCounter(1, остальные параметры);

 // Совершение торговых операций
 TradePerformer(0, остальные параметры);
 TradePerformer(1, остальные параметры);
}

A função alterada éNewBar(string Symbol_, ENUM_TIMEFRAMES Timeframe); agora funciona com arrayNew_Bar[].

bool isNewBar(int Number,string Symbol_,ENUM_TIMEFRAMES Timeframe,datetime &New_Bar[])
{
 // Текущее время
 datetime lastbar_time = (ENUM_SERIES_INFO_INTEGER)SeriesInfoInteger(Symbol_,Timeframe,SERIES_LASTBAR_DATE);

 // Если это первый вызов функции
 if(New_Bar[Number] == 0)
   {
    // Установим время и выйдем 
    New_Bar[Number] = lastbar_time;
    return(false);
   }

 // Если время отличается
 if(New_Bar[Number] != lastbar_time)
   {
    // Запомним время и вернем true
    New_Bar[Number] = lastbar_time;
    return(true);
   }
 // Дошли до этого места - значит бар не новый, вернем false
 return(false);
}
Os resultados são ainda diferentes para diferentes ferramentas com parâmetros inalterados. Pode dizer-me onde estou errado?
 
Urain:

No início pensei que era Andrei quem fazia tais perguntas, mas depois lembrei-me que o seu apelido é TheXpert, ao qual ele corresponde.

Uma vez que está tão perto, esteja preparado que será duplamente procurado.

É melhor mudar, 3 mensagens não é demasiado tarde, o fórum um especialista é suficiente.

No início pensei que Andrew estava a fazer tais perguntas (em contexto entenda o estúpido), mas depois lembrei-me que ele apelidouTheXpert, que ele combina (oops, insulto oculto TheXpert) =)

P.S. Sentar-se para pensar num novo apelido.

 
papaklass:
Os resultados serão diferentes porque a função OnTick() dispara quando um novo tick vem para o símbolo, em cujo gráfico o Expert Advisor trabalha. Os carrapatos para símbolos diferentes não vêm ao mesmo tempo. Isto leva a divergências nos resultados finais. Se definir a sua EA para trabalhar com a moeda mais líquida, com as carraças mais altas do dia (eurusd), não se preocupe com isso.

A razão pela qual os resultados são diferentes é clara para mim. Já foi discutido em vários tópicos muitas vezes. No meu caso, não me sinto muito bem com o vapor não é uma opção). Há um problema que precisa de ser resolvido para se obterem resultados correctos nos testes. O esquema proposto por Nicholas Kositsin para mim neste momento é o mais compreensível e bastante adequado. Não há maneira de resolver a questão acima referida.

Konstantin Gruzdev sugeriu um método interessante com "espiões" e "agentes" no seu artigo. )) Mas o seu "agente" ex-Painel de Controlo de Espiões MCM parece não funcionar para mim.

Alguém tentou resolver o problema acima com a ajuda dos "agentes" de Konstantin Gruzdev?

 
tol64:

Alguém tentou resolver o problema acima referido com os "agentes" de Konstantin Gruzdev?

Não creio que esta técnica funcione no testador.

// Trabalho por temporizador. O que é que não se deve gostar?

 
MetaDriver:
Penso que esta tecnologia não funcionará no testador.

O próprio Konstantin comentou no fio de discussão do artigo como este:

OnChartEvent() ainda não funciona no testador. Os criadores prometeram fazê-lo. Testei, se se pode chamar teste, a metodologia com a chamada "espiões" directamente do Conselheiro Especialista no testador, substituindo a transferência de eventos através de variáveis globais - funciona.

É assim que se deve tentar.

Tenho mais algumas variantes na minha cabeça, mas elas parecem-me bastante complicadas. Em qualquer caso, terei de resolver este problema. Estou apenas cansado de obter os resultados errados. Comecei a estudar a MQL5 exclusivamente devido à possibilidade de testar sistemas de negociação em múltiplas moedas. Antes disso carregava os resultados dos testes para o Excel e executava cálculos lá. Mas preciso de ver os resultados directamente no testador de estratégias.

Vladimir, como resolveu este problema?

MetaDriver:

// Trabalho por temporizador. O que é que não se deve gostar?

Ah, já respondeu))). Sim, alguns fóruns "tubarões" também já sugeriram esta opção, mas ainda tenho de ver como pode ser implementada. Vou tentar concentrar-me agora e finalmente fazer esta função necessária. Se tiver uma solução pronta, ficar-lhe-ia profundamente grato por pelo menos um simples exemplo, se não se importar))).

 
MetaDriver:

// Trabalhar com um temporizador. O que é que não se deve gostar?

Tentei testá-lo no temporizador. Tudo isto me pareceu mais complicado, mas aqui revela-se suficiente para mover o código da função OnTick() para OnTimer(). Os resultados são idênticos. Para ser preciso, terá de definir o temporizador, por exemplo, a cada 10 segundos. No entanto, demora muito mais tempo a testar, que é a única coisa que pode não ser do seu agrado à primeira vista.
Документация по MQL5: Работа с событиями / EventSetTimer
Документация по MQL5: Работа с событиями / EventSetTimer
  • www.mql5.com
Работа с событиями / EventSetTimer - Документация по MQL5
 
tol64:
Tentei testá-lo num temporizador. Achei tudo mais complicado, mas aqui acontece que só preciso de traduzir o código da função OnTick() para OnTimer(). Os resultados são idênticos. Para ser preciso, terá de definir o temporizador, por exemplo, a cada 10 segundos. É verdade, os testes levam muito mais tempo; é a única coisa que pode ser desagradável à primeira vista.

Depende do período de tempo. Pode fazê-lo durante 10 dias (60*60*24*10), será mais rápido. :))

Há também subtilezas. Por exemplo, não é necessário assinalar nos fins-de-semana. ;)

 
tol64:
Mas leva muito mais tempo a testá-lo

Se o "tiquetaque" for necessário apenas para apanhar uma nova barra, basta definir um temporizador para o tempo de aparecimento da barra (00 minutos 00 segundos para H1) e assinalar cada 1 segundo durante alguns minutos até que a barra apareça em todas as TFs necessárias. Será mais preciso e económico.

Mas uma solução com eventos personalizados é, evidentemente, muito mais elegante.

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика - Документация по MQL5