Friday, 31 August 2018

Estratégias de negociação adaptativa


Sinais de Negociação Sinais de Negociação para Futuros de SP Os Sinais de Negociação ATS são projetados para prever antecipadamente as tendências de curto prazo do dia de negociação de futuros de SPES 1. Os sinais comerciais baixados à noite são aplicáveis ​​no final da sessão do dia no dia de negociação seguinte. Os sinais de negociação gerados por modelos individuais, bem como conjuntos de modelos estão incluídos. O período médio de comércio para modelos individuais varia de 3 a 350 dias de negociação. Os sistemas de negociação construídos usando conjuntos de modelos individuais fornecem previsões das tendências de curto prazo, médio e longo prazo. Indicadores Técnicos Os Indicadores Técnicos do ATS são projetados para serem indicadores líderes das tendências diárias de preços de segurança. Os indicadores SIP (Preditores do Índice de Ações) foram projetados para serem preditivos dos contratos de futuros da SPES. O conjunto de indicadores SIP inclui os seguintes sete indicadores: Pressão de pressão de pressão Pressão líquida Pressão de alta compra Pressão de alta pressão Pressão de avanço Pressão de queda Os indicadores de ATS podem ser traçados juntamente com a segurança correspondente usando uma aplicação como a AmiBroker. O poder preditivo dos indicadores pode ser facilmente avaliado. Outra abordagem é usar os indicadores como entradas ao construir modelos de rede neural. Existem muitas possibilidades. Como baixar os sinais de negociação ATS Mercury é o aplicativo que é usado para baixar os sinais e indicadores de negociação ATS. Este aplicativo é fornecido gratuitamente. ATS Mercury é instalado com o ID de usuário padrão do convidado. A conta de convidado é capaz de baixar um histórico dos Indicadores ATS, no entanto, será adiada por 1 dia de negociação. Por exemplo, ao usar a conta de convidado para baixar os valores do sinal em uma noite de quarta-feira, apenas os sinais até terça-feira (o dia de negociação anterior) estarão disponíveis. Nota: Os arquivos de sinal serão salvos na pasta C: Indicadores DataATS por padrão. Exemplo de Estratégia de Negociação O indicador SIP2 Net Pressure (SIP2NP) foi publicado pela primeira vez em 30 de maio de 2017, juntamente com os outros indicadores SIP2. A estratégia de negociação deve ser longa nos futuros do SP quando o indicador SIP2NP é maior ou igual a 0,6 e curto o mercado quando menor ou igual a -0,6. Todas as negociações são MOC hipoteticamente preenchidas no dia da negociação após o dia em que os sistemas são atualizados. A curva de equidade gerada por esta regra simples segue. Os lucros acumulados são em pontos e não incluem comissões ou derrapagens. SIP2NP aplicado aos futuros do SP O gráfico acima é atualizado para 652017. A porcentagem de negociação perfeita é de 18,65 e o sistema de negociação está no mercado cerca de 28 do tempo. Você pode baixar os indicadores e explorar esta estratégia comercial ainda usando o ATS Mercury. Os assinantes do SP Trading Signal e do SIP Indicator service podem baixar os valores do sinal atual. Se você quiser se inscrever, você pode fazê-lo na página Compras de produtos. NOTA. Os resultados de desempenho hipotéticos ou simulados têm limitações inerentes. Ao contrário de um registro de desempenho real, os resultados simulados não representam a negociação real. Além disso, uma vez que as negociações não foram realmente executadas, os resultados podem ter compensado ou compensado o impacto, se houver, de certos fatores do mercado, como a falta de liquidez. Os programas de negociação simulados em geral também estão sujeitos ao fato de serem projetados com o benefício de retrospectiva. Não está sendo feita nenhuma representação de que qualquer conta seja ou seja susceptível de atingir lucros ou perdas semelhantes às mostradas. O desempenho passado de nossos sistemas de negociação, sinais comerciais e software de modelagem, seja real ou indicado por testes históricos simulados de estratégias de negociação, não é indicativo de resultados futuros. 0169 Copyright 2008-2017 AdaptiveTradingSystemsMetaTrader 5 - Sistemas de Negociação Sistemas de Negociação Adaptativa e Seu Uso no MetaTrader 5 Terminal do Cliente Introdução Centenas de milhares de comerciantes em todo o mundo usam as plataformas de negociação desenvolvidas pela MetaQuotes Software Corp. O fator chave que leva ao sucesso é o Superioridade tecnológica com base na experiência de muitos anos e as melhores soluções de software. Muitas pessoas já estimaram novas oportunidades que se tornaram disponíveis com o novo idioma MQL5. Suas principais características são o alto desempenho e a possibilidade de usar a programação orientada a objetos. Além disso, com a aparição do testador de estratégia multi-moeda no terminal do cliente MetaTrader 5, muitos comerciantes adquiriram ferramentas exclusivas para desenvolver, aprender e usar sistemas comerciais complexos. O Automated Trading Championship 2018 começa neste outono, milhares de robôs comerciais escritos no MQL5 vão participar dele. Um consultor especialista que ganhe o lucro máximo durante a competição vencerá. Mas qual estratégia irá aparecer a mais eficaz. O testador de estratégia do terminal MetaTrader 5 permite encontrar o melhor conjunto de parâmetros, usando o qual o sistema ganha o máximo de lucro durante um período de tempo especificado. Mas pode ser feito em tempo real. A idéia do comércio virtual usando várias estratégias em um Consultor Especialista foi considerada no Concurso de Consultores Especialistas dentro de um artigo do Consultor Especialista, que contém sua implementação no MQL4. Neste artigo, vamos mostrar que a criação e análise de estratégias adaptativas tornou-se significativamente mais fácil no MQL5 devido ao uso de programação orientada a objetos. Aulas para trabalhar com classes de dados e comércio da Biblioteca Padrão. 1. Estratégias de negociação adaptativa Os mercados mudam constantemente. As estratégias comerciais precisam de sua adaptação às atuais condições do mercado. Os valores de parâmetros que dão a máxima rentabilidade da estratégia podem ser encontrados sem usar a otimização através de mudanças sequenciais de parâmetros e análise de resultados de testes. A Figura 1 demonstra as curvas de equidade para dez Expert Advisors (MA3. MA93), cada uma delas negociada pela estratégia de médias móveis, mas com períodos diferentes (3,13,93). O teste foi realizado em EURUSD H1, o período de teste é 4.01.2018-20.08.2018. Figura 1. Diagramas de curvas de equidade de dez consultores especializados na conta Como você pode ver na Figura 1, os Expert Advisors tiveram quase os mesmos resultados durante as duas primeiras semanas de trabalho, mas seus lucros começaram a divergir significativamente. No final do período de teste, os melhores resultados comerciais foram exibidos pelos Expert Advisors com os períodos 63, 53 e 43. O mercado escolheu os melhores. Por que não devemos seguir a sua escolha? E se combinarmos as dez estratégias em um único Consultor Especialista, ofereça a possibilidade de negociação virtual para cada estratégia e, periodicamente (por exemplo, no início de cada nova barra), determine a melhor estratégia para o real Negociação e comércio de acordo com seus sinais Os resultados da estratégia de adaptação obtida são mostrados na Figura 2. A curva de patrimônio da conta com negociação adaptativa é mostrada com a cor vermelha. Note-se que, durante mais de metade do período, a forma de curva de equidade para a estratégia adaptativa é a mesma da estratégia MA63, que finalmente pareceu ser o vencedor. Figura 2. Curvas de equidade na conta com a estratégia adaptativa que usa sinais de 10 sistemas comerciais As curvas de equilíbrio têm a dinâmica semelhante (Figura 3): Figura 3. Curvas de equilíbrio da estratégia adaptativa que usa sinais de 10 sistemas comerciais Se nenhum Das estratégias é lucrativo no momento, os sistemas adaptativos não devem realizar operações comerciais. O exemplo de tal caso é mostrado na fig. 4 (período de 4 a 22 de janeiro de 2018). Figura 4. O período de tempo em que a estratégia adaptativa parou de abrir novas posições devido à ausência de estratégias rentáveis ​​A partir de janeiro de 2018, a estratégia MA3 mostra a melhor eficácia. Como o MA3 (azul) teve o máximo de dinheiro obtido nesse momento, a estratégia adaptativa (vermelha) seguiu seus sinais. No período de 8 a 20 de janeiro, todas as estratégias consideradas tiveram um resultado negativo, por isso a estratégia adaptativa não abriu novas posições comerciais. Se todas as estratégias tiverem um resultado negativo, é melhor ficar longe de negociar. Esta é a coisa importante que permite interromper o comércio não lucrativo e manter seu dinheiro economizado. 2. Implementação da Estratégia de Negociação Adaptativa Nesta seção, vamos considerar a estrutura da estratégia adaptativa que executa a negociação virtual usando várias estratégias comerciais simultaneamente e escolhe a mais rentável para negociação real de acordo com seus sinais. Observe que o uso da abordagem orientada a objetos torna a solução desse problema significativamente mais fácil. Em primeiro lugar, vamos investigar o código do Advisor Adversário adaptável, então vamos examinar detalhadamente o CAdaptiveStrategy onde a funcionalidade do sistema adaptativo é implementada, e então mostraremos a estrutura da classe CSampleStrategy - a Classe base das estratégias de comércio onde a funcionalidade do comércio virtual é implementada. Além disso, iriam considerar o código de duas de suas crianças - as classes CStrategyMA e CStrategyStoch que representam as estratégias de negociação por médias móveis e o oscilador estocástico. Depois de analisar sua estrutura, você poderá escrever facilmente e adicionar suas próprias aulas que realizem suas estratégias. 2.1. Código do consultor especialista O código do consultor especialista parece muito simples: as três primeiras linhas definem as propriedades do programa. Então vem a diretiva de inclusão que informa o pré-processador para incluir o arquivo CAdaptiveStrategy. mqh. Os suportes de ângulo especificam que o arquivo deve ser retirado do diretório padrão (geralmente, é terminalfolderMQL5Include). A próxima linha contém a declaração do objeto AdaptiveExpert (instância da classe CAdaptiveStrategy) e o código do OnInit. As funções OnDeinit e OnTick do Expert Advisor consistem nas chamadas das funções correspondentes ExpertOnInit, ExpertOnDeInit e ExpertOnTick e do objeto AdaptiveExpert. 2.2. A classe CAdaptiveStrategy A classe de Expert Advisor adaptativo (classe CAdaptiveStrategy) está localizada no arquivo CAdaptiveStrategy. mqh. Vamos começar com os arquivos de inclusão: A razão pela qual incluímos o arquivo ArrayObj. mqh é a conveniência de trabalhar com classes de estratégias diferentes usando o objeto da classe CArrayObj, que representa uma matriz dinâmica de ponteiros para as instâncias de classe geradas pela base Classe CObject e seus filhos. Este objeto será o conjunto de estratégias, será usado um contêiner de estratégias comerciais. Cada estratégia é representada como uma classe. Nesse caso, incluímos os arquivos que contêm as classes CStrategyMA e CStrategyStoch, que representam as estratégias de negociação, movendo médias e negociando pelo oscilador estocástico. Para solicitar propriedades das posições atuais e para realizar operações comerciais, usaremos as classes CPositionInfo e CTrade da biblioteca Padrão, por isso incluímos os arquivos PositionInfo. mqh e Trade. mqh. Vamos dar uma olhada na estrutura da classe CAdaptiveStrategy. Para implementar uma abordagem unida aos objetos de diferentes classes, as estratégias comerciais (ou melhor, as instâncias de suas classes) são armazenadas nas estratégias mallstrategies da matriz dinâmica (do tipo CArrayObj), que é usada como um contêiner de classes das estratégias. Esta é a razão pela qual a classe de estratégias comerciais SampleStrategy é gerada a partir da classe CObject. A função ProceedSignalReal implementa a sincronização da direção e do volume de uma posição real com a direção e o volume fornecidos: Observe que é mais fácil trabalhar com a posição comercial usando as classes comerciais. Usamos os objetos das classes CPositionInfo e CTrade para solicitar as propriedades da posição de mercado e para realizar operações comerciais, respectivamente. A função RealPositionDirection solicita os parâmetros da posição aberta real e retorna sua direção: agora iria dar uma olhada nas principais funções da classe AdaptiveStrategy. Comece com a função ExpertOnInit: O conjunto de estratégias de negociação é preparado na função ExpertOnInit. Em primeiro lugar, o objeto da matriz dinâmica de mallstrategies é criado. Nesse caso, criamos dez instâncias da classe CStrategyMA. Cada um deles foi inicializado (neste caso, estabelecemos períodos diferentes e permitimos o comércio virtual) usando a função Inicialização. Então, usando a função SetStrategyInfo definimos o instrumento financeiro, o nome da estratégia e o comentário. Se necessário, usando a função SetStops (TP, SL), podemos especificar um valor (em pontos) de Take Profit e Stop Loss, que será executado durante a negociação virtual. Nós comentamos essa linha. Uma vez que a classe de estratégia é criada e ajustada, nós a adicionamos ao contêiner mallstrategies. Todas as classes de estratégias comerciais devem ter a função CheckTradeConditions () que executa as verificações das condições de negociação. Na classe da estratégia adaptativa, esta função é chamada no início de cada nova barra, portanto, damos às estratégias a possibilidade de verificar os valores dos indicadores e fazer as operações do comércio virtual. Em vez de dez médias móveis especificadas (3, 13, 23. 93), podemos adicionar centenas de médias móveis (instâncias se a classe CStrategyMA): Ou podemos adicionar as classes de estratégia que funcionam pelos sinais do oscilador estocástico (instâncias de A classe CStrategyStoch): neste caso, o contêiner inclui 10 estratégias de médias móveis e 5 estratégias do oscilador estocástico. As instâncias de classes de estratégias de negociação devem ser os filhos da classe CObject e devem conter a função CheckTradeConditions (). É melhor herdá-los da classe CSampleStrategy. Classes que implementam estratégias de comércio podem ser diferentes e seu número não é limitado. A função ExpertOnInit termina com a lista de estratégias que estão presentes no contêiner mallstrategies. Observe que todas as estratégias no recipiente são consideradas como crianças da classe CSampleStrategy. As classes de estratégias comerciais CStrategyMA e CStrategyStoch também são seus filhos. O mesmo truque é usado na função ExpertOnDeInit. No recipiente, chamamos a função SaveVirtualDeals para cada estratégia que armazena o histórico de negócios virtuais executados. Usamos o nome da estratégia para o nome do arquivo que é passado como um parâmetro. Em seguida, desinitializamos as estratégias chamando a função Deinitialization () e excluindo o contêiner mallstrategies: Se você não precisa saber sobre os negócios virtuais realizados pelas estratégias, remova a linha onde tStrategy. SaveVirtualDeals é chamado. Observe que, ao usar o testador de estratégia, os arquivos são salvos no diretório testerdirectoryFiles. Vamos considerar a função ExpertOnTick da classe CAdaptiveStrategy que é chamada cada vez que vem um novo tiquete: o código é muito simples. Cada estratégia, localizada no recipiente, deve ser capaz de recalcular o resultado financeiro atual de suas posições virtuais usando os preços atuais. É feito chamando a função UpdatePositionData (). Aqui, mais uma vez chamamos as estratégias como herdeiros da classe CSampleStrategy. Todas as operações comerciais são realizadas no início de uma nova barra (a função IsNewBar () permite determinar esse momento, bem como os outros métodos de verificação da barra nova). Nesse caso, o fim da formação de uma barra significa que todos os dados da barra anterior (preços e valores dos indicadores) não serão mais alterados, portanto, podem ser analisados ​​sobre a correspondência com as condições de negociação. Para todas as estratégias, damos a oportunidade de realizar esse cheque e realizar suas operações de comércio virtual ao chamar a função CheckTradeConditions. Agora, devemos encontrar a estratégia mais bem sucedida entre todas as estratégias na matriz de estratégias. Para fazer isso, usamos a matriz de desempenho, os valores que são retornados pela função StrategyPerformance () de cada estratégia são colocados nela. A classe base CSampleStrategy contém esta função como a diferença entre os valores atuais de Equidade e Equilíbrio virtual. A pesquisa do índice da estratégia mais bem sucedida é realizada usando a função ArrayMaximum. Se a melhor estratégia tiver um lucro negativo no momento e não tiver posições abertas reais, é melhor não trocar, é por isso que saimos da função (ver seção 1). Além disso, solicitamos a direção da posição virtual dessa estratégia (bestdirection). Se difere da direção atual da posição real, a direção atual da posição real será corrigida (usando a função ProceedSignalReal) de acordo com a direção de melhor direção. 2.3. As estratégias de classe CSampleStrategy colocadas no contêiner mallstrategies foram consideradas como os herdeiros da classe CSampleStrategy. Esta classe é a base para as estratégias comerciais que contém a implementação do comércio virtual. Neste artigo, consideraremos um caso simplificado de implementação de negociação virtual, os swaps não serão considerados. As classes de estratégias comerciais devem ser herdadas da classe CSampleStrategy. Permite mostrar a estrutura desta classe. Nós não analisaremos sua descrição detalhada, informações adicionais podem ser encontradas no arquivo CSampleStrategy. mqh. Lá, você também pode encontrar a função de verificar a nova barra - IsNewBar. 3. Classes de Estratégias Comerciais Esta seção é dedicada à estrutura de classes de estratégias comerciais que são usadas no Advisor Especializado em Adaptação. 3.1. Classe CStrategyMA - Estratégia de negociação por médias móveis A classe CStrategyMA é um filho da classe CSampleStrategy onde a funcionalidade completa da negociação virtual é implementada. A seção protegida contém variáveis ​​internas que serão usadas na classe da estratégia. Estes são: mhandle - lidar com o indicador iMA, mperiod - período da média móvel, mvalues ​​- matriz que será usada na função CheckTradeConditions para obter os valores atuais do indicador. A seção pública contém três funções que fornecem a implementação da estratégia comercial. Inicialização das funções. A estratégia é inicializada aqui. Se você precisa criar indicadores, crie-os aqui. Desinitialização de funções. A estratégia está desinitializada aqui. Os manuais de indicadores são lançados aqui. Função heckCondições de venda. Aqui, a estratégia verifica as condições de negociação e gera sinais comerciais que são usados ​​para a negociação virtual. Para executar operações de comércio virtual, a função SetSignalState da classe pai CStrategy é chamada de um dos quatro seguintes sinais comerciais: é o sinal para abrir uma posição longa (SIGNALOPENLONG) O sinal para abrir uma posição curta (SIGNALOPENSHORT) O sinal para fechar uma posição longa (SIGNALCLOSELONG) O sinal para fechar uma posição curta (SIGNALCLOSESHORT) O conceito é simples - com base em estados indicadores e preços, o tipo de sinal (newstate) é determinado, então o estado atual do virtual A negociação é solicitada (usando a função GetSignalState) e se eles não são os mesmos, a função SetSignalState é chamada para corrigir a posição virtual. 3.2. Clase CStrategyStoch - Estratégia de negociação por estocástico O código da classe que executa a negociação com base na interseção das linhas principais e de sinal do oscilador iStochastic é dado abaixo: como você vê, as únicas diferenças entre a estrutura da classe CStrategyStoch E o de CStrategyMA são a função de inicialização (diferentes parâmetros), o tipo de indicador usado e os sinais comerciais. Assim, para usar suas estratégias no Advisor Especialista adaptativo, você deve reescrevê-los na forma de classes desse tipo e carregá-los no contêiner mallstrategies. 4. Resultados da Análise das Estratégias de Comércio Adaptativo Nesta seção, foram discutidos vários aspectos do uso prático das estratégias adaptativas e os métodos para melhorá-las. 4.1. Melhorando o sistema com estratégias que utilizam sinais invertidos As médias móveis não são boas quando não há tendências. Nós já conhecemos esse tipo de situação - na figura 3, você pode ver que não houve tendência dentro do período de 8 a 20 de janeiro, então as 10 estratégias que usam as médias móveis na negociação tiveram uma perda virtual. O sistema adaptativo interrompeu a negociação como resultado da ausência de uma estratégia com a quantidade positiva de dinheiro obtido. Existe alguma maneira de evitar esse efeito negativo. Vamos adicionar às nossas 10 estratégias (MA3, MA13. MA93) outras 10 classes CStrategyMAinv. Cujos sinais comerciais são revertidos (as condições são as mesmas, mas SIGNALOPENLONGSIGNALOPENSHORT e SIGNALCLOSELONGSIGNALCLOSESHORT trocaram seus lugares). Assim, além de dez estratégias de tendência (instâncias da classe CStrategyMA), temos outras dez estratégias de contra-tendência (instâncias da classe CStrategyMAinv). O resultado do uso do sistema adaptativo que consiste em vinte estratégias é mostrado na figura 5. Figura 5. Diagramas de equidade na conta da estratégia adaptativa que usa 20 sinais comerciais: 10 médias móveis CAdaptiveMA e 10 espelhadas. CAdaptiveMAinv Como você pode Veja na figura 5, durante o período em que todas as estratégias CAdaptiveMA tiveram um resultado negativo, seguindo as estratégias CAdaptiveMAinv permitiu que o Consultor Especial evitasse os levantamentos indesejados no início da negociação. Figura 6. Período de tempo em que a estratégia adaptativa usou os sinais das estratégias CAdaptiveMAinv contra-tendência. Esse tipo de abordagem pode parecer inaceitável, uma vez que perder o depósito é apenas uma questão de tempo ao usar uma estratégia de contra-tendência. No entanto, no nosso caso, não foram limitados com uma única estratégia. O mercado sabe melhor quais estratégias são efetivas no momento. O lado forte dos sistemas adaptativos é que o mercado sugere, por si só, qual estratégia deve ser usada e quando deve ser usada. Dá a possibilidade de abstrair da lógica das estratégias - se uma estratégia é eficaz, então a maneira como ela funciona não tem significado. A abordagem adaptativa utiliza o único critério de sucesso de uma estratégia - sua efetividade. 4.2. Vale a pena inverter os sinais da pior estratégia O truque com inversão mostrada acima conduz a um pensamento sobre a possibilidade potencial de usar os sinais da pior estratégia. Se uma estratégia não é lucrativa (e a pior delas), então podemos obter lucro ao agir em sentido inverso. Podemos transformar uma estratégia perdedora em uma rentável por uma simples mudança de seus sinais. Para responder a essa pergunta, precisamos mudar ArrayMaximum com ArrayMinimum na função ExpertOnTick () da classe CAdaptiveStrategy, bem como para implementar a mudança de direção multiplicando o valor da variável BestDirection por -1. Além disso, precisamos comentar a limitação do comércio virtual em caso de efetividade negativa (já que vamos analisar o resultado da pior estratégia): o diagrama de equidade do Advisor Especializado em Adaptação que usa os sinais reversos da pior estratégia é Mostrado na figura 7: Figura 7. Diagramas de equidade nas contas de dez estratégias e sistema adaptativo que utiliza os sinais reversos do pior sistema. Neste caso, a estratégia menos bem sucedida na maior parte do tempo foi a baseada na interseção De médias móveis com o período 3 (MA3). Como você pode ver na figura 7, existe a correlação inversa entre MA3 (azul) e a estratégia adaptativa (cor vermelha). Mas o resultado financeiro do sistema adaptativo não impressiona. Copiar (e reverter) os sinais da pior estratégia não levam a melhorar a eficácia da negociação. 4.2. Por que o Bando de médias móveis não é tão eficaz quanto parece, em vez de 10 médias móveis, você pode usar muitos deles, adicionando mais de cem das estratégias CStrategyMA com diferentes períodos para o contêiner mallstrategies. Para fazê-lo, altere ligeiramente o código na classe CAdaptiveStrategy: No entanto, você deve entender que as médias móveis próximas inevitavelmente se cruzarão, o líder mudará constantemente e o sistema adaptativo irá mudar seus estados e abrir as posições mais rápidas do que é necessário. Como resultado, as características do sistema adaptativo serão pior. Você pode se certificar disso sozinho, comparando as características estatísticas do sistema (a guia Resultados do testador de estratégia). É melhor não criar sistemas adaptativos com base em muitas estratégias com parâmetros próximos. 5. O que deve ser considerado O contêiner mallstrategies pode incluir milhares de exemplos de estratégias sugeridas, você pode até adicionar todas as estratégias com diferentes parâmetros no entanto, para ganhar o Automated Trading Championship 2018. você precisa desenvolver o sistema avançado de gerenciamento de dinheiro. Observe que usamos o volume de negociação igual a 0,1 lotes para testes em dados de histórico (e no código de classes). 5.1 Como aumentar a rentabilidade do consultor experiente adaptativo A classe CSampleStrategy possui a função virtual MoneyManagementCalculateLots: para gerenciar o volume de negociação, você pode usar a informação estatística sobre os resultados e as características das ofertas virtuais registradas na matriz mdealshistory. Se você precisa aumentar o volume (por exemplo, para dobrá-lo se os últimos negócios virtuais na história do mdeals forem lucrativos ou para diminuí-lo), você deve alterar o valor retornado da maneira correspondente. 5.2 Usando as Estatísticas das Ofertas para o Cálculo do Desempenho da Estratégia A função StrategyPerformance (), implementada na classe CSampleStrategy é destinada ao cálculo do desempenho da estratégia, a fórmula de eficácia de uma estratégia pode ser mais complexa e, por exemplo, incluir a eficácia De entrada, saída, a eficácia de negócios, lucros, remessas, etc. O cálculo da efetividade de entrada, saída e eficácia de negócios (os campos de entrada, exiteff e tradeeff de estruturas da matriz de mdealshistory) é realizado automaticamente durante a Negociação virtual (veja a classe CSampeStrategy). Esta informação estatística pode ser usada para fazer suas próprias taxas mais complexas de eficácia da estratégia. Por exemplo, como características de eficácia, você pode usar o lucro das últimas três promoções (use o campo posProfit do arquivo de ofertas mdealshistory): Se você deseja alterar esta função, altere-a apenas na classe CSampleStrategy, deve ser a O mesmo para todas as estratégias comerciais do sistema adaptativo. No entanto, você deve lembrar que a diferença entre Equidade e Equilíbrio também é um bom fator de eficácia. 5.3 Usando tirar lucro e parar de perdas Você pode alterar a eficácia dos sistemas de negociação definindo níveis de parada fixa (pode ser feito chamando a função SetStops que permite definir os níveis de parada em pontos para negociação virtual). Se os níveis forem especificados, o fechamento das posições virtuais será executado automaticamente, esta funcionalidade é implementada na classe CSampleStrategy. No nosso exemplo (ver 2.2, a função das classes de médias móveis), a função de definir os níveis de parada é comentada. 5.4. Zeroização periódica do lucro virtual acumulado A abordagem adaptativa tem a mesma desvantagem que as estratégias comuns têm. Se a estratégia líder começa a perder, o sistema adaptativo também começa a perder. Essa é a razão pela qual às vezes você precisa de zeroizar os resultados do trabalho de todas as estratégias e fechar todas as suas posições virtuais. Para fazê-lo, as seguintes funções são implementadas na classe CSampleStrategy: CheckPoint desse tipo pode ser usado de tempos em tempos, por exemplo, após cada N barras. Você deve lembrar que o sistema adaptativo não é um grail (USDJPY H1, 4.01.2018-20.08.2018): Figura 8. Curvas de equilíbrio e equidade do sistema adaptativo que usa os sinais das melhores das 10 estratégias (USDJPY H1) Equidade As curvas de todas as estratégias são mostradas na figura 9. Figura 9. Curvas de capital na conta com o sistema adaptativo com base em 10 estratégias (USDJPY H1) Se não houver estratégias rentáveis ​​no sistema adaptativo, usar elas não é efetivo. Use estratégias lucrativas. Devemos considerar outra coisa importante e interessante. Preste atenção ao comportamento da estratégia adaptativa no início da negociação: Figura 10. Curvas de capital na conta com 10 estratégias da estratégia adaptativa No início, todas as estratégias tiveram resultados negativos e a estratégia adaptativa interrompeu a negociação, então começou a alternar Entre estratégias que tiveram um resultado positivo e, em seguida, todas as estratégias tornaram-se inúmeras novamente. Todas as estratégias têm o mesmo equilíbrio no início. E só depois de um tempo, uma ou outra estratégia torna-se um líder, portanto, é recomendável estabelecer uma limitação na estratégia adaptativa para evitar o comércio nas primeiras barras. Para fazê-lo, complete a função ExpertOnTick da classe CAdaptiveStrategy com uma variável, cujo valor é aumentado cada vez que uma nova barra vem. No início, até que o mercado escolha a melhor estratégia, você deve ficar longe da negociação real. Conclusões Neste artigo, consideramos um exemplo do sistema adaptativo que consiste em muitas estratégias, cada uma das quais faz suas próprias operações comerciais virtuais. O comércio real é realizado de acordo com os sinais de uma estratégia mais rentável no momento. Graças ao uso da abordagem orientada a objetos, aulas para trabalhar com classes de dados e comércio da biblioteca padrão, a arquitetura do sistema parece ser simples e escalável agora você pode criar e analisar facilmente sistemas adaptativos que incluem centenas de estratégias comerciais. P. S. Para a análise de conveniência do comportamento de sistemas adaptativos, a versão de depuração da classe CSampleStrategy é anexada (o arquivo adaptive-smql5-sources-debug-en. zip). A diferença desta versão é a criação de arquivos de texto durante o seu trabalho que contêm os relatórios resumidos sobre a dinâmica de mudança de equilíbrio virtual das estratégias incluídas no sistema.

No comments:

Post a Comment