Tempo estimado de leitura: 7 min

O PrescienTrader inclui funções de período múltiplo que se integram à poderosa funcionalidade de análise e backtesting do AmiBroker. Ele também inclui scripts AFL que demonstram como usar as funções de análise. As funções de análise requerem uma assinatura do PrescientAPI Professional.

O vídeo a seguir demonstra como configurar e executar uma exploração. Assista ao vídeo e retorne a este artigo para continuar com o tutorial.

Miniatura

Exploração

Quando você executa uma exploração usando o script PrescienTrader Backtesting incluído, o AmiBroker verifica a lista de instrumentos especificada e o intervalo de datas especificado. Ele gera uma linha para cada combinação de um instrumento e uma data. No exemplo acima, estamos apenas analisando um único instrumento (CHF / JPY) para o período de 1º de outubro a 31 de dezembro de 2018.

Os scripts produzem as seguintes colunas de exploração:

  • Ticker Symbol
  • Data hora
  • Aberto, Alto, Baixo, Fechado, Volume, Interesse aberto
  • Salvou - Esta coluna é destacada em amarelo para qualquer linha usando as configurações de parâmetros salvas. Quando você salva os parâmetros no PrescienTrader, os parâmetros são salvos apenas para o instrumento e o período de tempo selecionados. Isso permite que você use configurações personalizadas de parâmetros para cada instrumento e cada período de tempo. Quando você executa uma exploração, o PrescienTrader aplica automaticamente qualquer configuração de parâmetro personalizada. O destaque amarelo na coluna Salvo é para lembrá-lo de que a linha está usando as configurações salvas, não as que você inseriu na janela Parâmetros.
  • Inclinação PL - Isso indica a inclinação da tendência da linha de pré-inclinação. As inclinações positivas prevêem uma tendência de alta, enquanto as negativas prevêem uma tendência de baixa.
  • Pontuação FLD - A soma dos FLDs para todos os ciclos válidos multiplicados pela força ou amplitude de cada ciclo, dependendo da configuração da base PL. Valores positivos indicam que o mercado está em uma tendência de alta cíclica. Valores negativos indicam que o mercado está em uma tendência de baixa cíclica.
  • Barra de tendências - O número da barra relativa dentro da tendência prevista atual. A primeira barra de uma tendência é a barra zero.
  • Barras de tendência - O número total de barras na tendência prevista atual.
  • Percentual de tendências - A porcentagem de conclusão da tendência prevista atual. Por exemplo, se Barra de tendência = 5 e Barra de tendência = 10, o Pct de tendência seria 50%. Observe que o Trend Pct nunca alcançará 100%, porque isso significaria que uma nova tendência foi iniciada. No ponto de sobreposição entre a tendência antiga e a nova, o Pct de tendência será 0%. Além da exibição numérica, esta coluna também exibe um gráfico de barras que muda de verde para vermelho à medida que a tendência progride.
  • Açao - Este é o sinal, Compra / Venda / Curto / Capa, para a linha atual. Os sinais gerados a partir dos scripts incluídos são simplesmente baseados no Trend Slope. Quando o Trend Slope for positivo, ele exibirá um sinal Buy e, quando o Trend Slope for negativo, o sinal Short será exibido. Isto pretende ser muito simples exemplo de como você pode começar a construir um sistema de negociação usando os indicadores PrescienTrader. NÃO use estes exemplos de sinais para negociação ao vivo, pois você provavelmente perderá dinheiro! A idéia é desenvolver seus próprios sistemas de negociação usando nossos indicadores e possivelmente outros indicadores, e depois testá-lo extensivamente. Depois de ter um sistema testado novamente, você pode conectá-lo à coluna Ação para exibir seus sinais de negociação.

Backtesting

Para executar um backtest ou uma otimização, comece carregando o script AFL do PrescienTrader Backtesting. Sugerimos que você faça uma cópia do script, em vez de modificar o script original. Nossas funções de análise geram saída para colunas de exploração e também criam matrizes e matrizes AFL contendo os resultados. Ao executar um backtest ou otimização, você usará as matrizes e matrizes AFL geradas, que incluem o seguinte:

  • ptStaticPL
  • ptStaticPLSlope
  • ptStaticFLDScore
  • ptStaticTrendBar
  • ptStaticTrendBars
  • ptStaticTrendPct
  • ptStaticFrequencies (Matrix)
  • ptStaticSlopes (Matrix)
  • ptStaticFLDPrices (Matrix)

Se você estiver executando uma análise para vários períodos de tempo, as funções criarão um conjunto separado de matrizes e matrizes para cada período de tempo. Os nomes serão os mesmos que acima, exceto que cada nome terá um sufixo HTPx, em que x representa o índice do período mais alto. Por exemplo, as matrizes e matrizes para o primeiro período de tempo mais alto serão nomeadas, ptStaticPLHTP1, ptStaticPLSlopeHTP1, etc… As matrizes e matrizes para o segundo período de tempo superior serão denominadas ptStaticPLHTP2, ptStaticPLSlopeHTP2, etc.

O backtester AmiBroker é extremamente poderoso. Ele suporta verdadeiro backtesting de portfólio, testes avançados, simulações de Monte Carlo, testes de vários períodos de tempo, pirâmide e escala, várias moedas e muito mais. Toda essa funcionalidade e energia estão disponíveis para backtesting e saída do PrescienTrader. Está além do escopo deste artigo discutir os detalhes do backtesting no AmiBroker. Para isso, é melhor ler a documentação do AmiBroker.

Parâmetros e variáveis de parâmetro

Ao executar uma análise, o PrescienTrader usará os valores dos parâmetros especificados na janela Parâmetros. No entanto, se você salvou anteriormente as configurações do instrumento para o mercado e prazo atuais, o as configurações salvas substituirão as configurações exibidas na janela Parâmetros. Isso permite que você execute uma análise de portfólio usando diferentes valores de parâmetros para cada instrumento no portfólio. Quando você visualiza a janela Parâmetros, ela exibe as últimas configurações inseridas, que podem não ser necessariamente as configurações salvas. Clique no Reiniciar tudo para exibir as configurações salvas do instrumento.

Além disso, você pode salvar as configurações padrão. Diferentemente das configurações salvas do instrumento, as configurações padrão salvas não NÃO substituir as configurações exibidas. Isso permite que você aproveite o fato de que o AmiBroker se lembra automaticamente das últimas configurações inseridas, portanto, se você estiver testando um determinado conjunto de configurações várias vezes, não precisará digitá-las novamente. No entanto, você sempre pode retornar às configurações padrão salvas clicando no Reiniciar tudo botão. Tenha em mente que as configurações do instrumento salvo têm precedência sobre as configurações padrão salvas, se você clicar Reiniciar tudo e ele não exibe as configurações padrão, o que significa que você salvou as configurações do instrumento e do período exibidos no momento.

Finalmente, você pode substituir a maioria dos parâmetros configurando uma variável AFL correspondente a cada parâmetro. As variáveis disponíveis incluem:

  • ptPolaridade (0 = Positivo, 1 = Negativo)
  • ptPLBasis (0 = amplitude, 1 = força)
  • ptLookbackRange
  • ptMinFrequency
  • ptMaxFrequency
  • ptHarmonicFilter
  • ptMinConfidence
  • ptBestXCycles

Cada variável também possui variações de período mais altas para a análise de vários períodos de tempo. Para definir uma variável de período mais alta, anexe HTP1, HTP2, HTP3, etc… ao nome da variável. Por exemplo:

  • ptMinFrequencyHTP1
  • ptMaxFrequencyHTP2
  • ptLookbackRangeHTP3
  • ptHarmonicFilterHTP2
  • ptMinConfidenceHTP1
  • ptPLBasisHTP4

As variáveis sempre substituem as configurações da janela Parâmetro e as configurações salvas. Se você definir uma variável de parâmetro em AFL, o parâmetro correspondente desaparecerá da janela Parâmetros. Você deve definir todas as suas variáveis de parâmetro ANTES de chamar o PrescientAnalysis ou PrescientAnalysisPrepare funções.

Análise de thread único vs multithread

O PrescienTrader suporta análises de thread único e multithread. A função de thread único requer apenas uma única linha de código, por isso é boa para executar explorações rápidas ou backtests simples. A desvantagem é que a análise é executada em um único encadeamento, portanto, ela pode analisar apenas uma linha por vez. No entanto, se sua análise consistir apenas em algumas centenas de linhas, a diferença horária seria insignificante. Nesse cenário, você levaria mais tempo para escrever o código adicional para uma análise multithread do que o tempo economizado ao executá-lo.

Script do PrescienTrader Backtester - Seção de thread único

O script de análise de exemplo é chamado PrescienTrader Backtester. Se você visualizar esse script, verá que ele contém uma seção de thread único e uma seção de múltiplos threads, que você pode alternar entre usar uma configuração de parâmetro. A seção de análise de thread simples contém uma única linha de código:

PTBacktest ();

o PTBacktest A função não aceita parâmetros porque você configura todos os parâmetros na janela Parâmetros. Quando executado, ele cria uma solicitação de API, envia a solicitação à PrescientAPI, analisa a resposta, gera os resultados para as colunas de exploração e gera as matrizes AFL descritas acima.

Para executar uma análise de período múltiplo, basta chamar a função PrescientAnalysis várias vezes. Por exemplo, se você deseja analisar o período base e dois períodos superiores, use o seguinte código:

PTBacktest (); PTBacktest (); PTBacktest ();

Cada instância da função cria outro período de tempo na janela Parâmetros, portanto, no exemplo acima, sua janela Parâmetros conteria configurações para o período base, HTP1 e HTP2. Não confunda multi-threading com multi-timeframe; esses são dois conceitos completamente diferentes. O multiencadeamento refere-se à execução de mais de uma análise por vez, como analisar um portfólio de instrumentos. O período múltiplo refere-se à análise de cada instrumento em mais de um período. Por exemplo, você pode analisar os prazos diários, semanais e mensais do S&P 500. Nesse exemplo, você também se beneficiaria da execução no modo multiencadeado, pois analisaria os três períodos de tempo simultaneamente. No entanto, você pode executar uma análise de período múltiplo no modo de thread único; nesse caso, ele analisaria os períodos de tempo sequencialmente.

Script de Análise PrescienTrader - Seção Multiencadeada

A seção multithread é mais complicada que o script single thread e requer várias linhas de código:

postVars = PTBacktestPrepare ();
if (StrLen (postVars)> 0) {
    ih = InternetPostRequest ("https://api.prescientrading.com", postVars);
    se (ih) {
        response = "";
        while ((line = InternetReadString (ih))! = "")
            resposta + = linha;
        PTBacktestExecute (resposta);
        InternetClose (ih);
    }
    outro {
        msg = "Nenhuma resposta da API - possível tempo limite ou problema de conectividade com a Internet - aguardando 60 segundos";
        _TRACE (msg);
        PTLogToFile (msg);
        PTWait (60);
    }
}

A razão para o código adicional é que o AmiBroker não suporta multi-threading em plugins como o PrescienTrader. Portanto, em vez de executar toda a operação de análise em uma única função de plug-in, o plug-in lida com tudo, exceto a solicitação da API, que é a parte que consome mais tempo e, portanto, gera o maior benefício da execução em vários encadeamentos.

Vamos detalhar isso passo a passo…

  1. Na primeira etapa, chamamos PTBacktestPrepare e atribuímos o resultado à variável postVars. Esta função usa os parâmetros definidos na janela Parâmetros para gerar os dados no formato apropriado para uma solicitação de API.
  2. Na segunda etapa, fazemos a solicitação da API usando as funções InternetPostRequest e InternetReadString. Como está interagindo com um servidor remoto, essa é a parte mais lenta do processo e, portanto, beneficia-se ao executar vários threads.
  3. Na etapa final, executamos PTBacktestExecute nos dados retornados da API. Essa função analisa os dados, gera os resultados para as colunas de exploração e gera as matrizes AFL descritas acima.

Como você pode ver, não é tão complicado, mas exige muito mais código do que a abordagem de thread único. Se você estiver analisando uma grande quantidade de dados, a abordagem multithread pode ser até 32 vezes mais rápida, dependendo do número de núcleos de CPU que seu computador possui.

Como na abordagem de thread único, você pode analisar vários períodos de tempo inserindo o bloco de código acima várias vezes ou envolvendo o bloco de código em um loop for.

Otimização

Otimização é o processo de ajustar os parâmetros para obter os melhores resultados para um mercado ou grupo de mercados. O AmiBroker permite otimizar até 64 parâmetros simultaneamente, suporta a otimização de portfólio e inclui três mecanismos de otimização inteligente, Otimização de enxame de partículas padrão, Tribos e CMA-ES.

O PrescienTrader suporta a otimização de todos os seus parâmetros sem precisar escrever código para cada parâmetro. Para definir os parâmetros de otimização, mantenha pressionado o botão Mudança tecla e clique no ícone da barra de ferramentas Parâmetros. Isso exibirá a janela de parâmetros de otimização, onde você pode inserir um alcance (De e até) para cada parâmetro e um degrau para parâmetros numéricos. O intervalo representa o intervalo de otimização. Por exemplo, para otimizar o intervalo de lookback, você pode selecionar algo como:

LookBack Range De: 5
Faixa de lookback até: 10
Etapa do intervalo de lookback: 1

A inserção desses parâmetros otimizaria o intervalo de lookback entre 5 e 10 com um incremento de 1, para testar valores de 5, 6, 7, 8, 9, 10.

Exploração madeireira

Ao executar uma análise, o PrescienTrader envia continuamente informações para a janela Trace. Cada linha contém as seguintes informações:

  • Tipo de análise (backtest, otimização, exploração, etc.)
  • Símbolo do instrumento em análise
  • Período (diário, semanal, mensal, etc.)
  • Série de dados (Fechar, Média, etc ...)
  • Valores dos parâmetros:
    • Polaridade
    • Base PL
    • Frequência mínima
    • Freqüência máxima
    • Faixa de Lookback
    • Filtro Harmônico
    • Confiança mínima
    • Best X Cycles

Para cada valor de parâmetro, indica sua fonte entre parênteses. A fonte pode ser uma das seguintes:

  • Parâmetro - O valor foi obtido na janela Parâmetros.
  • Opt - Value foi gerado com base nas configurações de otimização especificadas na janela Parâmetros.
  • Salvo - Valor salvo para este instrumento e período.
  • AFL - O valor foi obtido da variável AFL correspondente ao parâmetro.
  • Matriz - O valor foi obtido de uma matriz AFL. Como as matrizes podem usar um valor diferente para cada barra, nenhum valor será exibido.

As variáveis AFL têm a precedência mais alta, seguidas pelos valores salvos e depois pelos valores especificados na janela Parâmetros.

Além da janela Rastrear, você pode ativar o log em um arquivo digitando o caminho do arquivo na janela Parâmetros.

Esse artigo foi útil?
Não gosto 0
Visualizações: 1418
SEMPRE LIVRE
Sinais de Negociação Diários
por PrescientSignals
SE INSCREVER
Inscreva-se para receber diariamente sinais de negociação GRATUITOS entregues diariamente na sua caixa de e-mail
Os sinais livres estão atrasados em uma semana. Isso permite avaliar nosso serviço PrescientSignals sem risco, comparando as previsões da semana anterior com os resultados reais.
SEMPRE LIVRE
Sinais de Negociação Diária por PrescientSignals
SE INSCREVER
Inscreva-se para receber diariamente sinais de negociação GRATUITOS entregues diariamente na sua caixa de e-mail
Os sinais livres estão atrasados em uma semana. Isso permite avaliar nosso serviço PrescientSignals sem risco, comparando as previsões da semana anterior com os resultados reais.