Saturday 2 September 2017

Trading system gui


Forex trading Java. Net API Java C Java. Net. REDE . . REDE , . ,. Java. Net (IntelliJ IDEA, MS VS2010, NetBeans, Eclipse). , (XQL) Java C, xQL - (). JFX-API Java. Net,, FOREX, .. Windows -, (: Linux WINE) - NJ4X. Comércio com diferentes fontes de dados analisadas. Baseando suas estratégias comerciais em. Análise aprofundada dos tiques em tempo real de diferentes fontes de dados de brokers (por exemplo, DukasCopy, LMAX, TradingView). Eventos confiáveis ​​de provedores de sinais. Tecnologias de desenvolvimento high-end (como disruptor LMAX). Faça com que as suas aplicações sejam rápidas Ao aplicar o design dos processadores de carrapatos que não bloqueiam Execução de tarefas independentes (análise de posição, registro, reflexão GUI) em paralelo Simplificar a estrutura geral do programa Ao se afastar de uma única limitação do contexto comercial de algumas plataformas Forex, ou seja, várias ordens de A mesma conta é executada em paralelo. Guias de GUI simples para o aplicativo Advanced Matlab Trading Olá, se você é novo aqui, você pode se inscrever no feed RSS ou no feed de e-mail para obter atualizações sobre tópicos de Matlab indocumentados. I8217d gostaria de apresentar o blogueiro convidado Alex Boykov, um dos desenvolvedores da Walk-Forward Analysis Toolbox para Matlab (WFAToolbox). O que possibilita o desenvolvimento acelerado de estratégias comerciais usando o Matlab. Hoje, Alex explicará como eles usaram guias de uma maneira que pode ser replicada por qualquer outra GUI do Matlab, não necessariamente com a versão mais recente do Matlab. Nesta publicação, queremos falar sobre como resolvemos o problema da criação de tabulações para o WFAToolbox. Nós exigimos os seguintes critérios: as guias precisam ser atraentes e parecem guias, não como botões com painéis. As guias precisam ser desenhadas usando o editor GUIDE para que o conteúdo do painel da guia possa ser facilmente editado. As abas podem ser facilmente Adicionado e removido sem adições importantes de código. Eles devem ser simples de usar em diferentes projetos e tarefas. O usuário sofisticado da Matlab pode pensar que este é um objetivo trivial, visto que existem inúmeras soluções para este problema no Matlab Exchange e, desde o Matlab R2014b, ele suporta a criação de guias nativas com o Ajuda de funções uitab e uitabgroup. Além disso, com a adição do App Designer. Pode parecer que esta questão será resolvida com a nova interface para guias de criação de GUI que podem ser criadas diretamente no editor. No entanto, nesta publicação, tentaremos explicar por que nenhum dos métodos acima se encaixa nos três critérios declarados e apresentaremos nossa própria solução para as guias. Independentemente do fato de que apenas assumimos o problema em 2013, quando começamos a criar nosso WFAToolbox, no momento de redigir este artigo (janeiro de 2016), esse problema ainda é um problema relevante para muitos usuários da Matlab. Após o lançamento do R2016a, é duvidoso que o problema seja totalmente resolvido. É por isso que criamos nosso próprio exemplo de um código que lançamos no Matlab File Exchange (veja abaixo). WFAToolbox habilitado para tabulação (aplicativo Matlab para negociação algorítmica) 1. As guias devem parecer guias. Quando criamos o WFAToolbox, nosso objetivo era criar uma aplicação que permitisse a todos os interessados ​​criar uma estratégia de negociação nos mercados financeiros para poder Para o fazer, juntamente com a oportunidade de usar todo o potencial do Matlab e suas ferramentas progressivas, incluindo algoritmos genéticos, computação paralela, econometria, redes neurais e muito, muito mais (basicamente, qualquer análise de dados que pode ser feita em Matlab ). Ao mesmo tempo, não queremos que nossos usuários passem tempo no desenvolvimento de um ambiente de software avançado para testes, análises e execução de estratégias, mas sim para fazê-lo a partir de uma GUI fácil de usar. Assim, no WFAToolbox, você pode criar, testar e, finalmente, lançar sua própria estratégia comercial ou testar uma hipótese em poucos minutos, mesmo com pouco conhecimento prévio da programação da Matlab. É claro que, para encaixar esses recursos em um único aplicativo, garanta que seja fácil de entender, mesmo por iniciantes, e que seria simples de operar, era necessário prestar especial atenção à interface gráfica. Na nossa opinião, talvez a solução mais inteligente para colocar os muitos controles e funções necessários para aplicativos sofisticados seja criando guias. Porque sabíamos que não éramos os únicos que pensavam assim, começamos a procurar exemplos de códigos criados anteriormente no Matlab Exchange. Ficamos muito surpresos quando encontramos apenas algumas soluções, a maioria das quais nem sequer combinou nosso primeiro critério de atratividade de tabulações. Infelizmente, a maioria deles era antiga e pouco atraente (parecia mais com botões com painéis). Mesmo o novo App Designer tem abas que nos nossos olhos se parecem mais com botões que guias. Tendo tentado muitos desses utilitários em nossas versões de teste, chegamos à conclusão de que Tab Panel Constructor v.2.8 seria a melhor opção para nós. Ele se encaixa em todos os três critérios acima. Em 2013, usamos isso com bastante sucesso nas nossas primeiras versões do WFAToolbox. Tudo parecia ótimo, mas, infelizmente, mais tarde descobriu que o problema estava longe de ser resolvido. WFAToolbox habilitado para tabulação (aplicativo Matlab para negociação algorítmica) 2. As guias precisam ser criadas através do GUIDE Infelizmente, com o tempo, verificou-se que com a versão mais recente do Matlab didn8217t funcionou sem problemas e o código que queríamos usar como nossa solução Praticamente se separaram na nossa frente. Depois de adicionar alguns elementos na GUI, a formatação parcial foi perdida e tivemos que refazer tudo. O processo de adicionar as tags criou muitos erros que precisavam ser resolvidos imediatamente. Em 2014, já possuímos mais de 500 clientes usando nossa aplicação. Começamos a ouvir, cada vez mais frequentemente, que seria ótimo se as cores e as localizações das abas pudessem ser alteradas. Descobriu-se que, dependendo do sistema operacional e da versão Matlab, o formato da guia muda. Então, tomamos a decisão de mudar nossas guias. Naquele tempo, uma nova versão do Matlab foi lançada, R2014b. Isso nos permitiu criar guias com a ajuda das funções uitabgroup e uitab. Os resultados foram exatamente como queríamos: atraente, agradável e apareceu como abas reais: UI com Tab Panel no Matlab R2014b. No entanto, fomos desencorajados que não puderam ser criados no GUIDE Durante esse período, estávamos desenvolvendo um módulo para o WFAToolbox, que permitiria aos usuários baixar dados do Google Finance: 10.000 cotações diárias e intradias gratuitas de 20 trocas. As guias foram as mais fáceis de usar ao alternar entre baixar dados gratuitos do Google Finance e baixar dados de usuários personalizados do espaço de trabalho Matlab. Mas inserindo tantos elementos através do código e não através de um editor O que acontecerá quando adicionarmos 100.000 dados históricos gratuitos do Yahoo Finance para futuros, títulos, moeda, ações e outros. Nós não queremos criar tudo isso sem o editor GUIDE. É por isso que Chegamos à conclusão de que é necessário que criemos um código de guias, começando do zero, para que eles correspondam com os três dos nossos critérios. WFAToolbox habilitado para tabulação (aplicativo Matlab para negociação algorítmica) 3. As guias devem ser fáceis de adicionar e editar Nós escolhemos o painel Tab simples. Que existiu no Matlab File Exchange desde 2007, como base para o nosso novo código porque consideramos que ele é o exemplo mais elegante e atraente das guias GUIDE. Esta solução corresponde aos nossos dois primeiros critérios, mas nós realmente queríamos que fosse universal e fácil de usar. Nós também queríamos ter um processo simplificado de adição e exclusão de tabulações para que em vez de ter que copiar e reescrever uma grande quantidade de código e outros detalhes, poderíamos apenas adicionar uma única linha de código. Queríamos economizar custos trabalhistas, porque muitas vezes adicionamos novos recursos ao WFAToolbox e isso inclui ter que adicionar constantemente novos elementos às guias existentes, além de adicionar novas guias. Então, reescrevemos o código e criamos nosso próprio exemplo universal para que todos possam usá-lo para sua vantagem. Carregamos o código para o Matlab File Exchange, onde pode ser baixado gratuitamente: guia GUI simples otimizado. Em seguida, descreveremos como usar este código para adicionar tabulações e como usar o processo para a implementação de tarefas. Então, para adicionar uma nova guia, você precisa: Abra o GUIDE e aplique o uipanel e o uitext de forma a tornar o uipanel mais fácil de trabalhar no futuro e coloque o uitext em um local onde o interruptor da guia esteja localizado. Mude o nome do Tag do uitext para 8216tab8217, N, 8217text8217, onde N é o índice da guia. No nosso exemplo, estamos criando a 3ª guia, então nossa tag seria 8216tab3text8217. Usando esse mesmo princípio, 8216tab8217, N, 8217Panel8217 precisa ser renomeado para marcar uipanel no 8216tab3Panel8217. Adicione o nome da nova guia à variável TabNames. No nosso exemplo, usamos 8216Tab38217 (mas você pode usar qualquer nome). Como o código foi criado O princípio primário de como nosso código funciona é que criamos os objetos uipanel e uitext no GUIDE, então tomamos as coordenadas uitext e substituímos os objetos pelos eixos e objetos de texto. Atribuímos-lhes uma função de retorno de chamada que funciona quando o objeto é clicado. A função torna visível o uipanel visível e altera as cores da aba. Let8217s olhem para o código de função SimpleOptimizedTabs2.m. Que faz parte da apresentação simples da guia GUI otimizada. 1. Configurações de tabulação Se mudarmos os parâmetros em Configurações, podemos controlar a aparência de nossa GUI e abas. Assim, o parâmetro de TabFontSize altera o tamanho da fonte no switch de tabulação e, com a ajuda de TabNames, podemos renomear ou adicionar nomes de tabulação e com FigWidth. Podemos determinar a largura normalizada da GUI. 2. Alterando a largura da figura A largura da GUI muda no código, porque não é confortável esticar e diminuir manualmente a figura. É mais benéfico ver o conteúdo de todas as guias e trabalhar com eles sem ter que mudar a largura sempre que você faz uma pequena alteração. Se você quiser tornar seu uipanel maior do que no exemplo, faça isso com o editor GUIDE. No entanto, não se esqueça de alterar o parâmetro FigWidth. Por favor, note que, devido às peculiaridades do editor, você não pode reduzir uma figura por altura sem deslocar as localizações. Você só pode fazer isso se estiver alterando a largura, por isso recomendamos apenas adicionar guias aumentando a largura da figura e não o comprimento. 3. Criando guias Faça o seguinte para cada guia: obtenha as coordenadas uitext, que inserimos no painel GUI, e posicione os eixos e o texto usando estas coordenadas (usando as configurações necessárias de vestuário externo). Usando o parâmetro ButtonDownFcn, podemos ligar a função de retorno de chamada, chamada ClickOnTab. Para alternar guias ao clicar no texto ou nos eixos. Na verdade, se você tem nomes de abas longas e deseja alterar o tamanho do switch, então talvez seja necessário corrigir o parâmetro Posição para o objeto de texto, adicionando os coeficientes de correção para ele. Infelizmente, isso também é uma característica do GUIDE. Se alguém puder resolver este problema para que o texto sempre seja mostrado no meio da guia do switch independentemente da largura, gostaríamos de ler qualquer sugestão nos comentários para esta publicação. 4. A função de retorno de chamada ClickOnTab A função de retorno de chamada ClickOnTab é usada sempre que você clica no interruptor da guia e o resultado das opções são visíveis invisíveis no uipanel s e nas mudanças nas cores dos switches. Mais informações sobre nossa caixa de ferramentas de análise Walk-Forward para troca algorítmica (WFAToolbox) podem ser encontradas no wfatoolbox. Publicações relacionadas: Seminários avançados de Matlab 8211 Londres, 10-14 de março de 2014 Os cursos avançados de treinamento de Matlab serão realizados em Londres, de 10 a 14 de março de 2014. Dois cursos separados serão realizados: Programação avançada de Matlab 8211 2 dias (10 a 11 de março) , Incluindo as melhores práticas, preparando relatórios profissionais, redação de código profissional e ajuste de desempenho. US1199 Advanced. Grades de propriedade JIDE avançadas As grelhas de propriedade JIDE podem usar componentes complexos de renderização de células e editor e podem assinalar eventos de alteração de propriedade de forma assíncrona para callbacks Matlab. Criando uma classe UDD simples Este artigo explica como criar e testar pacotes, classes e objetos UDD personalizados. Demonstração do sistema de negociação em tempo real É apresentada uma demo de sistema de negociação de ponta a ponta em tempo real baseada em Matlab. Demonstração do sistema de negociação em tempo real Em 23 de maio de 2013, dei uma apresentação na MATLAB Computational Finance Conference em Nova York. O quarto estava cheio com cerca de 200 profissionais do setor financeiro. A energia e o feedback foram tremendos, foi um ótimo. Gerentes de layout de Matlab: uicontainer e parentes. Matlab contém alguns gerentes de layout de GUI sem documentos, o que facilita muito o gerenciamento de componentes GUI em figuras que mudam dinamicamente. 12 Responses to Simple GUI Tabs para Advanced Matlab Trading App Chandrakanth Terupally diz: Fiquei feliz de descobrir que as guias finalmente chegaram, mas minha alegria foi curta vivendo ao descobrir que GUIDE não poderia criar guias. No ano passado, um cliente solicitou a adicionar uma guia a uma GUI existente feita no GUIDE e eu não queria programar o layout GUI. Com alguns ajustes simples, eu poderia fundir duas GUIs independentes feitas em GUIDE em duas guias de uma única GUI usando uitab. Funcionou bem. A desvantagem é que esse método torna-se tedioso se os componentes em ambas as abas precisam de mudanças. P. s. Não sei se este é um método conhecido. Publicar isso no meu blog foi na minha lista de tarefas por um tempo, se não for um método conhecido, vou publicar um link aqui quando eu bloguei. Dnis Riedijk diz: eu apenas copio o conteúdo de uipanels para minhas guias na função de abertura da GUI, copiando a posição do primeiro uipanel como posição do uitabgroup. Depois, apagar os uipanels. Dessa forma, eu construo minhas guias no guia. Bastante simples na verdade. Só precisa colocar o uipanel correto para a frente no guia quando preciso editar um. Stephan Arendt diz: usei seu código para criar Tabs e Childtabs. Quando eu os comparei ao seu IB-Matlab Gui, notei que as Tabs se parecem muito melhores do que os campos de texto padrão. Você pode me dar uma dica sobre o que posso fazer para obter essas fronteiras melhores. Te vi no Matlab Expo 2016 em Munique. O seu discurso foi muito bom e me fez mudar de criação de múltiplas figuras para guias. Stephan 8211 obrigado pelo feedback sobre a apresentação da minha Exposição, mas eu não consigo entender sua pergunta: IB-Matlab é 8220just8221 um conector entre InteractiveBrokers e Matlab 8211, não contém nenhuma GUI. Talvez você diga a ferramenta Walk-Forward Analysis (WFA) que Alex Boykov apresentou no artigo acima. Por favor, esclareça sua pergunta, porque atualmente não faz sentido. Stephan Arendt diz: Yair eu estou falando sobre a GUI usada em sua ferramenta (IB-Matlab: troca com InteractiveBrokers usando Matlab). Sry, eu usei apenas essa abreviatura falsa. E sim eu uso a ferramenta mencionada acima para construir. Minha pergunta é: como posso obter guias de visão mais realistas. Similhe para sua GUI Stephan 8211 novamente eu reitero: IB-Matlab não contém nenhuma GUI. É uma função Matlab pura sem qualquer GUI. Talvez você esteja se referindo a algum programa GUI que esteja usando o IB-Matlab 8211 O IB-Matlab não possui GUI. De qualquer forma, para obter guias de aparência realista, você pode usar as funções uitabgroup e uitab do Matlab8217s. Estou tentando inserir o código da guia na minha GUI existente. Estou recebendo o erro: Referência ao campo inexistente 8216SimpleOptimizedTab8217. Eu analisei seu código e há realmente para fazer referência ao campo. Como é que ele só pede a referência ao incorporar uma GUI existente e esse problema pode ser resolvido Obrigado Mosawi Obrigado por sua pergunta No código do artigo usa uma figura chamada 8220SimpleOptimizedTab8221, então você deve mudar esse nome para o nome da figura8217s . Também podemos sugerir que você tome o código SimpleTabPanel e a GUI e adicione o seu código, e vice-versa. Obrigado pela sua resposta. Eu agora incorporei o seu código de guia engenhoso para minha GUI. Gostaria de publicar meu software no futuro, quais são suas políticas a respeito disso. Sinta-se livre para usá-lo. Também será ótimo se você puder notar em algum lugar que o 8220GUI Tabs foi construído com a ajuda do WFAToolbox Team (wfatoolbox) 8221, mas depende de você. Estou tentando o código conforme fornecido, quando eu mudar o 8216SimpleOptimizedTab8217 para o meu nome de figura, mas ainda mostra referência ao campo inexistente 8216registration8217. O nome da minha figura é 8216registration8217. Você pode me ajudar a descobrir o problema Categorias Comentários recentes Gabriele (1 dia 14 horas atrás). Obrigado pela postagem muito útil Talvez I8217m esteja errado, mas parece ser algo relacionado à paralelização intrínseca combinada com uma precisão única. Na verdade, como base, o. G. (2 dias 11 horas atrás). Oi, eu tenho um problema semelhante no Linux, Ubuntu 16.04. O Matlab desliga quando usa o comando 8220print8221 para exportar figuras. Não consigo interromper o software e eu tenho que matar. Donn Shull (3 dias 11 horas atrás). Oi Matt, A meu conhecimento, a resposta é não. No mundo automotivo, existe um sistema para fazer o que você descreve. É bastante complexo e baseado em um conjunto fechado de padrões. Yair Altman (3 dias 11 horas atrás). James 8211 o ponto inteiro de usar parfor não é usar um único segmento de computação, mas sim ser executado em paralelo em vários trabalhadores. O código no artigo era simplesmente. Xiangrui Li (3 dias 11 horas atrás). Parece um erro grave. Eu testei a média em vez de std, e o resultado é semelhante. Talvez o erro para std seja devido ao erro do que eu joguei com tamanhos diferentes. James (4 dias 12 horas atrás). Tente novamente com - singleCompThread zed (4 dias 12 horas atrás). Eu tive que lidar com o parfor sobre arrays de objetos 8216challenge8217 ao processar invocando um método que opera em propriedades internas, não se preocupe em retornar o. Matt (5 dias 8 horas atrás). Algo que encontrei recentemente foi uma necessidade de fornecer inicialização de tempo de execução de objetos de parâmetros de dados do Simulink em um aplicativo compilado. Resolvi o problema ligando para um arquivo de configuração. Tom (10 dias 23 horas atrás). Infelizmente, parece que a lenda não pode mostrar a linha correspondente como um gradiente. A cor da linha parece coincidir com uma extremidade do gradiente. Eu tentei um bungch de coisas, mas. Dan Dolan (11 dias 4 horas atrás). Eu postei uma solução alternativa parcial no Mathworks File Exchange. Mathworksmatla bcentralfileexchange60953-sc aled-figure-class Yair Altman (16 dias 10 horas atrás). Kristian 8211 sim, recurso (OpenGLLoadStatus) funciona no R2015a. Seria interessante saber como você está usando esse recurso 8211 você pode nos dizer o Yair Altman (18 dias 16 horas atrás). Stefano 8211 respondendo isso é além do tempo que eu posso gastar em um comentário no blog. Você está convidado para me enviar um e-mail (altmany no gmail) para uma breve consulta sobre o seu. Yair Altman (18 dias 16 horas atrás). Daniele 8211, esse fragmento de código não está conectado ao programa principal, foi apenas ilustrativo (como no pseudo-código). SortableTreeTableModel não possui um método removeRow. Daniele F. (18 dias 17 horas atrás). Prezado Yair, Em primeiro lugar, obrigado por esta ótima ferramenta. Segundo: I8217m não é um usuário Java Pergunta: No final do seu código, você escreveu algumas funções de exemplo. Eu queria usar o. Stefano (19 dias 18 horas atrás). Oi, Yair, I8217m tentando implementar seu widget de Autocompletar na minha GUI (mais simples do que a sua). I8217ve decidiu dividir o código para melhor entendê-lo, mas eu tenho dois. Entre em contato com a cópia Matlab indocumentada 2009-2017 Yair Altman

No comments:

Post a Comment