Documentação

Aplicações

Última atualização em 15. 4. 2020 por Mark Fric

Indicadores externos

Esta funcionalidade está disponível no Build 127. Observe também que esta funcionalidade foi renomeada de Indicadores de Dados Personalizados para Indicadores Externos nos últimos buildds.

Se você tem um indicador que deseja usar no StrategyQuant, mas ainda não é suportado por ele, você tem duas opções:

  1. Implementar o indicador personalizado em Java em StrategyQuant CodeEditor - isto requer algum conhecimento de programação. O indicador adicionado desta forma estará funcionando como qualquer outro indicador que o SQ suporta
  2. Importar o indicador personalizado como um dado - Desta forma a StrategyQuant pode utilizar o indicador sem saber exatamente como calculou seus valores.
    Isto é mais simples, mas tem algumas limitações - você deve exportar os valores indicadores de sua plataforma comercial usando um script especial, e depois importá-los para o SQ. Por exemplo, se você calcular seu indicador personalizado em EURUSD / H1 e quiser usá-lo para GBPUSD / H1 ou mesmo EURUSD / M30 então você terá que reexportar os dados de sua plataforma de negociação.

Esta documentação é sobre a opção 2 - importação de indicadores como dados.

Nota! 

Os indicadores personalizados importados como dados são computados no MetaTrader, Tradestation ou em sua outra plataforma de negociação, não no SQ. Para obter os resultados corretos, você deve usar os mesmos dados de histórico tanto no StrategyQuant como no MT4.
Não funcionará para calcular seu indicador personalizado no MetaTrader com seus dados do corretor e depois usá-los no StrategyQuant em dados de outra fonte. Antes de usar indicadores personalizados, sincronize seus dados de histórico para que tanto o SQ quanto o MT4 usem o mesmo histórico.

 

Neste exemplo, vamos implementar o indicador RVI, que é um indicador de exemplo padrão na plataforma MT5:

Indicador MT5 RVI

 

 

Passo 1: Defina seu novo indicador externo em StrategyQuant

Ir para Gerente de dados -> Indicadores externos e clique em Adicionar novo.

Ele abrirá um novo diálogo indicador onde você especificará as propriedades do indicador que você está adicionando:

Adicionar indicador de dados personalizados

Nome

é o nome indicador sob o qual você o verá no SQ. Ele deve ser único e não pode conter nenhum
personagens.
Como o indicador personalizado é computado especificamente para um símbolo e um período de tempo, é uma boa prática definir o símbolo de uso e TF também em seu nome, como no nosso caso: RVI_EURUSD_H1.

 

Tipo de retorno

é um tipo de indicador de valor de retorno computado, é usado pela StrategyQuant para fazer a correspondência adequada deste indicador personalizado com outros blocos de construção no programa, de modo que ele compare o preço com o preço, e não, por exemplo, o preço com o valor CCI. Ele pode ser qualquer um dos dois:

  • Número - se é indicador como CCI, RSI, MACD etc.
  • Preço - se o valor indicador for o preço, como média móvel ou Bandas de Bollinger.
  • Faixa de preço - se o valor indicador for faixa de preço (diferença entre dois preços), como ATR ou Faixa de Bandas de Bollinger.
  • Sinal - se você quiser usar o indicador como um bloco de sinal personalizado, então use esta opção. Você pode usar o indicador de sinal, por exemplo, para reconhecer padrões de velas ou para implementar suas próprias regras comerciais simples.

Como decidir o tipo de retorno adequado

geralmente, se o indicador desenha suas linhas no mesmo gráfico que o preço, então seu tipo de retorno é o preço. Se ele desenha suas linhas em uma janela separada abaixo do gráfico principal, então é Número, exceto para indicadores especiais como ATR que computam a diferença de preço ou intervalo.

 

Valores indicadores (linhas)

estes são os valores indicadores de saída. Se verificarmos a captura de tela do indicador RVI abaixo, você poderá ver que ele emite dois valores na janela Dados, e eles correspondem à linha RVI (verde) e Sinal (vermelho) no gráfico.

Os valores devem ser definidos na mesma ordem em que foram criados no indicador.

Depois há uma parte interessante - você pode definir o código fonte para cada plataforma de negociação para cada linha. Isto não é necessário para o indicador que funciona no SQ, mas é necessário para que o SQ saiba como gerar o código fonte estratégico para cada plataforma.

Você não precisa definir fontes para as três plataformas (MT4, MT5, EasyLanguage). Se você estiver usando apenas o MT5, basta especificar apenas esse código.

O código é como você usaria este indicador no código de sua plataforma de negociação, para o MetaTrader normalmente é algo parecido:

iCustom(NULL, 0, "RVI", 10, 0, #Shift#)

 

Note que você pode usar #Shift# constante para o código MT4 - será substituída pelo atual Shift do bloco de construção durante a geração do código.

O turno no MetaTrader5 é usado de uma maneira diferente e não precisa ser computado.

 

Clique OK e o novo indicador será criado:

Ele ainda não pode ser usado, porque esta é apenas uma definição - precisamos importar dados para este indicador para que o SQ possa usá-lo.

 

 

Passo 2: Obtendo os valores do MetaTrader

Os indicadores personalizados funcionam de uma forma que StrategyQuant utiliza seus valores computados em outro programa, por exemplo, no MetaTrader. Isto significa que devemos computar o indicador no MetaTrader e depois importar seu(s) valor(es) para o SQ.

Isto é um pouco complicado, mas por outro lado nos permite usar praticamente qualquer indicador disponível para o MetaTrader, mesmo que não saibamos exatamente como ele é computado.

Para o cálculo dos valores indicadores usaremos uma simples EA chamada SqIndicatorValuesExportEA.

Esta é uma EA personalizada da StrategyQuant que pode ser usada para exportar valores indicadores do MetaTrader. Você pode encontrar este arquivo na pasta {EstratégiaQuant}custom_indicadoresMetaTrader5Experts

 

Para poder utilizá-lo em seu MetaTrader, você deve copiá-lo lá. Inicie seu MetaTrader 5, vá para File ->Open Data Folder. Isto abrirá a pasta de dados MT5. Lá, vá para MQL5Experts copiar esta EA lá.

Em seguida, reinicie seu MetaTrader e o novo EA estará disponível.

Antes de podermos utilizá-lo, devemos modificá-lo para que ele exporte valores de indicador RVI assim como nós queremos.

Aberto MT5 -> Ferramentas -> MetaQuotes Editor de idiomas e encontrar e abrir esta nova pasta EA de Peritos.

O código é relativamente simples de usar, você deve fazer mudanças em alguns lugares:

  1. No OnInit você tem que especificar o nome do arquivo de exportação e o código iCustom:
int OnInit() {
  …

    // este é o nome do arquivo de exportação. É uma boa prática incluir também símbolo e cronograma
    fileName = "EURUSD_H1_RVI_10.csv";
   
    // função para obter alça indicadora
    indicatorHandle = iCustom(NULL, 0, "ExemplosRVI", 10);

 

  1. No OnTick você deve atualizar quais valores (linhas indicadoras) serão computados e exportados:
nulo OnTick()
   …
   indicadorBufferIndex = 0;
   if(!FillArraysFromBuffers(IndicatorBuffer, indicatorHandle, 2)) retorna;

   indicadorBufferIndex = 1;
   if(!FillArraysFromBuffers(SignalBuffer, indicatorHandle, 2)) retorna;

Se o indicador tiver várias linhas, como no caso do RVI, você deve repetir as linhas:

   indicadorBufferIndex = NÚMERO;
   if(!FillArraysFromBuffers(BUFFER_NAME, indicatorHandle, 2))) retorna;

para cada linha.

Onde NUMERO é um número de linhas a partir de 0 e BUFFER_NAME é o nome da matriz tampão.
Há duas matrizes de proteção definidas no início do arquivo:

duplo IndicadorBuffer[];
duplo IndicadorBuffer[];

você pode adicionar mais se o indicador tiver mais de duas linhas.

  1. Além disso, no OnTick você deve atualizar qual método FileWrite e adicionar os amortecedores a serem exportados até o final:
FileWrite(handle, currentTime, rt[0].open, rt[0].high, rt[0].low, rt[0].close, rt[0].tick_volume, IndicatorBuffer[0], SignalBuffer[0]);

 

É tudo, agora que você pode compilar a EA, ela está pronta para ser usada.

 

Executando a EA de exportação em MetaTrader

Quando o arquivo SqIndicatorValuesExportEA é modificado e compilado sem problemas, podemos executá-lo para exportar os valores.

Vá até MT5 Strategy Tester, escolha este Expert e selecione o símbolo e o período de tempo para o qual você deseja exportar os dados indicadores.

Exportação do Indicador MT5

Você deve escolher o símbolo e o intervalo de tempo para o qual o indicador deve ser computado, assim como o intervalo de datas apropriado.

Em seguida, pressione Início e esperar que a exportação termine.

 

Uma vez terminado o teste EA, o arquivo de exportação deve estar disponível em Pasta de dados MT5mas há um truque. O arquivo gerado não está em sua pasta Terminal, mas na pasta Testador.

Quando você abrir o Data Folder do MT5, ele lhe mostrará sua pasta Terminal:

Pasta terminal MT5

Mas o arquivo não está lá. Você tem que ir até Tester, e lá vai até seu agente de testes/MQL5/Files para encontrar o arquivo exportado:

Pasta do Testador MT5

Agora você pode copiar e colar o arquivo para um destino mais conveniente quando você o encontrar.

 

 

Etapa 3: Valores indicadores de importação na StrategyQuant

Quando tivermos os dados indicadores prontos, podemos importá-los para nosso indicador personalizado em StrategyQuant.

Ir para Gerente de dados -> Indicadores externos selecione seu novo indicador e clique no botão Dados indicadores de importação.

Lá, encontrar o arquivo e especificar as colunas de importação.

Se você revisar a EA, os dados indicadores foram exportados como os dois últimos valores:

FileWrite(handle, currentTime, rt[0].open, rt[0].high, rt[0].low, rt[0].close, rt[0].tick_volume, IndicatorBuffer[0], SignalBuffer[0]);

Portanto, escolha as duas últimas colunas como Valor1 e Valor2.

Clique em Iniciar a importação e indicador devem ser importados com sucesso.

Indicador SQ cusotm importado

Agora o indicador está pronto para ser usado no SQ.

 

 

Passo 4: Utilização do indicador externo

Quando o indicador é importado com sucesso, ele pode ser usado como qualquer outro bloco de construção. Ir para Construtor -> Configurações -> Blocos de construção e você deve ver nosso novo RVI indicador lá:

SQ bloco de construção do indicador de dados SQ cusotm

Se você não o vê, favor verificar se você tem o prazo correto em Configurações -> Dados.

Lembre-se, os dados indicadores são sempre calculados para um período de tempo específico, e não podem ser usados em outro período de tempo. Se você mudar o período de tempo, por exemplo, para M30, você verá apenas indicadores externos que foram importados para os dados M30.

 

Quando tivermos os blocos de construção configurados, poderemos iniciar a construção.

SQ

Depois de um tempo, ele preencherá o banco de dados com novas estratégias que utilizam nosso novo indicador externo.

Quando abrirmos alguma estratégia, poderemos verificar o pseudo-código:

Pseudocódigo de indicador de dados personalizado SQ

Podemos ver que esta comparação de estratégia de nossos indicadores RVI_EURUSD_H1.

Quando mudarmos o código fonte para MetaTrader 5, ele gerará um código MT5 válido que pode ser compilado e executado no MT5:

SQ indicador de dados personalizados Código MT5

 

Você também pode verificar o vídeo passo a passo onde nosso programador sênior mostra como codificar seu indicador personalizado. Link do vídeo: https://www.youtube.com/watch?v=veiqIh0BS10&t=26s&ab_channel=StrategyQuant

Este artigo foi útil? O artigo foi útil O artigo não foi útil

Assine
Notificação de
1 Comentário
Mais antigo
Novidades Mais Votados
Feedbacks em linha
Ver todos os comentários
John Warner
28. 12. 2022 10:11 pm

Valores indicadores (linhas): está mal explicado. E quanto à TradeStation? Como o nome é usado? Que valores devem constar no campo "Código" para TradeStation?