Minha insatisfação com o testador de estratégia. com os desenvolvedores do MQL - página 2

 
Alexey Volchanskiy:

Renat, vou aproveitar esta oportunidade para perguntar, já que você está aqui. Haverá serviços na nova construção ou será adiada por enquanto?

Mais tarde.

Enquanto isso, você pode escrever dados para instrumentos sintéticos sem eles.

 
Renat Fatkhullin:

Mais tarde.

Enquanto isso, eu posso escrever dados para ferramentas sintéticas sem elas.


Eu quero multithreading, eu esperava que de alguma forma isso pudesse ser feito com serviços. Pessoalmente, ainda não preciso de dados.

 

Bom dia a todos vocês.

Não, este posto não é uma besteira como outra pessoa escreveu.

Estou em plena sargento.

Entendo o que os programadores escrevem e dizem que funciona, mas sinto muito.

Se todos nós trabalhamos com dados errôneos sobre o corretor, entendo a idéia imediatamente, meus resultados não são errôneos.

O problema é que eu posso ter estudado ironicamente na universidade para ser engenheiro estatístico.

Portanto, para mim dados errôneos são, em geral, dados falsos em conformidade, para dizer 99% de que o que vejo funciona como um homem de estatísticas, digo que não sei o mesmo que você e todos que este post leram.

A solução é o que escrevi acima.

A coleta de carrapatos que todos podem fazer com robôs/algoritmos simples.

O fato é que nem em 5 nem em 4 MQL temos os dados do mercado, que devem ser usados para testes de estratégia.

Para estratégias de longo prazo, eu não acho que um robô seja necessário.

Para mim é carrapato por carrapato e tenho idéias interessantes para estudar asc e licitar por carrapato.

Desculpe pela longa resposta e tempo, tenho estado muito ocupado.

Atenciosamente Ivan S.

 
Alexey Volchanskiy:

Eu escrevi uma vez, vou encontrá-lo.

Para cincohttps://www.mql5.com/ru/code/18046

Para quatrohttps://www.mql5.com/ru/code/18047

Para um seis,https://www.mql5.com/ru/code/.


Você ficaria surpreso, mas é o mesmo para 5 e 4.

Eu posso falar por 4 e 5 ao mesmo tempo!


Não li o código completo de seu algoritmo, mas basicamente esta parte do código é para economizar, mas agora preciso reproduzir este Ask e ter o Strategy Tester a emiti-lo.

Se houver algum programador que possa fazer isso, estou ouvindo com muita atenção!

 
Renat Fatkhullin:
Se não estou enganado, no MT5 o testador está em carrapatos reais, onde o lance/venda é real?

Renat verificou que o mql5 funciona da mesma forma que em 4 mql.

 
Ivan Stepanenko:

Renat verificou que o mql5 funciona da mesma forma que com 4 mql.


o problema já foi resolvido há muito tempo.

1. A questão já foi resolvida. Para a MQL5, os testes com carrapatos reais estão disponíveis há cerca de um ano. Se ao menos você tivesse estudado o terminal...

2. Para a MQL4, você pode usar seus próprios arquivos .fxt. A maneira mais fácil é usar o TickStory Lite, ele baixa carrapatos reais da Ducas

 
Ivan Stepanenko:

renat verificou que o mql5 funciona da mesma forma que em 4 mql.


uma mentira

Pegamos meu Expert Advisor para salvar carrapatos SaveTicks, o link para o CodeBase que dei acima, e o executamos no modo de teste"Cada carrapato baseado em carrapatos reais". Vamos ver o que está no arquivo de saída, no meu caso o Agente-127.0.0.1-3000 MQL5 ArquivosEURUSD_SaveTicks.csv

2017.11.28 09:11:16,1.1895,1.18952

2017.11.28 09:11:16,1.1895,1.18952

spread 2

2017.11.28 09:11:26,1.18947,1.18951

2017.11.28 09:11:26,1.18947,1.18951

propagação 4
 

Veja o navegador de caracteres, e há carrapatos para quaisquer caracteres.

Estes são os carrapatos reais usados no testador.

 
Ivan Stepanenko:

Bom dia a todos vocês.

Não, este posto não é uma besteira como outra pessoa escreveu.

Estou em plena sargento.

Entendo o que os programadores escrevem e dizem que funciona, mas sinto muito.

Se todos nós trabalhamos com dados errôneos sobre o corretor, entendo a idéia imediatamente, meus resultados não são errôneos.

O problema é que eu posso ter estudado ironicamente na universidade para ser engenheiro estatístico.

Portanto, para mim dados errôneos são, em geral, dados falsos em conformidade, para dizer 99% de que o que vejo funciona como um homem de estatísticas, digo que não sei o mesmo que você e todos que este post leram.

A solução é o que escrevi acima.

A coleta de carrapatos que todos podem fazer com robôs/algoritmos simples.

O fato é que nem em 5 nem em 4 MQL temos os dados do mercado, que devem ser usados para testes de estratégia.

Para estratégias de longo prazo, eu não acho que um robô seja necessário.

Para mim é carrapato por carrapato e tenho idéias interessantes para estudar asc e licitar por carrapato.

Desculpe pela longa resposta e tempo, tenho estado muito ocupado.

Atenciosamente Ivan S.

E quanto à sua gramática? //Justando dizer...

Se tudo é tão sério, a solução para sua pergunta é a seguinte:

Reunir estatísticas, citar história e trabalho, Alexey Volchansky já encontrou tudo para você e deu links acima.

No Ask - você pode baixar o histórico com Ask e Bids da DucasCopy (google it).

Boa sorte!
 

Aqui estão alguns artigos interessantes:


Além disso, na versão beta de ontem do MetaTrader 5, para a qual você pode atualizar a partir do MetaQuotes-Demo, há um sistema de fórmula completa de criação de símbolos personalizados.

Agora você pode criar instrumentos financeiros sintéticos - instrumentos baseados em um ou mais instrumentos existentes. Basta especificar a fórmula de cálculo das cotações, e a plataforma gerará os ticks do instrumento sintético em tempo real e criará seu histórico minucioso.

Como funciona

  • Você cria um símbolo sintético e estabelece uma fórmula para ele.
  • A plataforma calculará seus ticks a uma taxa de 10 vezes por segundo (e somente se o preço de pelo menos um instrumento incluído na fórmula tiver mudado).
  • A plataforma calculará o histórico das barras de minutos (dos últimos dois meses) com base nas barras de minutos dos instrumentos incluídos em sua fórmula. Todas as novas barras (atuais e subseqüentes) serão construídas em tempo real com base nas carrapatas geradas pelo instrumento sintético.
Por exemplo, você pode criar uma ferramenta, que mostrará o índice do dólar (USDX). Sua fórmula será a seguinte:
50.14348112 * pow(ask(EURUSD),-0.576) * pow(USDJPY,0.136) * pow(ask(GBPUSD),-0.119) * pow(USDCAD,0.091) * pow(USDSEK,0.042) * pow(USDCHF,0.036)
Nota: a fórmula original do índice do dólar utiliza pares USDEUR e USDGBP. Como a plataforma só tem pares de moedas inversas, a fórmula da ferramenta sintética usa grau negativo para eles e o preço Ask em vez de Bid.

Em tempo real, a plataforma calculará o preço do novo instrumento com base nas cotações dos outros seis instrumentos fornecidos por seu corretor. No Market Watch e no gráfico, você verá como seu preço está mudando:



Crie um novo instrumento personalizado, abra sua especificação e especifique a fórmula:




Por conveniência, o editor de fórmulas mostra uma lista de opções possíveis à medida que você digita os nomes dos instrumentos e funções.

O cálculo de carrapatos e barras minúsculas do instrumento sintético começará quando ele for adicionado ao "Market Watch". Todos os símbolos necessários para seu cálculo serão adicionados automaticamente ao "Market Watch" imediatamente. Um registro do início do cálculo será adicionado ao registro da plataforma: Símbolo Sintético USDX: o processamento foi iniciado.
  • O cálculo do instrumento sintético pára quando ele é escondido do Market Watch.
  • Símbolos que são usados atualmente para calcular instrumentos sintéticos não podem ser escondidos do Market Watch.

Cálculo de citações em tempo real
A cada 100 ms (dez vezes por segundo), verificamos se o preço de pelo menos um instrumento envolvido na fórmula mudou. Se assim for, o preço do instrumento sintético é calculado e um tick é gerado. O cálculo é realizado em paralelo em três correntes para Bid, Ask e Last prices. Por exemplo, se o EURUSD*GBPUSD for especificado na fórmula, o cálculo do preço do instrumento sintético será o seguinte:

  • Proposta - licitação(EURUSD)*bid(GBPUSD)
  • Pergunte - pergunte(EURUSD)*ask(GBPUSD)
  • Último - último(EURUSD)*last(GBPUSD)

A presença de mudanças é verificada para cada preço separadamente. Por exemplo, se no próximo cálculo apenas o preço de Licitação do instrumento inicial tiver mudado, então apenas o preço, onde houve mudanças, será calculado para o tick do instrumento sintético.

Construindo a história das barras de minutos
Além de coletar carrapatos em tempo real, a plataforma também cria um minuto de história de um instrumento sintético. Assim, um comerciante pode visualizar seus gráficos como se fossem instrumentos regulares e realizar análises técnicas sobre eles usando objetos e indicadores.

Assim que o trader adiciona um instrumento sintético ao Market Watch, a plataforma verifica se há um minuto de histórico calculado para ele. Caso contrário, será criado para os últimos 60 dias, que são cerca de 50.000 bares. Se as barras máximas na janela nas configurações da plataforma tiverem um valor mais baixo, este é o limite que será usado.

Se algumas das barras neste período já estiverem construídas, a plataforma criará novas barras. Um histórico mais profundo é criado somente quando se tenta visualizar o cronograma correspondente no gráfico (se você rolar para trás ou solicitar o histórico do programa MQL5).

O histórico das barras minuto de um instrumento sintético é calculado com base nas barras minuto (não carrapatos) dos instrumentos incluídos em sua fórmula. Por exemplo, para calcular o preço da barra de minutos aberta de um instrumento sintético, a plataforma toma os preços dos instrumentos abertos incluídos em sua fórmula. Os preços de Alto, Baixo e Fechado são calculados da mesma forma.

Se você não tiver uma barra de minutos na fórmula para um símbolo, a plataforma calculará o preço de fechamento da barra anterior. Por exemplo, você pode usar três símbolos: EURUSD, USDJPY e GBPUSD. Se o USDJPY não tiver uma barra de minutos correspondente às 12:00, os seguintes preços serão usados para o cálculo:

  • Para Aberto - EURUSD Aberto 12:00, USDJPY Fechado 11:59, GBPUSD Aberto 12:00
  • Para Alta - EURUSD Alta 12:00, USDJPY Fechar 11:59, GBPUSD Alta 12:00
  • Para baixo - EURUSD Mínimo 12:00, USDJPY Fechado 11:59, GBPUSD Mínimo 12:00
  • Para fechar - EURUSD Fechar 12:00, USDJPY Fechar 11:59, GBPUSD Fechar 12:00

Se todos os símbolos na fórmula não tiverem uma barra de minutos, a barra de minutos sintética correspondente não será calculada.

Construção de novas mini barras
Todas as novas barras (atuais e seguintes) da ferramenta sintética são criadas com base nos carrapatos gerados. O preço pelo qual as barras são construídas depende do parâmetro "Construção de gráfico" na especificação:





Que operações podem ser usadas na fórmula da ferramenta
Você pode usar dados de preços, assim como algumas propriedades dos símbolos disponíveis (fornecidos por seu corretor) em sua fórmula. Para fazer isso, especifique:

  • Nome do símbolo - dependendo do preço de um símbolo sintético, a fórmula utilizará o Bid, Ask ou Last price do símbolo especificado. Por exemplo, se você especificar EURUSD*GBPUSD, então o preço da licitação será calculado como Bid(EURUSD)*bid(GBPUSD), e Ask price - como Ask(EURUSD)*ask(GBPUSD).
  • Licitação (nome do símbolo) - para calcular o preço de licitação de um símbolo sintético, o preço de licitação do símbolo especificado será utilizado forçosamente. Na verdade, esta variante corresponde à anterior (sem especificação de um tipo de preço).
  • Ask(nome do símbolo) - o preço Ask do símbolo especificado será utilizado forçosamente para o cálculo do preço Bid do instrumento sintético. Para o cálculo do Ask price, ao contrário, será utilizado o Bid price do símbolo especificado. Para calcular o último preço, será utilizado o último preço do símbolo especificado. Por exemplo, se você especificar Ask(EURUSD)*GBPUSD, o cálculo será como segue:
    • Bid = ask(EURUSD)*bid(GBPUSD)
    • Ask = bid(EURUSD)*ask(GBPUSD)
    • Último = último(EURUSD)*last(GBPUSD)
  • Last(nome do símbolo) - o último preço do símbolo especificado será usado para calcular todos os preços dos símbolos sintéticos (Bid, Ask e Last). Por exemplo, se você especificar último(EURUSD)*GBPUSD, o cálculo será como segue:
    • Bid = último(EURUSD)*bid(GBPUSD)
    • Ask = last(EURUSD)*ask(GBPUSD)
    • Último = último(EURUSD)*last(GBPUSD)
  • volume(Nome do símbolo) - a fórmula utilizará o volume do tick para o símbolo especificado. Por favor, assegure-se de que as informações de volume sejam traduzidas para o instrumento especificado.
  • point(nome do símbolo) - o tamanho da mudança mínima de preço de um instrumento especificado será usado na fórmula.
  • dígitos(nome do símbolo) - o número de casas decimais no preço do símbolo especificado será substituído na fórmula.

Se um símbolo tem um nome complexo (contém hífens, pontos, etc.), ele deve ser colocado entre aspas. Por exemplo, "RTS-6.17".
Operações aritméticas podem ser usadas na fórmula: adição (+), subtração (-), multiplicação (*), divisão (/) e restante da divisão (%). Por exemplo, EURUSD+GBPUSD significa que o preço é calculado como a soma de EURUSD e GBPUSD. Você também pode usar um unário menos na fórmula para mudar o sinal, por exemplo: -10*EURUSD.

Há uma prioridade para as operações aritméticas:

  • As operações de multiplicação, divisão e restante são realizadas primeiro, depois são realizadas operações de adição e subtração.
  • As operações são realizadas da esquerda para a direita. Se várias operações são utilizadas em uma fórmula, que tem a mesma prioridade (por exemplo, multiplicação e divisão), a operação à esquerda será executada primeiro.
  • Parênteses ( e ) podem ser usados para mudar a prioridade das operações. As expressões entre parênteses têm a maior prioridade no cálculo. O princípio da esquerda para a direita também se aplica a eles: as expressões entre parênteses à esquerda em uma fórmula são calculadas primeiro.

As constantes também podem ser usadas na fórmula:

  • Numérico (inteiro e real com um ponto). Por exemplo, EURUSD*2+GBPUSD*0,7.
  • As propriedades _Dígitos e _Ponto símbolo. Eles substituem as propriedades do símbolo personalizado da especificação pela fórmula. _Dígitos - número de casas decimais no preço do símbolo, _Ponto - tamanho da mudança mínima do preço do símbolo.

Também todas as funções matemáticas suportadas na MQL5 podem ser usadas na fórmula, exceto MathSrand, MathRand e MathIsValidNuber. Somente nomes curtos são usados para todas as funções: fabs(), acos(), asin(), etc.