Discussão do artigo "Algoritmo auto-adaptável (Parte IV): funcionalidade e testes adicionais" - página 5
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
1. Se presumirmos que foi encontrado um padrão geral que funciona de forma aproximadamente igual em cada um dos N instrumentos, a capacidade do sistema em termos de aumento de instrumentos negociados simultaneamente, com base nos resultados de 1 instrumento, pode ser estimada da seguinte forma:
O = Z * Tcr * ( 1 + ( N - 1 ) * Corr ) / Tp,
onde
Z - número de negociações (série de negócios) para um instrumento,
Tcr - duração média de uma negociação em dias,
N - Número de instrumentos,
Corr - algum coeficiente de correlação entre eles [0..1],
Tp - período negociado em dias.
Se O for menor que um, é mais provável que o drawdown máximo não aumente com o aumento do número de instrumentos negociados simultaneamente, e o lucro total tenderá a aumentar em N vezes.
Para negociar cem instrumentos de uma só vez, será necessário garantir o tempo mínimo de permanência em uma negociação (o que é muito difícil para uma estratégia de contra-tendência) e a correlação mínima dos instrumentos negociados (o que também é difícil). Bem, ou o sinal para entrar aparece tão raramente que é difícil falar sobre o sistema.
2. Fiz um esboço e testei apressadamente o "fechamento parcial" ao negociar vários símbolos. Os rebaixamentos diminuíram, o gráfico de patrimônio está mais próximo do gráfico de equilíbrio. Mas ainda aparecem grandes rebaixamentos. Não com a mesma profundidade e um pouco nos lugares errados quando comparados sem o "fechamento parcial".
Para fazer com que o corte de cauda (fechamento das séries mais não lucrativas ou parte delas) funcione regularmente e bem, é necessário alimentar constantemente o saldo com séries fechadas com sucesso, e esse influxo deve ser suficiente para fechar o menos e deixar 20% no bolso (no saldo). Porém, quando existe esse mecanismo de entrega de lucros em séries "juniores", não faz sentido envolver-se em séries "seniores".
Se considerarmos as séries bloqueadas em um instrumento, quando, por exemplo, realizamos uma compra negativa (1) e fechamos várias vendas (2), isso não funcionou para mim (quero dizer, um resultado positivo estável por um longo período). Não estou fazendo campanha para nada, e sem matemática, exclusivamente para isso: "...eu verifiquei...". :)
Em geral, o sistema tem uma assimetria acentuada. No caso de um movimento desfavorável, a posição se acumula. Nesse caso, a porcentagem de entradas corretas deve ser muito maior do que as erradas, ou deve-se esperar um recuo suficiente ou reservas significativas para o drawdown. Por outro lado, é possível aumentar a posição em cada bloco formado, tanto contra a entrada quanto em direção ao lucro. Desde que todas as séries sejam fechadas com o lucro total planejado, essa decisão produz melhores resultados. Além disso, a entrada somente nos blocos de "cauda" diminui o drawdown.
O sistema é interessante, pois é muito variável em diferentes direções. Por exemplo, estou testando os seguintes parâmetros:
-Blocks:
-- número mínimo e máximo de etapas para procurar tendências/flattening (8 - é uma seção muito curta? 50 - preciso de tantas?),
-- tamanho do conjunto de blocos, início e etapa da mudança de elevação no conjunto,
-- onde traçar o limite entre tendência e achatamento,
E também:
-Na abertura:
-- se deve usar o controle de cobertura de ativos (para um determinado conjunto de instrumentos com correlação aceitável, é melhor não ter controle),
-- se deve trabalhar com sinais de reversão (acho que é melhor trabalhar na direção original ou sair, mas não dar meia-volta),
-- se for um sinal, entrar no bloco contra o movimento, no movimento ou em ambos os casos (isso varia aqui)
-- volume de entrada: lote fixo, ou valor fixo do bloco atual, ou a partir do valor fixo do bloco de tamanho máximo
-- o que fazer ao perder um sinal: fechar, procurar um novo em outros parâmetros, continuar no último,
-- ao fechar:
-- planejo sair da série por TP com base em expectativas estáticas do movimento, ou por um determinado lucro em $ relativo ao valor do bloco (por exemplo, quero $10 de qualquer série, independentemente de rebaixamentos e acúmulo)
-- se devo usar o lucro total de todas as séries abertas e em que volume relativo ao valor do bloco (30 no total de todas as séries e fechar?)
-- se deve ser usado um mecanismo de fechamento parcial.
Está claro que o autor não fez essas perguntas, e talvez tudo isso seja desnecessário. É claro que estou distorcendo o sistema na medida em que o entendo e a qualidade de sua implementação. Mas gosto do sistema em si e do processo de estudá-lo, graças ao autor, que acompanho com interesse.
Todas as perguntas-parâmetros exigem testes múltiplos, o que é muito difícil na versão original da construção de blocos (grande quantidade de cálculos). Tentei simplificar os cálculos e a construção de conjuntos de blocos (usando datas de referência fixas raras para o cálculo, em vez de cálculos a partir da última barra). A velocidade de cálculo é quase cosmos, mas, infelizmente, notei uma deterioração na qualidade dos sinais recebidos :( Agora estou pensando em como combinar...
Também descobri que o controle volumétrico funciona melhor do que o controle binário ao controlar hedges por ativos. Binário - quando controlamos apenas a direção das posições abertas por moeda, sem levar em conta o volume. Volumétrico - calculo o análogo da guia "Ativos" e abro novas posições a partir do zero ou contra o valor acumulado. (A propósito, existe um meio padrão de obter dados dessa guia no MQL5?)
De alguma forma, em geral.
P.S. Quando o sistema é projetado para tomar decisões em barras formadas (apenas na abertura), não tem SLs e TPs marcados em posições (embora possam estar presentes no algoritmo), "OHLC M1" já contém redundância suficiente para testes confiáveis.
Saudações.
1. Se presumirmos que encontramos um padrão geral que funciona de forma aproximadamente igual em cada um dos N instrumentos, a capacidade do sistema em termos de aumento de instrumentos negociados simultaneamente, com base nos resultados de 1 instrumento, pode ser estimada da seguinte forma:
O = Z * Tcr * ( 1 + ( N - 1 ) * Corr ) / Tp,
onde
Z - número de negociações (série de negócios) para um instrumento,
Tcr - duração média de uma negociação em dias,
N - Número de instrumentos,
Corr - algum coeficiente de correlação entre eles [0..1],
Tp - período negociado em dias.
Se O for menor que um, é mais provável que o drawdown máximo não aumente com o aumento do número de instrumentos negociados simultaneamente, e o lucro total tenderá a aumentar em N vezes.
Para negociar cem instrumentos de uma só vez, será necessário garantir o tempo mínimo de permanência em uma negociação (o que é muito difícil para uma estratégia de contra-tendência) e a correlação mínima dos instrumentos negociados (o que também é difícil). Bem, ou o sinal para entrar aparece tão raramente que é difícil falar sobre o sistema.
2. Fiz um esboço e testei apressadamente o "fechamento parcial" ao negociar vários símbolos. Os rebaixamentos diminuíram, o gráfico de patrimônio está mais próximo do gráfico de equilíbrio. Mas ainda aparecem grandes rebaixamentos. Não com a mesma profundidade e um pouco nos lugares errados quando comparados sem o "fechamento parcial".
Para fazer com que o corte de cauda (fechamento das séries mais não lucrativas ou parte delas) funcione regularmente e bem, é necessário alimentar constantemente o saldo com séries fechadas com sucesso, e esse influxo deve ser suficiente para fechar o menos e deixar 20% no bolso (no saldo). Mas quando existe esse mecanismo de entrega de lucros em séries "juniores", não faz sentido envolver-se em séries "sênior".
Se considerarmos as séries bloqueadas em um instrumento, quando, por exemplo, realizamos uma compra negativa (1) e fechamos várias vendas (2), isso não funcionou para mim (quero dizer, um resultado positivo estável por um longo período). Não estou fazendo campanha para nada, e sem matemática, exclusivamente para isso: "...eu verifiquei...". :)
Em geral, o sistema tem uma assimetria acentuada. No caso de um movimento desfavorável, a posição se acumula. Nesse caso, a porcentagem de entradas corretas deve ser muito maior do que as erradas, ou deve-se esperar um recuo suficiente ou reservas significativas para o drawdown. Por outro lado, é possível aumentar a posição em cada bloco formado, tanto contra a entrada quanto em direção ao lucro. Desde que todas as séries sejam fechadas com o lucro total planejado, essa decisão produz melhores resultados. Além disso, a entrada somente nos blocos de "cauda" diminui o drawdown.
O sistema é interessante, pois é muito variável em diferentes direções. Por exemplo, estou testando os seguintes parâmetros:
-Blocks:
-- número mínimo e máximo de etapas para procurar tendências/flattening (8 - é uma seção muito curta? 50 - preciso de tantas?),
-- tamanho do conjunto de blocos, início e etapa da mudança de elevação no conjunto,
-- onde traçar o limite entre tendência e achatamento,
E também:
-Na abertura:
-- se deve usar o controle de cobertura de ativos (para um determinado conjunto de instrumentos com correlação aceitável, é melhor não ter controle),
-- se deve trabalhar com sinais de reversão (acho que é melhor trabalhar na direção original ou sair, mas não dar meia-volta),
-- se for um sinal, entrar no bloco contra o movimento, no movimento ou em ambos os casos (isso varia aqui)
-- volume de entrada: lote fixo, ou valor fixo do bloco atual, ou a partir do valor fixo do bloco de tamanho máximo
-- o que fazer ao perder um sinal: fechar, procurar um novo em outros parâmetros, continuar no último,
-- ao fechar:
-- planejo sair da série por TP com base em expectativas estáticas do movimento, ou por um determinado lucro em $ relativo ao valor do bloco (por exemplo, quero $10 de qualquer série, independentemente de rebaixamentos e acúmulo)
-- se devo usar o lucro total de todas as séries abertas e em que volume relativo ao valor do bloco (30 no total de todas as séries e fechar?)
-- se deve ser usado um mecanismo de fechamento parcial.
Está claro que o autor não fez essas perguntas, e talvez tudo isso seja desnecessário. É claro que estou distorcendo o sistema na medida em que o entendo e a qualidade de sua implementação. Mas gosto do sistema em si e do processo de seu estudo, graças ao autor, que acompanho com interesse.
Todas as perguntas-parâmetros exigem testes múltiplos, o que é muito difícil na versão original da construção de blocos (grande quantidade de cálculos). Tentei simplificar os cálculos e a construção de conjuntos de blocos (usando datas de referência fixas raras para o cálculo, em vez de cálculos a partir da última barra). A velocidade de cálculo é quase cosmos, mas, infelizmente, notei uma deterioração na qualidade dos sinais recebidos :( Agora estou pensando em como combinar...
Também descobri que o controle volumétrico funciona melhor do que o controle binário ao controlar hedges por ativos. Binário - quando controlamos apenas a direção das posições abertas por moeda, sem levar em conta o volume. Volumétrico - calculo o análogo da guia "Ativos" e abro novas posições a partir do zero ou contra o valor acumulado. (A propósito, existe um meio padrão de obter dados dessa guia em MQL5?)
De alguma forma, em geral.
P.S. Quando o sistema é projetado para tomar decisões em barras formadas (apenas na abertura), não tem SLs e TPs marcados em posições (embora possam estar presentes no algoritmo), "OHLC M1" já contém redundância suficiente para testes confiáveis.
Interessante. Concordo com a fórmula para estimar o drawdown, em geral a lógica está correta.
Quanto à entrada de séries fechadas, a lógica também está correta, novas séries devem ser fechadas com a maior frequência possível. Aqui, precisamos melhorar a qualidade do próprio algoritmo, para que ele entre em séries não lucrativas o mais raramente possível. Para isso, é necessário refinar os algoritmos de escalonamento. Eu o refinei na nova versão e ele já começou a funcionar muito melhor. A ideia é que você precisa de uma base teórica de preços que descreva o que e como o mercado funciona. Quanto melhor for o modelo teórico, menores serão os drawdowns e a correlação entre os instrumentos.
As posições bloqueadas fazem sentido, funciona pior sem elas do que com elas (em meu algoritmo). Mas somente nos instrumentos para os quais o crescimento e o declínio são simétricos. Para instrumentos assimétricos, você precisa usar parâmetros assimétricos para gerar um sinal para posições longas e curtas. É por isso que, por enquanto, só são permitidas posições compradas em ações, de modo que séries adicionais não podem ser bloqueadas. O bloqueio é uma mecânica condicional, que é necessária para a visualização e para facilitar o raciocínio. Na realidade, ao negociar com compensação, é claro que não há bloqueios.
Idealmente, esse algoritmo e os bloqueios não são necessários, é preciso calcular os pontos de maior probabilidade de reversão de preço com base nos dados do mercado. Mas é assim que está sendo feito até agora. Quando a base teórica atingir o nível necessário, o algoritmo será simplificado.
De acordo com minhas observações, faz sentido construir uma posição somente contra o movimento do preço. Se a posição for de compra, então compre apenas em cada bloco de queda. Essa abordagem, por si só, leva a expectativa a um ponto positivo, sem tudo por causa de algumas peculiaridades teóricas do movimento de preços. Ou seja, o sentido é inerente à negociação contra a tendência na direção da tendência principal. É sempre mais lucrativo comprar um ativo em sua queda e vender em seu crescimento.
Teses:
- O número mínimo e máximo de etapas não depende das características do mercado, mas depende apenas dos parâmetros do algoritmo. Quanto menor o tamanho da etapa, menor a precisão; quanto maior o tamanho da etapa, maior a precisão, mas mais posições serão abertas. Os blocos são uma convenção criada para melhorar a visualização. Você pode reformular o sistema de modo a analisar uma janela de 100 blocos, mas os resultados da negociação serão semelhantes aos de uma janela de 24 blocos. Eu fiz dessa forma.
- O tamanho do bloco é escolhido para ser o mínimo, no qual o lucro é possível, levando em conta as comissões e os erros de fechamento do bloco (devido ao fato de que os candlesticks são usados para análise). Um recurso importante não foi descrito aqui. À medida que o tamanho do bloco diminui, a porcentagem de sobrepeso deve aumentar, justamente por causa desse erro de tendência, que ocorre porque o preço de fechamento do candlestick não coincide com o preço de fechamento do bloco. Ainda não fiz isso, mas planejo fazê-lo no futuro. Isso melhorará significativamente a qualidade dos sinais. Mas o tamanho do bloco em si deve ser escolhido com base nos parâmetros do mercado. Ele deve mudar de acordo com as estatísticas anteriores do mercado. Há uma peculiaridade que pode ajudar a corrigir a escala antes do início da série.
- Não há limite entre tendência e flat, é uma convenção, baseada no fato de que, em média, a probabilidade do mercado de mudar a direção de cada etapa seguinte é de cerca de 50%. Mas há instrumentos que têm menos de 50%, ou seja, estão em tendência. Os desvios locais são usados e, no futuro, retornarão à sua média. Porque, se esse não for o caso, você pode ganhar dinheiro imediatamente com algoritmos mais simples.
- Eu uso o controle de hedge de ativos na abertura.
- O sinal de reversão não é trabalhado, depois do fechamento tudo começa de novo, mas também não é tão simples aqui. Você precisa trabalhar nisso, mas a base teórica ainda não está pronta para isso.
- entrar somente contra o movimento
- O volume de entrada é uma questão importante. Ele deve ser corrigido. Desenvolvi vários métodos de correção. Separadamente para ações e para moeda, o mecanismo não é simples. No caso das ações, você precisa ajustar o volume do portfólio e, no caso das moedas, também. O preço do bloco deve ser aproximadamente o mesmo para todos os instrumentos. Você não deve negociar em lotes, mas em dólares e ajustar os lotes a partir do volume da transação em dólares. A própria negociação com o número fixo de dólares (em ações) aumenta a expectativa. Com relação às moedas, ainda não desenvolvi um modelo teórico. O volume depende do tamanho da escala? Planejo implementar e testar isso na nova versão, mas até agora o processo não chegou a esse ponto.
- Quando um sinal é perdido, eu recomeço.
- A saída da série é planejada com base nos movimentos estatísticos e no ponto de fechamento teórico. Se perdermos o ponto de fechamento devido a fatores não contabilizados, os mecanismos de compensação das posições perdidas funcionam. Quanto melhor for o modelo teórico, menos frequentemente erraremos. A correção de US$ 10 leva o sistema de volta à expectativa 0 devido à randomização.
- Acho que podemos usar o lucro total, mas ele também deve ser dinâmico. Ou seja, ele deve ser fechado somente se houver um desvio significativo do lucro total em relação à variação aleatória (um pico de preço acentuado). Isso faz sentido do ponto de vista lógico.
- Eu estava planejando experimentar o mecanismo de fechamento parcial. Mas ainda não sei como ele funcionará. Eu queria usá-lo ao me aproximar do ponto de fechamento teórico. Não é um lucro absoluto, mas um fechamento gradual das posições no intervalo de +- 10% do ponto de fechamento. Essa é uma porcentagem condicional. Ela terá de ser calculada com base em alguma coisa, mas ainda não lidei com essa questão de perto.
É uma solução interessante em relação ao controle de hedge volumétrico, eu mesmo não pensei nisso).
O sistema foi projetado para funcionar em m1 ohlc, mais tarde mostrarei como ele difere no modo ohlc e no modo de ticks reais. Eu o criei especialmente para ser insensível à qualidade do histórico e às interrupções do servidor durante a negociação.
Aqui você está mostrando vários gráficos, ao longo de vários anos.
Se quiser que seu TS seja avaliado, mostre pelo menos os resultados do teste NÃO em carrapatos (Every Tick), mas em carrapatos reais ( Every tick based on real ticks), pelo menos para este ano, para 3-4 pares.
Isso também é difícil?
Aqui estão dois testes, conforme prometido. O primeiro no modo OHLC 2020-2021 GBPUSD m1
e o segundo teste no mesmo período e instrumento, mas no modo de ticks reais de uma conta real.
Podemos ver que o lucro por ticks é um pouco maior, o drawdown é um pouco menor, as negociações são praticamente as mesmas, o gráfico de lucratividade é quase o mesmo.
É compreensível, pois tecnicamente o robô é feito para funcionar de acordo com o OHLC e, no modo de ticks, ele funciona um pouco melhor devido à maior precisão. Mas esses são aspectos puramente técnicos. Não vou testá-lo por um período mais longo e em um número maior de instrumentos, pois não faz sentido, e leva uma hora e meia para executar um instrumento.
e leva uma hora e meia para executar um instrumento.
Por que ele é tão lento? Tenho certeza de que você pode acelerá-lo sem perder a funcionalidade.
Por que ele é tão lento? Tenho certeza de que você pode acelerá-lo sem perder a funcionalidade.
Também acho que é possível aumentar a velocidade, mas ainda não fiz isso, pois ainda estou tendo problemas para concluir a funcionalidade principal..... Implementarei todas as modificações desenvolvidas, levarei o sistema a uma relação risco/lucro adequada e, em seguida, começarei a otimizar o consumo de recursos. Ainda falta um pouco no plano algorítmico e muito em termos de trabalho.
Também acho que é possível aumentar a velocidade, mas ainda não o fiz, pois tenho problemas para concluir a funcionalidade básica..... Implementarei todas as modificações que desenvolvi, levarei o sistema a uma relação risco/lucro adequada e, em seguida, começarei a otimizar o consumo de recursos. Ainda falta um pouco no plano algorítmico e falta muito em termos de trabalho.
O desenvolvimento não seria mais rápido se o Expert Advisor pudesse ser testado rapidamente? Isso depende do proprietário.
Aqui estão dois testes, conforme prometido. O primeiro no modo OHLC 2020-2021 GBPUSD m1
e o segundo teste no mesmo período e instrumento, mas no modo de ticks reais de uma conta real.
Pode-se observar que o lucro por ticks é um pouco maior, o drawdown é um pouco menor, as negociações são praticamente as mesmas, o gráfico de lucratividade é quase o mesmo.
É compreensível, pois tecnicamente o robô é feito para funcionar de acordo com o OHLC e, no modo de ticks, ele funciona um pouco melhor devido à maior precisão. Mas esses são aspectos puramente técnicos. Não vou testá-lo por um período mais longo e em um número maior de instrumentos, pois não faz sentido, e leva uma hora e meia para executar um instrumento.
Obrigado.
Se os dois gráficos forem semelhantes, se você filtrar os ticks dentro de 1 minuto, o resultado será o mesmo.
Você declara que seu algoritmo funciona igualmente em todos os pares de moedas, mas nunca viu um teste em todos os símbolos do Market Watch.
E o algoritmo autoadaptativo não deve ter nenhum parâmetro fixo, como intervalos de tempo, níveis fixos ou número de pips, para abrir/fechar ordens.
O desenvolvimento não seria mais rápido se o EA pudesse ser testado rapidamente? Isso depende do proprietário.
O desenvolvimento seria definitivamente mais rápido se houvesse um especialista que o fizesse rapidamente, e não metade da funcionalidade em um ano e depois com problemas.
O desenvolvimento seria definitivamente mais rápido se houvesse um especialista que o fizesse rapidamente, e não metade da funcionalidade em um ano e depois com problemas.
Não é um problema acelerar o algoritmo. Aqueles que estavam envolvidos em tarefas de otimização farão isso rapidamente.
A questão é diferente. Há alguns valores fixos em seus desenhos. Eu os marquei.
De ondevocê tirou esses valores? Se os valores fixos forem usados na negociação, você terá que alterá-los o tempo todo.
Acelerar o algoritmo não é um problema. Aqueles que se envolveram em tarefas de otimização o farão rapidamente.
É uma questão diferente. Há alguns valores fixos em seus desenhos. Eu os marquei.
Como você obtém esses valores? Se você usar valores fixos na negociação, terá que alterá-los o tempo todo.