Sunday 20 May 2018

Forex nn ind


Não, espere um minuto :) Não há maneira de executá-lo carrapato por tick - ele comercializa no final da barra: Além disso, o prazo é de 1 hora: Também também :) Eu não tenho idéia de como ele irá realizar. Eu só testei no HISTORY. O modo de preços abertos é suficiente e rápido o suficiente para testar e otimizar. Está sendo em liberdade condicional por cerca de uma semana no meu Demo, e até agora produziu apenas 1 comércio, então não espere que ele comece a perder dinheiro :) imediatamente. Quando eu tenho o suficiente dos negócios reais para postar, vou postar. Também também também :))) leia o aviso de responsabilidade dos autores. É um exemplo, não um graal. Muito ruim: (gtgtgt Deixe-me experimentá-lo desde o início ltltlt 1. Copiando um especialista do artigo. Salvando-o como testexpert. mq4. Compilando (F5): sucesso. 2. Copiando um indicador. Salvando (no diretório de indicadores) como testind. mq4: Compilando: success 3. OOPS Renomeando o indicador no código expert, já que não é mais forexnnind :) 4. Testando. Configurações: EURUSD, H1, somente preços abertos, Recalcular marcados. Resultados: 0 negociações. OK, acho que entendi. Eu sei qual é o problema. Vou colocá-lo no próximo post, para mantê-lo legível. OK, aqui estou eu, mantendo meu compromisso (veja o final do meu post anterior). A razão pela qual não há negócios, está no diálogo de especialistas. Propriedades não estão definidas Elas são todas zeros. Dê uma olhada no especialista. Se não estamos testando (negociação em tempo real), as propriedades são iniciadas para valores ótimos. Se estamos testando - eles não são. Você precisa fazer isso manualmente. Então, para continuar o anterior. post: 5. Definindo propriedades de especialistas para: dBuyLevel 0,21 dSellLevel 0,9 dStopLoss 200 pontos dTrailingStop 200 Point (e para otimizar, você terá que definir um intervalo para cada variável também) Resultados deste teste (como é, a partir do artigo, não otimizado): Barras no teste 17770 Carrapatos modelados 35440 Qualidade de modelagem n / a Depósito inicial 1000,00 Lucro líquido total 2098,85 Lucro bruto 6758,65 Perda bruta -4659,80 Fator de lucro 1,45 Retorno esperado 32,29 Saque absoluto 0,00 Saque máximo () 1188,55 (27,7) Total de negócios 65 Curto posições (ganhas) 2 (50.00) Posições longas (ganhas) 63 (44.44) Lucrades (do total) 29 (44.62) Perdas (do total) 36 (55.38) Maior lucro comercial 802.00 prejuízo comercializado -204.90 Médio lucro comercial 233.06 perda trade -129.44 Ganhos máximos consecutivos (lucro em dinheiro) 6 (1330.35) perdas consecutivas (perda em dinheiro) 5 (-628.25) Lucro consecutivo máximo (contagem de vitórias) 1330.35 (6) perda consecutiva (contagem de perdas) -652.10 (4) ) Média de vitórias consecutivas 2 consecutivas sses 2 Geralmente (eu usei diferentes datas) - como prometido no artigo. Uau, isso foi longo:) Mapas Auto-Organizáveis ​​do SnowCron Usando Mapa Auto-Organizador para criar o Sistema de Negociação de Rede Neural. Análise Técnica FOREX com Classificação Automática Rede Neural de Kohonen. Negociação de Rede Neural com Rede Neural de Kohonen. Neste tutorial on-line gratuito, você encontrará o ciclo completo do uso de Mapas Auto-organizáveis ​​internos do Cortex (SOM, kohonen neural networks) para negociação Forex (ou negociação de ações, a ideia é a mesma). Você aprenderá como escolher entradas para os Mapas Auto-organizados. e como decidir o que fazer com a saída. Você encontrará um exemplo de um script pronto para usar que permite realizar a otimização de ambos os Mapas de Auto-organização (número de neurônios) e os parâmetros de negociação (stop loss etc.) Finalmente (a parte que não está presente na maioria dos tutoriais), você aprenderá o que fazer a seguir. Afinal, o Cortex Neural Networks Software não pode negociar em tempo real, você precisa usar algo como Trade Station, MetaStocks ou MetaTrader. Como portar o Self Organizing Maps baseado estratégia de negociação forex do Cortex para sua plataforma de negociação favorita Você tem que lidar com DLLs, controles ActiveX e programação de baixo nível A resposta é NÃO. O Cortex vem com o recurso fácil de usar que permite portar facilmente os Mapas Auto-organizados resultantes (treinados) para a linguagem de script da sua plataforma de negociação. Nenhuma DLL, DDE, ActiveX ou qualquer outra solução de baixo nível - tudo é claro e simples. Nota importante: este não é um tutorial de como negociar. Em vez disso, ele diz como usar o Cortex, mas você ainda precisa inventar seu próprio sistema de negociação. O que usamos aqui é apenas um ponto de partida, e não deve ser usado para o comércio Forex como é. A idéia deste texto é ensiná-lo a criar uma estratégia de negociação forex baseada em Mapas de Auto-organização e portá-la para a plataforma de negociação de sua escolha. O exemplo é, no entanto, simplificado, e só pode ser usado como ilustração dos princípios de negociação. Da mesma forma, o sistema de negociação MACD, que pode ser encontrado em muitos tutoriais, não está mais funcionando bem (como os mercados mudaram), mas ainda é um bom exemplo do uso de indicadores para negociações mecânicas. Em duas palavras: faça sua própria análise. Outra nota importante: o tutorial está usando exemplos, muitos deles. Para tornar sua vida mais fácil, incluí todas elas, não apenas fragmentos. No entanto, torna o texto muito mais longo. Além disso, estou indo desde os primeiros sistemas de negociação desajeitados até os mais avançados, sempre explicando o que foi melhorado e por quê. Seja paciente ou pule diretamente para a seção que você precisa. Nota final importante: o código não é algo esculpido em pedra, pode mudar enquanto este texto foi escrito. As versões finais dos arquivos de script estão incluídas no arquivo Cortex Neural Networks Software. Dados de agrupamento: teste simples Antes de mais nada, vamos tentar uma abordagem direta - vamos alimentar nosso Mapa de auto-organização com sequência de 0 e 1. Isso deve nos dar dois agrupamentos, que são fáceis de distinguir visualmente: Como podemos ver, Mapas auto-organizáveis pode facilmente lidar com essa tarefa, criando dois clasters: Quando plotamos dados e neurônios vencedores, podemos ver que o sistema funciona bem - 0 e 1 estão claramente separados. Mapa de Cluster: Visualizando Resultados A abordagem que usamos no exemplo anterior é bastante desajeitada - plotamos números de neurônios vencedores. Isso não é muito informativo, e se quisermos usar essas informações, por exemplo, como uma entrada de software de redes neurais - não é muito útil. A razão é - o número de um neurônio está dentro de um tamanho 0 de um intervalo de matriz, e a Rede Neural terá que descobrir uma relação complexa entre ele e um neurônio de cluster pertence. Além disso, em um gráfico, isso nos dará uma linha não óbvia. Em um SOM, podemos identificar unicamente um neurônio por suas coordenadas (X, Y) e um sinal que produz - adicionando uma coordenada Z. Além disso, uma cor em uma computação gráfica é geralmente representada pelo vetor (Vermelho, Verde, Azul), então aqui está um truque: vamos pedir ao nosso sistema para produzir não os números dos neurônios, mas as cores correspondentes. Usamos as seguintes fórmulas na linguagem C: Vamos percorrer o código, desta vez, vamos usar uma função SIN (X). Como você pode ver, a classificação de padrões no SIN (x) está bem. Além disso, em um gráfico de cores suaves, é fácil ver que as cores são adequadamente atribuídas a partes de tendência semelhantes de um gráfico. Sinais de Forex: Usando cotações reais Agora, vamos usar cotações reais e ver se o nosso mapa de auto-organização será capaz de lidar com elas da mesma forma como lidou com SIN (x). Como você pode ver no gráfico, o SOM funcionou, mas. A classificação não é muito útil. O problema é que, como se esperaria, no fato de que o gráfico (CLOSE quotes para EURUSD) está subindo, então o mesmo padrão no início de um gráfico e no seu final é considerado (por mapa auto-organizado) como dois padrões completamente diferentes. Estratégia de Negociação Forex: Utilizando o indicador NOC Indicador NOC (Normalize On Condition) foi criado e usado em um dos artigos anteriores para lidar com o requisito do NN - ele precisa de dados normalizados para funcionar. Vamos usar o NOC com mapa de auto-organização para classificar as tendências das cotações do CLOSE. Nota. que eu pessoalmente não acho que o NOC é um indicador perfeito para ser usado com o SOM. Algum tipo de indicador de claster, mostrando fluxo de dinheiro entre diferentes moedas, provavelmente fará um trabalho muito melhor. Então, por favor, considere isso como um exemplo e construa seu próprio sistema de negociação. Para travar o teste do nosso sistema, você pode usar o arquivo de citações eurusdh1long. txt, que está incluído no arquivo do Cortex, junto com o mais curto eurusdh1.txt. Quando você o usa (substituindo o curto no código), você pode ver o comportamento de nossos sistemas no teste de amostra, nos dados, nunca visto. Nesse teste, o NOC não falha, mas também não brilha. Além disso, usamos ciclos para encontrar parâmetros mais agradáveis. Acima está um pequeno fragmento de um gráfico resultante. Note que é muito difícil dizer que uso podemos ter para este tipo de classificação, mas a) talvez, a Rede Neural FFBP possa fazer sentido e b) é apenas um exemplo. Também podemos usar gráficos diários. Abaixo está o código quase idêntico para o preço das ações da MSFT. FOREX Trading Strategy sem Kohonen SOM Com o gráfico que obtivemos no capítulo acima, é difícil criar um sistema de trading forex. Existe uma classificação, tudo bem. Mas não parece tendência para cima - verde, trent para baixo - vermelho. Então vamos usar uma rede neural FFBP para fazer isso. Para torná-lo melhor, vamos usar a saída Self-Organizing Map e NOC como entradas NF FFBP. Vamos usar o script do artigo sobre as redes neurais FOREX Trading. isso, eu suponho, você já leu. Primeiro, vamos executar o script original, sem SOM, novamente e encontrar o conjunto ideal de parâmetros NN. Aqui podemos escolher um vencedor. Note-se que, batendo o mercado não é nosso objetivo aqui, o que queremos fazer, é ter mais ou menos sistema de trabalho FFBP e ver, se o seu desempenho pode ser melhorado, fornecendo insumos adicionais de SOM. Comércios: 27 (Compra: 27, Venda: 0) NocInterval: 12, Alcance: 0,004, Ma: 3 Lag: 2, Neurónios: 5 Stop: 0.0200, Tp: 0.0000, Aumento de Stop: 0.600000, Comprar: 0.170, Vender: 0.900 Saque: 0.299 Lucro: 6174.000000 (long: 6174.000000, short: 0.000000) Este gráfico parece bom o suficiente. No próximo capítulo, usaremos a saída do mapa auto-organizável, além do NOC. Usando Rede Neural de Kohonen e Rede Neural de FFBP juntos Vamos remover os ciclos do exemplo anterior e adicionar um Mapa Auto-Organizacional a ele. O Kohomen SOM foi criado pelo som04.tsc, note que você precisa executar esse script primeiro. Então, primeiro, execute o som04.tsc e renomeie o Mapa Auto-Organizador resultante para som04winner. kh. O script a seguir usa o Kohomensom SOM existente e tenta encontrar os parâmetros ideais para o FFBP NN que usa sua saída como entrada, além do NOC. Comércios: 29 (Compra: 29, Venda: 0) NocInterval: 12, Amplitude: 0.000, Ma: 3 Lag: 2, Neurônios: 7 Stop: 0.0200, Tp: 0.0000, Aumento de Stop: 0.500000, Comprar: 0.140, Vender: 0.900 Drawdown: 0,557 Lucro: 6677.000000 (long: 6677.000000, short: 0.000000) Como você pode ver, pelo menos um gráfico é melhor, do que era sem SOM, embora novamente, este é apenas um exemplo, e para um sistema de negociação real, NOC é, provavelmente, NÃO a melhor escolha de entrada para Kohonen SOM (no entanto, é muito bom para o FFBP NN). Removendo ciclos do sistema de negociação de rede neural FFBP Agora, vamos portar nosso sistema de negociação para uma plataforma de negociação real. Afinal, o Cortex Neural Networks Software não pode fazer transações on-line, portanto, precisamos usar o MetaTrader, o TradStation ou qualquer outra coisa. Vamos criar um script para o especialista do MetaTrader aqui, que usa tanto o NF do FFBP quanto o SOM. Nós fazemos isso em duas etapas. Primeiro, vamos repetir os passos do artigo sobre negociação de FOREX da Neural Networks, para nosso vencedor FFBP. Então nós adicionamos o SOM. Para fazer isso, nós removemos os ciclos do código som05.tsc, ele nos deixa com um código, que usa um único NN vencedor. Em seguida, adicionamos código a esse script para IMPRIMIR pesos de neurônios. Formamos essa saída para torná-la compatível com a sintaxe do MetaTraders (ou outra plataforma de negociação, depende de você). Como resultado, temos uma grande matriz com pesos NN, que podemos colar no código de especialista / indicador de uma plataforma de negociação de sua escolha. Por enquanto, vamos remover todos os ciclos desnecessários do som5.tsc, para que tenhamos o script, que funciona com um NN vencedor. Como usamos o NN vencedor, precisamos obtê-lo em algum lugar. O Cortex vem com som05winner1.nn (criado no som05.tsc e depois renomeado). Note que o código ainda tem ciclos - apenas para ser o mais familiar possível - mas esses ciclos são feitos apenas uma vez. Além disso, alguns parâmetros para o Noc e para a rede são codificados: som06.tsc, FFBP, no SOM ainda Exportando pesos das Redes Neurais O próximo passo é exportar pesos da Rede Neural para a linguagem de script de uma plataforma de negociação de nossa escolha. Aqui estamos apenas repetindo o Forex Trading da Neural Networks. Para fazer isso, adicionamos algumas instruções PRINT ao som06.tsc e ele produzirá a saída necessária. Simplesmente insira o seguinte código no som06.tsc: Note que a lógica por trás dele já foi discutida no artigo Neural Networks Forex Trading. Resumidamente, a saída desse script é formatada para ser compatível com o mecanismo de script MQ4, MetaTraders. MetaTrader é uma plataforma de negociação que usamos, se você quiser algo diferente, como a TradeStation, por exemplo, você terá que alterar o código para cumprir a sua sintaxe. Então, nos próximos capítulos, vamos inserir esse código no indicador MetaTraders e usá-lo para negociar. Emulando APPLYNN O próximo passo não é realmente necessário, mas é algo que pode ser útil para localizar e corrigir erros no código. Vamos criar uma versão do som06.tsc, mas, desta vez, usaremos o SLANG (linguagem de script interna do Cortex) para emular a função APPLYNN. A razão é que, no próximo capítulo, vamos portá-lo para a linguagem de script de uma plataforma de negociação MetaTrader, por isso é uma boa idéia ter certeza de que tudo funciona. Portando Rede Neural FFBP para plataforma de negociação O seguinte código é retirado do artigo da Neural Networks Forex Trading. É um par pronto para ser usado de indicador e um perito, que usa esse indicador. Nenhum código de rede neural kohonen ainda. Como de costume, tenha em mente que é apenas um exemplo, que não necessariamente será sempre lucrativo. Além disso, como alguns dos nossos códigos MetaTrader são os mesmos para todos os especialistas e indicadores, nós os movemos para um arquivo de biblioteca separado. Bibliotecas MetaTraders não são nada além de arquivos includable. Esta biblioteca cuida da sincronia, quando dois ou mais especialistas estão tentando rodar ao mesmo tempo, bem como de poucas outras coisas. Se você usar o MetaTrader, ele ajudará você a criar especialistas robustos, em qualquer caso, a linguagem MQL é fácil de entender. mylib. mql, uma biblioteca auxiliar Kohonen Rede Neural FFBP Rede Neural, sem ciclos Estamos concluídos com um sistema de negociação forex que usa apenas redes FFBP. Agora vamos fazer o mesmo trabalho com uma estratégia de negociação forex. que usa FFBP e Kohonen SOM juntos. Primeiro de tudo, vamos pegar o som07.tsc novamente, e rodá-lo, a fim de escolher a melhor rede FFBP. Note que o mapa de cluster de Kohonen para este script foi criado anteriormente (em som04) e armazenado como som07winer. kh, portanto, não precisamos recriá-lo. Comércios: 52 (Compra: 52, Venda: 0) NocInterval: 12, Alcance: 0.004, Ma: 3 Lag: 2, Neurônios: 3 Stop: 0.0200, Tp: 0.0000, Aumento de Stop: 0.600000, Comprar: 0.170, Vender: 0.900 Drawdown: 0.981 Profit: 6820.000000 (long: 6820.000000, short: 0.000000) Então, vamos remover os ciclos de som07.tsc, para obter o script que vamos portar: Exportando pesos do mapa auto-organizável Vamos adicionar o código para imprimir Neural Parâmetros de rede, tanto para Rede Neural FFBP quanto para mapa auto-organizado. Fazemos isso adicionando o seguinte ao som10.tsc: Emulando a função APPLYSOM O próximo passo é adicionar o código que emula a função apply, usando uma linguagem de script genérica em vez de chamadas específicas do Cortex. Como já temos esse código para o FFBP NN, vamos nos concentrar apenas no SOM. Portando Mapa Auto-Organizador forex trading system baseado em MT O passo final é portar nosso script para MetaTrader, para que ele possa ser usado para negociação real. Vamos usar o mesmo especialista do exemplo FFBP acima, mas o indicador conterá tanto o código FFBP quanto o SOM. Note que, além disso, mylib. mq4 é usado, seu código é o mesmo do exemplo FFBP. O código dos indicadores foi criado com base no exemplo somente FFBP, adicionando o código SOM, portado de som12.tsc: Notas finais É isso. Agora você pode criar o script Cortex Neural Network Software, que usa a saída do SOM como insumo, entre outras entradas, otimizá-lo para fazer negócios e portá-lo para a plataforma de negociação de sua escolha. Note que esta não é sua única opção - você pode usar essa abordagem, por exemplo, para criar NF de FFBP que usa mais de um indicador mais outra saída de NF de FFBP como entrada, e assim por diante. Download Cortex Order Cortex Ver lista de preços A visibilidade é muito importante para este site. Se você gosta, por favor, faça um link para este URLSnowCron Redes Neurais para Negociação de FOREX Neste artigo: um exemplo do uso de nosso software de Redes Neurais para criar um sistema completo de negociação de rede neural. Este exemplo usa a linguagem de script interna do Cortex. por favor leia o guia da linguagem de script primeiro. Usando redes neurais para criar estratégias de negociação FOREX Neste tutorial on-line gratuito, você encontrará o ciclo completo de uso de redes neurais (Cortex Neural Networks Software) para negociação em Forex (ou negociação no mercado de ações. A idéia é a mesma). Você aprenderá como escolher entradas para as redes neurais artificiais. e como decidir o que usar como saída. Você encontrará um exemplo de um script pronto para usar que permite realizar a otimização de redes neurais tanto da estrutura da Rede Neural (número de neurônios) quanto do sistema de negociação forex (stop loss etc.). Finalmente (a parte que não está presente em a maioria dos tutoriais), você aprenderá o que fazer em seguida. Afinal, o Cortex Neural Networks Software não pode negociar em tempo real, você precisa usar algo como Trade Station, MetaQuotes ou MetaTrader. Como portar o sistema de negociação FOREX de Cortex para sua plataforma de negociação favorita Você tem que lidar com DLLs, controles ActiveX e programação de baixo nível A resposta é NÃO. O software Cortex Neural Networks vem com o recurso fácil de usar que permite portar facilmente a Rede Neural resultante (treinada) para a linguagem de script da sua plataforma de negociação. Nenhuma DLL, DDE, ActiveX ou qualquer outra solução de baixo nível - tudo é claro e simples. Nota importante: este não é um tutorial de como negociar. Em vez disso, ele informa como usar o software Cortex Neural Networks. mas você ainda precisa inventar seu próprio sistema de negociação. O que usamos aqui é apenas um ponto de partida, e não deve ser usado como uma estratégia de negociação forex como é. A idéia deste texto é ensiná-lo a criar sistemas de negociação baseados em NN e portá-los para a plataforma de negociação de sua escolha. O exemplo é, no entanto, simplificado, e só pode ser usado como ilustração dos princípios de negociação. Da mesma forma, o sistema de negociação MACD, que pode ser encontrado em muitos tutoriais, não está mais funcionando bem (como os mercados mudaram), mas ainda é um bom exemplo do uso de indicadores para negociações mecânicas. Em duas palavras: faça sua própria análise. Outra nota importante: o tutorial usa exemplos, muitos deles. Para tornar sua vida mais fácil, incluí todas elas, não apenas fragmentos. No entanto, torna o texto muito mais longo. Além disso, estou indo desde o primeiro sistema de negociação cambial. para mais avançado, cada vez explicando o que tinha sido melhorado e por quê. Seja paciente ou pule diretamente para a seção que você precisa. Nota final importante: o código não é algo esculpido em pedra, pode mudar enquanto este texto foi escrito. As versões finais dos arquivos de script estão incluídas no arquivo Cortex. Armadilhas de FOREX COMPRAR / VENDER Sinais: O que está errado com exemplos simples No guia de usuários do software Cortex Neural Networks utilizamos um exemplo simples de uma Rede Neural aftifficial. prevendo o preço do estoque GENZ. Para descobrir o que há de errado com essa abordagem, vamos fazer o mesmo exemplo simples, usando MSFT. TXT, em vez do GENZ. TXT (use 800 registros no conjunto de aprendizado, pois o MSFT. TXT é um pouco mais curto, depois o GENZ. TXT). Simplesmente não funcionaria. Por que A razão se tornará evidente, se você se perguntar: Qual é a razão pela qual a previsão da rede neural de valores futuros pode ser feita em primeiro lugar? A resposta é: ela está aprendendo a fazer o que é chamado de reconhecimento de padrões de redes neurais. para reconhecer padrões, e se há uma lógica oculta nesses padrões, então até mesmo um novo padrão (com a mesma lógica) será reconhecido. Isso é um truque - com a mesma lógica. Não há nem um, mas três problemas aqui. Primeiro de tudo, se você olhar para o preço das ações da Microsofts, você notará que ele estava caindo na parte de aprendizado de nossos dados e de lado - na parte de teste. Então é possível que a lógica tenha mudado. Segundo, e ainda mais importante - O QUE É O PADRÃO Você vê, se ensinamos a rede neural na faixa de 10 a 100, e então a apresentamos com algo na faixa de 1 a 3 - eles são padrões diferentes 10, 20, 30 e 1, 2, 3 parecem semelhantes aos humanos porque - PORQUE - temos essa capacidade de dividir por dez, quando apresentados com números que terminam com zero. É o que é chamado de pré-processamento dos dados e, por padrão, o NN não pode fazê-lo. Podemos ensinar isso? Claro. O que é EXATAMENTE, precisamos ensiná-lo Este é o terceiro e o mais importante. Nós não precisamos da previsão de preço Nós não nos importamos O que precisamos é FOREX comprar sinais de venda. Agora, espere um minuto Nós precisamos de a) ter a nossa entrada (ambos aprendendo e testando) na mesma faixa, e precisamos b) sermos capazes de tomar decisões comerciais baseadas nisso Não é isso que chamamos de indicador Bingo Então, isso é o que vamos fazer - vamos construir um indicador, para alimentar o NN como uma entrada, e vamos tentar obter uma previsão do valor do indicador, não o preço das ações sem valor No nosso primeiro exemplo, vamos carregar o estoque citações do disco, abra o arquivo de Rede Neural e inicie o aprendizado - tudo em um modo automatizado. Crie um novo arquivo de script (ou abra aquele que veio com o arquivo do Cortex Neural Networks Software) e chame-o de stocksnn. tsc. Primeiro de tudo, precisamos baixar os valores de preço do arquivo MSFT. TXT. Vamos usar o indicador CLV (veja abaixo), mas, para calculá-lo, precisamos de valores ajustados para alta e baixa, e não apenas para fechamento. Aqui está como obtê-los. stocksnn. tsc, part 1 A primeira linha atribui o caminho para a variável strStockPath, é claro, você terá que editá-la, se o seu arquivo de dados estiver localizado no diretório diferente. Na segunda linha, especificamos que esse caminho não é relativo (o relativo ao local do arquivo Cortex. exe). O TABLELOADER recebe o caminho, a string vazia para a linha de partida, 1 - para pular a primeira linha (nomes das colunas), parte da linha de rodapé dos arquivos (a última linha em MSFT. TXT não contém dados), também é instruído para carregar o número da coluna 0 (e chamá-lo arrDate), 2 (arrHigh), 3 (arrLow), 4 (arrC) e 6 (arrClose). Para uma descrição completa do TABLELOADER, consulte o guia de referência do SLANG. Em seguida, calculamos a divisão, dividindo o Fecho Ajustado por Fechar e usamos esse valor para ajustar Baixo e Alto. O arquivo MSFT. TXT contém os dados mais recentes em PRIMEIRO, enquanto os queremos em LAST. Em seguida, precisamos criar um indicador. Digamos, ele será um indicador de Valor de Local Fechado, embora na vida real eu provavelmente usaria mais de um indicador como a entrada NN. O indicador Close Location Value é calculado como CLV (Close - Low) - (High - Close)) / (Alto - Baixo), onde Close, Low e High são para o intervalo, não necessariamente para uma única barra. Note que nós queremos isso no intervalo de 0 - 1, para tornar mais fácil a normalização para o nosso intervalo de NNs (que é, novamente, 0-1). stocksnn. tsc, parte 3 Em seguida, precisamos criar um arquivo de latência. Vamos usar defasagens iguais a 1, 2. 9 (Para detalhes sobre funções de arquivo, veja o guia de referência SLANG). Note que a caixa de diálogo NEX do Cortex pode produzir defasagens simples automaticamente (você pode usar um botão Gerar atraso). Mas, mais adiante neste texto, vamos trabalhar com atrasos complexos (ou seja, eles não são 1, 2, 3, mas 1, 3, 64. o que for), então precisamos criar o código que pode lidar com essa tarefa em uma maneira mais flexível. stocksnn. tsc, part 4 Tendo o arquivo lag, estamos prontos para criar nossa primeira rede neural. Esta função requer muitos parâmetros, por isso tenha cuidado. No entanto, o código é muito simples. By the way, a maior parte deste código pode ser removido, se você acha que pode manipular números, em vez de nomes significativos em seu código, no entanto, isso seria uma prática muito ruim de codificação. stocksnn. tsc, parte 5 Agora, depois de termos uma rede neural e o arquivo defasado com dados, precisamos ensinar a rede. O arquivo de defasagem (msftind. lgg) tem 1074 registros, portanto, é razoável usar 800 como um conjunto de aprendizado e os demais 274 como um conjunto de testes. Você pode, obviamente, abrir um arquivo de rede e clicar no botão Executar na guia Aprendizado. Mas como esta é uma introdução à avançada programação do software Cortex Neural Networks, vamos usar a linguagem de script embutida no SLANG. O código a seguir traz a caixa de diálogo modal com configurações ann NN. Note que, se você quer ter o privilégio de clicar no botão Executar, você precisa alterar o arquivo stocksnn. tsc, parte 6 O bStartLearning pode ser 0, caso em que o diálogo irá aguardar sua entrada, ou 1, então o aprendizado vai começar aytomatically. O bResumeScript, se for igual a 1, retomará o script, se você fechar a caixa de diálogo clicando no botão OK. O bReset é usado para redefinir a rede antes do início do aprendizado. Execute o script e aguarde até que o contador de época exceda 1.000 e clique em Parar. Vá até a aba Apply e clique em Apply. Isso executará todo o conjunto de dados (aprendendo e testando) por meio do NN e criará o arquivo. APL, contendo tanto a entrada-saída original quanto a previsão gerada pelo NN, assim você poderá facilmente plotá-los e compilar uns contra os outros. . Vá para a guia Saída, selecione o arquivo msftind. apl, clique em Procurar arquivo, Selecionar campos, selecione o Não na caixa de listagem à esquerda e (mantendo pressionada a tecla CTRL enquanto seleciona com o mouse) Clv e NN: Clv no caixa de listagem à direita. Clique no Gráfico para ver quão boa é a nossa previsão. Bem. É mais ou menos bom, pelo que podemos dizer olhando para ele. Ainda assim, nada de extraordinário. Este foi apenas um exemplo do que você pode fazer com o script SLANG e como automatizar as tarefas de rotina do Cortex. No entanto, até agora, não fizemos nada que você não pudesse fazer à mão. Bem. quase nada, porque se você quiser criar um arquivo de lag personalizado, digamos, com Clv-100, Clv-50, Clv-25. colunas, então você terá que usar SLANG (ou Excel.), porque você não pode fazer no Cortex sem script. FOREX Trading Strategy: o que otimizar Aqui está o nosso próximo problema. Precisamos de uma previsão de boa aparência, ou precisamos do que podemos usar para negociar com lucro? A questão parece estranha, mas pense por um momento. Vamos dizer que temos uma boa previsão de 1 hora. 95 precisas. Ainda assim, até onde pode o preço ir em uma hora Não muito longe, estou com medo. Compare isso com a situação, quando você tem uma previsão de 10 horas bastante imprecisa. Será melhor Para responder a essa pergunta, precisamos realmente negociar, uma simples comparação dos erros médios produzidos pelas duas NNs não ajudará. A segunda parte (do mesmo problema) está na maneira como definimos uma boa previsão. Vamos dizer que temos uma rede, que produz a previsão, que é 75 precisa. Compare-o ao NN, que está produzindo 100 previsões precisas. O último é melhor. Agora, DIVIDE a saída (predição) dos 100 NN precisos por 10. Teremos uma rede MUITO imprecisa, já que seu sinal não está nem perto do sinal que usamos como saída desejada. E, no entanto, ele pode ser usado da mesma forma que usamos 100 NN precisos, tudo o que temos a fazer é multiplicá-lo para 10 See, o NN é criado, ajustando o erro quadrático médio, e não a correlação, então, pelo menos em teoria, um melhor NN pode mostrar resultados ruins, quando usado para a negociação de ações / Forex real. Para resolver esse problema, precisamos testar nossos NNs usando negociação e usar os resultados dessa negociação (lucro e rebaixamentos) para decidir se esse NN é melhor que o outro. Vamos fazer isso. Vamos criar um programa, que pode ser usado para afinar o NN, e desta vez, por ajuste fino, vamos significar resultados de negociação. Negociação em Rede Neural: Poucas notas curtas Em primeiro lugar, em nosso exemplo acima, o aprendizado automático nunca irá parar, porque não especificamos nenhum critério de parada. No diálogo, ou na função CREATENN, você pode fornecer o min. erro (quando o NN alcança, pára e, se o bResumeScript estiver definido como 1, a caixa de diálogo será fechada e o script será retomado). Também você pode fornecer o número máximo de épocas, ou ambos. Não estou usando no exemplo abaixo, pelo menos não sempre, porque estou planejando assistir o aprendizado e clicar em STOP quando achar que o NN está pronto. Se você quiser fazê-lo no modo totalmente automático, preste atenção a esses parâmetros. Segundo. Uma das maneiras de tornar uma rede menor, mais rápida e mais precisa é começar com a pequena rede e aumentar seu tamanho, neurônio por neurônio. Obviamente, o número de neurônios de entrada é determinado pelo número de colunas de dados de entrada (mas também podemos variar), e o número de neurônios de saída deve ser igual ao número de colunas de dados de saída (geralmente um, mas não necessariamente ). Isso significa que precisamos otimizar o número de neurônios na (s) camada (s) oculta (s). Além disso, como mencionei, não sabemos realmente quais dados usar. O Clv-15 (15 dias atrasados) aumentará a precisão de nossa previsão Nós precisamos do Clv-256 Será melhor usar ambos no mesmo NN, ou adicionar Clv-256 estragará nosso desempenho Usando ciclos aninhados para tentar diferentes parâmetros de entrada, você pode: Criar o NN, da mesma forma que fizemos para os dados de estoque (deixe-me repassar, para o NN, não há diferença entre estoques e FOREX, aconteceu de eu ter dois arquivos de dados de alta qualidade para FOREX que eu quero processar, enquanto escrevo este texto). Tente combinações diferentes de atrasos. Tente um número diferente de neurônios na camada oculta. . e diferentes combinações de diferentes indicadores. . e assim por diante. No entanto, se você tentar todas as combinações possíveis de todos os parâmetros possíveis, NUNCA receberá seus resultados, não importa o quão rápido o seu computador seja. Abaixo, usaremos alguns truques para reduzir os cálculos ao mínimo possível. By the way, pode parecer, que se você começar a partir de um neurônio oculto, em seguida, aumentá-lo para 2, 3 e assim por diante, e em algum momento o erro (qualidade da previsão) ou o lucro (se você testar o NN por negociação usando) vai começar a descer, então você tem o seu vencedor. Infelizmente, não posso provar que, após o primeiro pico de desempenho, não pode haver um segundo. Isso significa que o erro pode ir como 100, 30, 20, 40, 50 (foi apenas no mínimo, à direita) e, em seguida, 30, 20, 10, 15. (o segundo mínimo). Nós apenas temos que testar todos os números razoáveis. Terceiro. Otimização é uma espada de dois gumes. Se você otimizar demais seu código, talvez ele não funcione fora dos dados usados ​​para ajustá-lo. Eu farei o meu melhor para evitar essa armadilha. Se você quiser fazer otimizações adicionais para o seu código ou NN, eu aconselho você a fazer uma pesquisa na Internet, para aprender mais sobre os problemas ocultos desta abordagem. Além disso, prestarei atenção à suavidade da curva de lucro. The profit that looks like 0, -500, 1000, -100, 10000 may be great, but the profit 0, 100, 200, 300, 400. is better, as it is less risky. We may talk about it later. Finally, for this example we are going to use FOREX, rather than stock prices. From the point of view of the NN there is no difference, and from my point - Forex is much more fun to trade. If you prefer stocks, the code can easily be modified. A FOREX Trading Strategy to play with First of all, lets create a prototype of our code, one that can easily be optimized in future. It is going to be a trading system, that uses a Neural Network to trade and produces a chart (profit against trade number). It will also calculate drawdown, as a measure of robustness of our trading system. forexnn01.tsc, part 1 The main difference here is that we use functions, instead of placing all the code in the main block of the program. This way it is much easier to manage. Second, we have a TestNet function. I am using a very simple algorithm of trading. The CLV indicator is confined to 0 - 1 interval (our version of CLV is), so when the indicator crosses up the dBuyLevel (see code above), I am buying, when it is crossing down the dSellLevel, I am selling. Obviously, it is not the best trading strategy, but it will do for our purpose (just for now). If you want to improve it, here are some pointers. First, you may want to have a system, that is not ALWAYS in the market. Second, you may want to use more than one indicator as inputs, and maybe, more than one NN, so that the trading decision is made based on few predicted indicators. We will add some improvements to the trading algorithm later. We use some standard assumptions of the FOREX trading: spread is 5 points, leverade is 100, min. lot is 100 (mini-FOREX). Lets take a look at our trading system. Once again, it is an oversimplified one. An important note: the TestNn() is called last, and it has access to all variables that were created to that point. So if you see a variable that I am using, without initializing it, it probably means that it was initialized in NewNn(), TeachNn() or some other function that was called prior to TestNn(). To make things easier, comments are placed in the code. forexnn01.tsc, part 2 Few words about the drawdown. There are few ways of calculating it, and we are using what I consider the most honest. The drawdown is a measure of instability of our system. What is a chance, that it will loose money Lets say the initial amount is 1000. If the profit goes 100, 200, 300, 400. the drawdown is 0. If it goes 100, 200, 100. then the drawdown is 0.1 (10), as we have just lost an amount, equal to 1/10 of the initial deposit (from 1200 to 1100). I would strongly advice against using trading systems with large drawdowns. Also, here I use a drawdown, that is to be used with variable lot size. However, in the actual samples, that come with the eBook, you will see another version: As you can see, here we always use 1000 (the initial amount) to calculate the drawdown. The reason is simple: we always use the same lot size (no money management yet), so there is no difference, how much money we have already accumulated on our account, an average profit should be constant. The worse possible scenario in this case looks like this: from the very beginning (1000 on account) we are loosing money. If we use 1000 to calculate the drawdown, we will get the worse drawdown. This will help us not to trick ourselves. For example, say, we traded for some time, and we have 10,000 on our account. Then we loose some money, and we now have 8,000. Then we have recovered, and got 12,000. Good trading system Probably not. Lets repeat the logic again, as it is very important (and it will become even more important, when we start doing money management). We trade using fixed size lots. So, statistically, there is no guarantee, that the maximum loss will not happen at the very beginning, when we only have 1000. And if it happens, we will have -1000 (10,000 - 8,000), so the trading system is probably too risky. When we talk about the money management (probably, not in this text), we will have to use different approach to drawdown calculation. Note, that in this trading system, I am using the worse possible scenario: I am buying using High and selling, using Low. Many testers do not follow these rules, and create trading systems, that work fine on historical data. But in the real life, these trading systems have very poor performance. Why Take a look at the price bar. It has Open, High, Low and Close. Do you know, how the price was moving inside the bar No. So, lets say, your trading system generated a buy signal, at the bottom of the price bar (if dLow Note that I am using dLotSize equal 0.1 lot (100). Obviously, in the real trading, you will benefit greatly, if the lot size is calculated depending on the money you have, something like: forexnn01.tsc, part 3 However, we are doing testing here, not trading. And for testing, we need, among other things, to see how smooth the profit curve is. This is much easier to do if the lot size is the same (in ideal situation, for dLotSize 100 we will get a straight line, with some positive slope, while in case of the adjustable lot size we will get an exponent, that is much harder to analyze). Later in this text, we will apply money management rules to our trading system, but not yet. After we are done with the last part of our testing function, lets walk through the rest of the code. The following function creates a CLV indicator. It takes th e interval as a parameter, which means that we can call it many times, during the optimization, passing different numbers. Note, that I am using the NN that works in the 0 - 1 interval. The data can be normalized, of course, but I chose to divide the indicator by 2 and to add 0.5, so that it is in 0 - 1 range. forexnn01.tsc, part 4 To make lag file, we can use the CREATELAGFILE function. Alternatively, we can do it by explicitly providing all the necessary code. In this case, we have more control, and we are going to need it, if we begin varying number of lagged columns and so on. forexnn01.tsc, part 5 The nRemoveFirst parameter is important. Many functions, like indicators, moving averages, lag generators, for that matter, do not work well within the first few records of the dataset. Lets say we have MA(14) - what will it place in the records 1 - 13 So we choose to simply remove the first few (unreliable) records. For the NewNn, as well as for all functions of this program, we need to pass as parameters only what can be changed during optimization process. For example, there is no need to pass a skip before parameter, as it is always the same. forexnn01.tsc, part 6 The TeachNn function simply brings up the NN dialog. forexnn01.tsc, part 7 Finally, we need a charting function. It is not mandatory, but it is always a good idea to see what our profit line looks like. The following code uses the XML to produce a chart, so it is a good idea to read the tutorial. Alternatively, you can draw the chart, rather than saving it in a file. To do it, use one of the samples, that are in the samples/scripts directory. Finally, you can modify the code, to produce HTML, rather than XML. HTML is easier to learn, but the code itself will be a bit less readable. forexnn01.tsc, part 8 Compile and Run the script. Bem. As expected, using 7 hours as an interval for the CLV produced very poor results: FOREX Trading Strategies and Optimization The reason for the poor results is quite obvious: we used the Interval, Stop Loss, buy and sell levels and other parameters, that were purely random - we just picked first that came in mind What if we try few combinations FOREX Trading Signals: What to optimize First of all, by overoptimizing the buy and sell levels, we can ruin our future performance. However we still can tune them, especially, if the performance is close for close values of buy and sell limits. For example, if we have -10 profit at buy limit equal 0.3, and 1000 profit when it equals 0.35, then there is probably a lucky coincidence, and we should not use 0.35 for our trading system, as in future it will probably not happen again. If, instead, we have -10 and 10 (instead of 1000), it may be safer to use. Generally, our trading system should be built for WORSE possible scenario, as if during the real trading the performance will be better, then during the test, we will survive, but not the other way around. We can vary the value for the indicator interval, provided we have enough trades, so that we can be confident, in terms of statistics, in the performance of a system. We certainly can vary the number of neurons, I dont think it can be overoptimized easily. We can vary number of inputs and lags for inputs. It is possible to overoptimize this, but it is not very likely to happen. And, of course, we can try different indicators. Accurate FOREX Signals: How to optimize As have already been mentioned, if we start trying all possible combinations, it will take forever. So we are going to cheat. We will create pre-defined sets of parameters, that we think are reasonable, and pass them to the program. To make as few calculations as possible, note, that Clv-1 and Clv-2 are, probably, important, but what about Clv-128 And - if we already have Clv-128, do we need Clv-129 Probably, not. So we are going to have something like Clv-1, Clv-2, Clv-4, Clv-8. Clv-128 with just few variations, which will make our calculation time thousands times shorter. FOREX Professional System Trading: Can it work at all What is it exactly we want to predict Until this point we have used 1 hour chart for EURUSD, and we were predicting the next bars CLV. Will the CLV2 be better What about CLV3 Also, especially considering the poor performance of our first trading system, it would be nice to know, that - at least in the ideal world, the goal (profitable trading) can be achieved. To answer these questions, lets create a simple testing program. We assume, that our prediction is 100 accurate, and, based on this assumption, we will use CLVN, not the NN predicted one. Thats right - we are going to take data from the future, and to use them instead of the NN prediction. This approach wouldnt work in the real life, of course, but at leats, it will give us some ideas of what to expect. When looking at the results, please keep in mind, that we are not using any advanced money management, our lot size is set to a minimum 100. If you use variable lot sizes, results will be dramatically different. But even at a lot size set to 0.1 we can see (below) that getting the information from the future is an ultimate traders holly graal. forexnn02.tsc, part 1 You are already familiar with this code, it was used in FOREXNN01.TSC. It handles data loading. The only difference is in the part that obtains the list of files in the images directory and deletes all files with the. PNG extention. The reason for this code is simple: during our tests we are going to create many - may be, thousands - image files. We dont want them to hung around after we are done. So at the beginning of the script we are deleting images, created by other scripts. forexnn02.tsc, part 2 Just a few comments. We do not want to try all possible values for, for example, CLV interval. Instead, we can create an array, that contains only values we want to test. Then (see below) we will walk through this array. Stop losses are important part of any trading strategy, so I have decided to vary them as well. It is a dangerous idea, however, as it is easy to overoptimize the system. I am planning to test different values for buy and sell levels, but it will be done in cycle, without using arrays. Unlike in our previous example, we want to have a large XML file, containing many images. To do it, I have moved the code, that is forming the XML header and footer outside of the Chart function. Read one of the online XML tutorials for details. Note, that I am using 0 as the first lag, which means, that first I am testing the indicator (CLV) that was not shifted from the future. Just to get an idea, how good out trading system would be without NN (horrible, is the right word. It is loosing all the money). Cortex uses the Internet Explorer control to display XML pages. When pages grow large, it takes a lot of memory. If your computer cannot handle it, consider creating multiple XML or HTML pages, instead. In the case of forexnn02, it should not be a problem, as the page is relatively short. Alternatively (that is what I am doing in scripts later in this text), create XML file, but do not open it from Cortex. Open them using Internet Explorer instead - unlike IE control, the Internet Explorer does not have the memory problem. Now the code that is trying different combinations of parameters. forexnn02.tsc, part 3 Here, we are using nested cycles. In every cycle, we are assidning some variable (for example, nInterval for the outer cycle). This way the cycle will assign values of all elements of a corresponding array, one in a time. Then WITHIN it, the inner cycle is used, and so on, so that all combinations of all array elements are tested. In the innermost cycle, I am calling the Test() function, to test trade, and Chart() to add a new picture to a list of images saved on disk. Note, that this Chart() does not show any images, until all cycles are completed. The Test() and CreateClv() functions are almost the same as in the previous example. The only real difference is due to the fact that it is called more then once. To do it, I am calling ARRAYREMOVE to cleanup arrays. Also, notice, that we are only creating charts for the combinations of parameters, that produce trading system with positive profit. Otherwise, we call continue, to skip the Chart() function. Finally, we have Take Profit now, so our trading system can be a bit more flexible. forexnn02.tsc, part 4 The Chart() function was broken into two pieces. The header and the footer should be written to the XML file only once, so they were moved to the main part of the program. Also, I am using the counter, to save files under the different names. The information about parameters is written to the header of an image, so we can easily see which one it is. Finally, images are only saved for winning configurations, meaning the balance at the end should be more, then at the beginning. forexnn02.tsc, part 5 Run the program (it will take some time to complete). You will end up with a large XML page with images, one for each winning configuration. Some of the results are great, however, as we used data from the future, this system will not work in the real life. Actually, if you look at the Test() function, you will notice, that the cycle stops before we reach the last element of arrClose: for(nBar nRemoveFirst 1 nBar THIS IS C, just an example. As you can see, the code is really simple. Now lets do the same using the SLANG script. As in examples before, we will keep the overall structure of the code, so that this example looks familiar. The only difference is that instead of using the built-in APPLYNN function, we call the function of our own. The code that we do not use (such as cycles) is commented, but not removed. Note, that the logic behind it was discussed in Neural Networks and Stock / Forex Trading article already. Briefly, the output of this script is formated to be compatible with the MQL, MetaTraders scripting engine. MetaTrader is a trading platform we use, if you want something different, like TradeStation, for example, you will have to alter the code to comply to its syntax. Then, in the following chapters, we are going to ins ert this code in the MetaTraders indicator, and to use it to trade. Porting script to trading platform The next step is not really required, but it is something, that may be useful. We are going to create a version of a tsc file (one above), but this time, we will use SLANG (Cortex scripting language) to emulate APPLYNN function. The reason is, in the next chapter we are going to port it to the scripting language of a MetaTrader trading platform, so it is a good idea to make sure everything works. After we run this function, we discover, that the result it produces is the same, as the forexnn05a produced, which means the code works fine. Note, that there is a difference at the beginning of the charts, as our NN does not try to process the data at the beginning (where lag is incomplete), while the built-in NN does not know about this problem. Of course, it doesnt affect the result, as the beginning of the chart is ignored by using the nRemoveFirst parameter in our script (set to 200, which is guaranteed to be larger, then our lag). Using third-party trading platform We have the NN that (more or less) can be used. We have the script, implementing this NN without calls to the Cortex-specific NN functions. Now we are going to port it to the trading platform that can be used for the real trading, which means it can contact brocker, place orders and earn (or loose) money. As a trading platform, I am going to use MetaTrader Disclaimer: I am not related to MetaQuotes in any way. I do not work for them, I am not their affiliate and so on. I use MetaTrader, ONLY because I like it. I find this program user-friendly, flexible and powerful, and not a monster. Also, it is free (compare to other packages of this class). The only (minor) problem is that it is not always easy to find the dealer using MT in your area. Then, when you do a research, you may find couple of brockers, with screenshots on their web sites, that look suspiciously familiar. Yes, they use MetaTrader, but they dont call it MetaTrader I have asked for clarification at the companys forum, and they have told me, that they dont reveal brockers using their services. Muito estranho. One of the brockers that is not hiding the fact they use MT, is Alpari. They will allow you to open a Demo account, so that you can trade in a real time, but without risking your money. Warning I am not going to recommeng services of Alpari. Once again, I am not being paid for that. Try their Demo account, and use your own judgement. Or you can start your own research at Internet forums. Finally, if you do not like the MT, you can probably follow the example below using TS, MS or some other trading platform. This is just an example. Our MT-based trading system will include two files, the indicator and an expert. This is the way they call it in MQL (scripting language of MT), and I am going to follow this naming convention. The indicator implements the neural network and draws a chart. An expert takes these data and does trading. As MetaTrader has a strategy tester, we will be able to test our strategy, to see how good it is. I will assume, that you are familiar with MQL programming, it is quite close to SLANG and tutorials can be found both at MetaQuotes and Alpari. Finally, I am using the code structure, that is borrowed from MetaQuotes forum, permission to use it the author of the corresponding posts had granted me permission to use fragments of his code. Also, as some of our MetaTrader code is the same for all experts and indicators, we moved it to a separate library file. MetaTraders libraries are nothing but includable files. This library takes care of synhronization, when two or more expert are trying to run in the same time, as well as of few other things. If you use MetaTrader, it will help you to create robust experts, in any case, the MQL language is easy to understand. mylib. mql, a helper library The code should look familiar, all I did was re-writing it, using slightly different language syntax of MQL. This indicator has two buffers, and draws two lines, one for the original NOC, and one for the NN-predicted NOC. For trading, you dont have to draw both indicator lines, of course (see MQL tutorials to learn how to do it), but I have decided to show them together, so you can compare. Another difference, that you should know about, is the way MT performs testing. It may, in some cases, be more accurate, then one we did (we did the worse case scenario). Of course, you can always to change the SLANG script from the examples above, to implement any logic you want. The result of our testing in MT is a bit better, then in Cortex, due to all these reasons. Keep in mind, that MT calculates the DD in a different way. I still think, that my way is better. In should be especially noted, that no additional optimization had been performed using MetaTraders optimizer. We have just plugged our MTS (mechanical trading system) in, and it worked as expected. É isso. You can now create Cortex Neural Network, optimize it to do trading, and to port it to the trading platform of your choice. Download Cortex Order Cortex View Price List Visibility is very important for this site. If you like it please link to this URL

No comments:

Post a Comment