Discussão do artigo "Criação e teste de símbolos personalizados na MetaTrader 5"

 

Novo artigo Criação e teste de símbolos personalizados na MetaTrader 5 foi publicado:

A criação de símbolos personalizados empurra os limites no desenvolvimento de sistemas de negociação e análise do mercado financeiro. Agora, os traders são capazes de desenhar gráficos e testar estratégias de negociação em um número ilimitado de instrumentos financeiros.

Vamos criar um símbolo personalizado baseado no que já está presente na Observação do Mercado. Abra a janela Símbolos pelo botão direito do mouse e selecione o que você gostaria de usar para criar um símbolo personalizado.

Autor: MetaQuotes Software Corp.

 

CustomTicksReplace

Полностью заменяет ценовую историю пользовательского инструмента в указанном временном интервале данными из массива типа  MqlTick

É muito caro para o script criar um clone de ticks de um símbolo antigo com histórico de ticks já carregado. O CopyTicks não funciona instantaneamente.

 
Tentando fazer o backtest (em qualquer modo) desde 1º de agosto, o erro falha
2017.09.04 11:52:40.139 Tester  EURCHF_custom: history data begins from 2017.07.25 00:00
Adicionei histórias, sem sorte
2017.09.04 11:57:50.498 Tester  EURCHF_custom: history data begins from 2017.06.13 00:00
 
fxsaber:
Tento fazer um backtest (em qualquer modo) a partir de 1º de agosto e recebo um erroAdded history, sem sorte

Que período de tempo é definido para o teste? O artigo Fundamentals of Testing in MetaTrader 5 diz que são necessárias 100 barras:

O agente de teste baixa apenas o histórico que está faltando, com uma pequena reserva para fornecer os dados necessários sobre o histórico para calcular os indicadores no momento do teste. O volume mínimo de histórico baixado do servidor de negociação para os períodos de tempo D1 e inferiores é de um ano. Assim, se você começar a testar no intervalo 2010.11.01-2010.12.01 (teste no intervalo de um mês) com o período M15 (cada barra é igual a 15 minutos), o terminal solicitará o histórico do instrumento para todo o ano de 2010. Para períodos de tempo semanais, será solicitado o histórico de 100 barras, o que equivale a aproximadamente dois anos (há 52 semanas em um ano). Para testar o período de tempo Mensal, o agente solicitará o histórico de 8 anos (12 meses * 8 anos = 96 meses).

 
Rashid Umarov:

Que período de tempo é definido para o teste? O artigo Fundamentals of Testing in MetaTrader 5 diz que são necessárias 100 barras:

M1. Usei esse script para criar um símbolo.

 
fxsaber:

M1. Usei esse script para criar um símbolo.

Além do EURCHF_custom, criei o EURUSD_custom. E o backtest no EURCHF começou, enquanto puxava os dados do EURUSD_custom.

Achei que, depois de excluir o EURUSD_custom, o backtest não funcionaria, mas não. Agora ele funciona.

Não está claro por que tive que criar o EURUSD_custom e depois excluí-lo para que o testador funcionasse.


ZY Bug.

Fórum sobre negociação, sistemas de negociação automatizados e teste de estratégias de negociação.

Bibliotecas: Symbol

fxsaber, 2017.09.04 13:54

O novo cruzamento conta corretamente - ele não converte o lucro. Mas, por alguma razão, ele está puxando um major quando não é usado em nenhum outro lugar

2017.09.04 14:46:43.062 Core 1  EURCHF_custom: generate 975389 ticks in 0:00:00.063, passed to tester 3210 ticks
2017.09.04 14:46:43.062 Core 1  EURUSD: generate 979976 ticks in 0:00:00.062, passed to tester 8696 ticks
 
fxsaber:

Além do EURCHF_custom, criei o EURUSD_custom. O backtest do EURCHF continuou, extraindo dados do EURUSD_custom.

Achei que, depois de excluir o EURUSD_custom, o backtest não funcionaria, mas não. Agora ele funciona.

Não está claro por que foi necessário criar o EURUSD_custom e depois excluí-lo para que o testador funcionasse.

Você não fornece todos os detalhes - moeda da conta, moeda do lucro. Se o testador tentar obter o histórico por meio de alguns símbolos, isso significa que ele precisa desses símbolos para os cálculos.

 
Rashid Umarov:

Você não fornece todos os detalhes - moeda da conta, moeda do lucro. Se o testador tentar obter o histórico por meio de alguns símbolos, isso significa que esses símbolos são necessários para os cálculos.

É interessante que o EURCHF real tem CHF como moeda de lucro, EUR como moeda de margem e EUR como moeda base.

Portanto, o testador tem um tipo de paradoxo. Ele precisa calcular quanto EUR (moeda base) está incluído em um lote e, em seguida, converter esse valor em EUR (moeda de margem) - aqui ele só teve sorte com a proporção (EUR/EUR = 1). Em seguida, ele deve converter a margem em USD (moeda da conta) e verificar se é suficiente. Ao calcular o lucro, ele deve converter CHF (moeda do lucro) em USD (moeda da conta).


No total, na pior das hipóteses, o testador deve fazer até três conversões (se as majors correspondentes estiverem disponíveis). E, é claro, puxar adicionalmente TRÊS moedas principais para o cruzamento, no qual o teste é realizado!

 
fxsaber:

Você está testando instrumentos forex no modo forex/taxas cruzadas. Portanto, os requisitos para o ambiente de mercado são os mesmos.

Em suas perguntas, forneça registros completos de uma só vez, não linhas rasgadas, por favor.

 
Renat Fatkhullin:

Você está testando instrumentos forex no modo forex/taxas cruzadas. Portanto, os requisitos no ambiente de mercado são os mesmos.

Não estou entendendo.

Em suas perguntas, forneça logs completos, não linhas rasgadas, por favor.

Em anexo.

Arquivos anexados:
Log.zip  3 kb
 
fxsaber:

Não estou entendendo.

Em anexo.

De acordo com os registros, a moeda de depósito = USD, o teste é realizado no símbolo EURCHF. O testador precisa de cotações EURUSD ou USDEUR para o cálculo da margem.

2017.09.04 15:26:30.999 Tester  EURCHF_custom: history data begins from 2017.06.13 00:00
2017.09.04 15:26:31.000 Core 1  agent process started
2017.09.04 15:26:31.442 Core 1  connecting to 127.0.0.1:3000
2017.09.04 15:26:31.442 Core 1  connected
2017.09.04 15:26:31.448 Core 1  authorized (agent build 1653)
2017.09.04 15:26:31.452 Tester  EURCHF_custom,M1 (MetaQuotes-Demo): testing of Experts\Test.ex5 from 2017.08.01 00:00 to 2017.08.15 00:00
2017.09.04 15:26:31.468 Core 1  common synchronization completed
2017.09.04 15:26:31.529 Tester  quality of analyzed history is 100%
2017.09.04 15:26:31.683 Core 1  MetaTester 5 started on 127.0.0.1:3000
2017.09.04 15:26:31.683 Core 1  initialization finished
2017.09.04 15:26:31.683 Core 1  login (build 1653)
2017.09.04 15:26:31.683 Core 1  38520 bytes of account info loaded
2017.09.04 15:26:31.683 Core 1  1482 bytes of tester parameters loaded
2017.09.04 15:26:31.683 Core 1  2748 bytes of input parameters loaded
2017.09.04 15:26:31.683 Core 1  4356 bytes of symbols list loaded
2017.09.04 15:26:31.683 Core 1  expert file added: Experts\Test.ex5. 446309 bytes loaded
2017.09.04 15:26:31.683 Core 1  initial deposit 10000000.00 USD, leverage 1:500
2017.09.04 15:26:31.683 Core 1  successfully initialized

Ele procura por elas entre os símbolos disponíveis e encontra EURUSD, depois faz o download e as sincroniza

2017.09.04 15:26:31.683 Core 1  EURUSD: symbol to be synchronized
2017.09.04 15:26:31.683 Core 1  EURUSD: symbol synchronized, 3464 bytes of symbol info received
2017.09.04 15:26:31.683 Core 1  EURUSD: load 27 bytes of history data to synchronize in 0:00:00.000
2017.09.04 15:26:31.683 Core 1  EURUSD: history synchronized from 2016.01.04 to 2017.08.15