Saturday 5 August 2017

Haskell Trading System


Por isso, estava fazendo essa tarefa na Uni e eu tenho um profundo desejo de fazer a tarefa no haskell. É uma simulação de um mecanismo comercial. A situação é que temos dados provenientes de um csv e desejamos analisar cada registro e processá-lo de certa forma dependendo de qual fase de mercado é atribuída. Justificação para o uso do haskell, é que eu vejo o mecanismo comercial como sistema funcional pesado. Eu tive experiência no haskell antes, mas apenas uma experiência menor, nunca nada tão grande. Estávamos querendo executar um tópico que importaria os csvs para uma fila de pedidos não processados ​​e, em seguida, o programa principal acessaria esta fila para processamento de cada ordem. No entanto, como eu poderia conseguir isso, eu sei que em C, eu simplesmente configuraria a classe para que ele pudesse acessar a classe CSVParser que segurava a fila não processada. Isso também significa que o segmento de importação continuaria sendo executado por todas as fases do mercado ou até que ele acabasse de importar o arquivo csv. Qualquer orientação sobre como conseguir isso seria ótima (não procurando um script completamente digitado, apenas o que as coisas no haskell eu precisaria olhar) pediu 29 de março às 23:33 fechado como não uma pergunta real de Ritch Melton. Dflemstr. Flexo 9830. Michael Petrotta. Graviton 30 de março 12 às 1:45 É difícil dizer o que está sendo perguntado aqui. Esta questão é ambígua, vaga, incompleta, excessivamente ampla ou retórica e não pode ser razoavelmente respondida na sua forma atual. Para obter ajuda para esclarecer esta questão para que ela possa ser reaberta, visite o centro de ajuda. Se esta questão pode ser reformulada para se ajustar às regras na Central de Ajuda. Por favor, edite a questão. Análise automatizada Trading Trading Automated every tick Executar em microseconds Lightspeed oferece duas formas de soluções de negociação automatizadas Lightspeed Gateway e Lightspeed Trader API. A Lightpeed Trader Application Programming Interface (API) expõe várias bibliotecas no Lightspeed Trader que os programadores C podem usar para acessar a funcionalidade Lightspeed Traders. Os usuários podem criar bibliotecas de links dinâmicos (DLLs) que podem ser iniciados a partir da janela Lightspeed Graybox para executar essas funções. O Lightspeed Gateway é um sistema de negociação totalmente automatizado que oferece uma super baixa latência para as bolsas de ações domésticas, incluindo a NYSE e o mercado de ações NASDAQ. O Lightspeed Gateway é completamente agnóstico da plataforma e pode ser usado em todos os principais sistemas operacionais e linguagens de programação. Precisa de ajuda Entre em contato com a nossa equipe Lightspeed hoje Lightspeed Institutional é uma divisão da Lightspeed Trading, LLC (membro FINRA. SIPC). A resposta do sistema, a execução comercial e os tempos de acesso à conta podem variar devido a uma variedade de fatores, incluindo volumes de negociação, condições de mercado, desempenho do sistema, atrasos nos dados do mercado e outros fatores. Valores mobiliários executados através da Lightspeed Trading, LLC. Copyright copy 2001-2017, Professional Trading Solutions, Inc. Todos os direitos reservados. Auto é uma DSL e uma plataforma Haskell que fornecem uma API com semântica declarativa, composicional e denotativa para programas, jogos e automação de nível discreto, localmente stateful, interativos, e com Serialização derivada implicitamente. É adequado para qualquer domínio em que a entrada ou saída de seus programas seja um fluxo de valores, eventos de entrada ou exibições de saída. No alto nível, ele permite que você descreva seu programa interativo ou simulação como transformador de fluxo de valor. Por composição e transformação de outros transformadores de fluxo. Então, coisas como: Bots de bate-papo GUIs de jogos baseados em turnos Simulações numéricas Controladores de processo Interfaces baseadas em texto (Valor) transformadores de fluxo, filtros, fusões, processadores Foi chamado FRP para contextos de tempo discreto. Intrigued Excited Comece no tutorial É parte deste diretório do pacote e também no github no link acima. O servidor de documentação de desenvolvimento atual é encontrado em mstksg. github. ioauto. A partir daí, você pode verificar minha série All About Auto no meu blog, onde eu quebro projetos de exemplo e mostro para abordar projetos na vida real. Você também pode encontrar exemplos e demonstrações no repo de auto-exemplos no github. HasLell DSLlibrary. É uma biblioteca Haskell que fornece um idioma específico do domínio para compor e declarar seus jogos de programas. Por que Haskell bem, Haskell é um dos únicos idiomas que tem um sistema de tipo expressivo o suficiente para permitir composições tipo seguro, sem entrar no seu caminho. Toda composição e componente são verificados em tempo de compilação para se certificar de que eles até fazem sentido, para que você possa trabalhar com a garantia de que tudo se encaixa ao final - e também da maneira correta. O sistema de tipo também pode orientá-lo no seu desenvolvimento. Tudo isso sem a sobrecarga de produtividade de anotações de tipo explícito. Com toda a honestidade, reduz a dor de cabeça de grandes projetos - e o que você precisa manter na sua cabeça enquanto você desenvolve e mantém - pelo menos 90. Plataforma. Não só fornece ferramentas mínimas para criar seus programas, mas também fornece uma plataforma para executá-los e desenvolvê-los e integrá-los, bem como muitas funções libraryAPI para processos comuns. Declarativo. Não é imperativo. Ou seja, ao contrário de outras línguas, você não programa seu programa dizendo que isso acontece, então isso acontece. E então no caso de A, isso acontece no caso B, algo mais acontece. Em vez de especificar seu programgame por uma série de etapas e procedimentos de mudança de estado (um loop de jogo), você declara como as coisas são. Você declara relações fixas ou em evolução entre entidades e processos e interações. E este processo de declaração é de alto nível e puro. Denotativo. Em vez de seu programa ser construído de peças que mudam as coisas e executem as coisas de forma sequencial, todo o seu programa é composto de blocos de construção semânticos significativos que denotam relacionamentos e conceitos constantes. A composição de tais blocos de construção também denotar novos conceitos. Seus blocos de construção são idéias bem definidas. Composição. Você cria seu eventualmente complexo programa com componentes pequenos e simples. Estes componentes simples compõem uns com os outros e composições de componentes também compõem com outros componentes. Toda camada de composição é perfeita. É o princípio escalável da arquitetura do programa na prática: se você combina um A com um A, você não obtém um B, você ganha outro A, que pode se combinar com qualquer outro A. Como tubos unix, onde você pode criar programas complexos simplesmente por tubulação Juntos simples, básicos. Passo discreto. Esta biblioteca destina-se a coisas que, discretamente, não possuem um conceito significativo de tempo contínuo. Os bons exemplos incluem jogos baseados em turnos, bots de bate-papo e exemplos incorretos de autômatos celulares incluem jogos em tempo real e simulações comerciais diárias. Localmente com estado. Cada componente encapsula seu próprio estado local (e oculto). Não existe um estado global ou impiamente compartilhado. Isso contrasta com as bibliotecas das bibliotecas de mônadas do estado gigante onde você carrega todo o estado do programa de jogo em algum tipo de dados gigantes, e seu loop de jogo simplesmente é uma atualização desse estado. Se você tem um componente que representa um jogador e um componente que representa um inimigo - os dois componentes não precisam se preocupar com o estado do outro, nem com a estrutura de seu estado compartilhado. Além disso, você nunca precisa se preocupar com algo que lê ou modifica uma parte do estado compartilhado que não deveria ser lido ou modificado. (Algo que você não pode guaruntear na implementação ingénua da técnica de mônada do estado gigante). Interativo . O comportamento ea estrutura do seu programa podem responder e variar dinamicamente com a interação externa. Não estou certo de mais para elaborar a palavra interativa, na verdade, programas interativos, jogos e automação. Programas, jogos e automationssimulations. Se você está fazendo qualquer coisa discreta que encapsula algum tipo de estado interno, especialmente se é interativo, isso é para você. D Serigrafia derivada implícita. Todos os componentes e suas composições por construção são automaticamente congeláveis ​​e serializáveis, e recarregados e retomados com todo o estado interno restaurado. Como foi chamado por ertes, seus estados de salvamento são gratuitos. O canal oficial de suporte e discussão é o haskell-auto no freenode. Você também pode geralmente me encontrar (o mantenedor e desenvolvedor) como jle on haskell-game ou haskell. Há também um canal gitter se IRC não é sua xícara de chá. Além disso, contribuições para documentação e testes são bem-vindos. D Auto é distinto de um transformador de estado (estado de mônada ou passagem de estado explícito), na medida em que lhe dá a capacidade de compor e isolar implicitamente os transformadores de estado e o estado. Ou seja, imagine que você tenha duas mônadas de estados diferentes com diferentes estados, e você pode compor em um único loop gigante, e: você não precisa criar um novo tipo composto, você pode adicionar um novo componente lidando com seu próprio estado sem alterar o Tipo de estado total. Você não pode escrever nada falando. Você não pode escrever nada que possa interferir com o estado interno de quaisquer componentes que cada um esteja isolado. Então --- Auto é útil em uma abordagem de transformador de estado monadstate nos casos em que você gosta de criar seu problema com vários componentes individuais e os compõe todos juntos de uma só vez. Os exemplos incluem um bot de bate-papo stateful de vários módulos, onde cada módulo do chat-chat consiste em seu próprio estado interno. Se você usou uma abordagem de mônada estatal, toda vez que você adicionou um novo módulo com seu próprio estado, você deve adicioná-lo ao tipo de estado total. Isso simplesmente não escala. Imagine uma arquitetura grande, onde cada composição acrescenta mais e mais complexidade. Agora, imagine que você pode simplesmente lançar outro módulo com seu próprio estado sem nenhum outro componente, mesmo cuidando. Ou seja capaz de limitar o acesso de forma implícita, sem limitação explícita através do levantamento com o zoom das lentes, etc. (Sem isso, você basicamente tem estado global - o mesmo que fomos a Programação FuncionalHaskell para evitar em primeiro lugar E a coisa Essas linguas têm tentado impedir nos últimos vinte anos de desenvolvimento de linguagem. Por que ir para trás) Além de todas essas razões práticas, o Estado impõe uma grande mudança imperativa em seu design. O Estado força você a começar a modelar seu problema, pois isso acontece, então isso acontece, então isso acontece. Quando você escolhe usar uma moneta de estado ou uma abordagem de aprovação de estado, você imediatamente começa a enquadrar todo o programa de uma abordagem imperativa. Auto permite que você estruture seu programa de forma direta e declarativa. Isso lhe dá esse estilo incrível que a programação funcional prometeu em primeiro lugar. Em vez de dizer, faça isso, então, você diz que é assim que as coisas. Apenas são. Esta é a estrutura do meu programa, e esta é a natureza da relação entre cada componente. Se você já está usando Haskell. Eu não deveria explicar-lhe os benefícios de um estilo declarativo de alto nível sobre um imperativo :) Dito isto, existem casos em que o Auto é a ferramenta errada ou não é muito útil. Casos envolvendo tempo inerentemente contínuo. Auto é destinado a situações em que o tempo progride em tiques discretos --- inteiros, não reais. Você pode falhá-lo fingindo tempo contínuo com amostragem discreta. Mas o FRP é um sistema de abstrações muito, muito mais poderoso e seguro para lidar com isso do que o Auto. Veja a seção posterior no FRP. Casos em que você realmente não possui intercomuniões entre diferentes componentes com estado. Se todo seu programa for apenas um foldr ou scanl ou iterar. E você não tem partes interativas múltiplas de seu estado, o Auto realmente não pode oferecer muito. Se, no entanto, você tem múltiplas dobras ou estados que deseja executar juntas e compor, então isso pode ser útil, o recurso Injetor IO e o gerenciamento de recursos. Auto não é tubulação ou conduta. Todo o IO é feito fora dos componentes Automáticos O Auto pode ser útil para processamento de arquivos e modificação de fluxo, mas somente se você lidar separadamente com as porções de IO. O automóvel funciona muito bem com tubos ou condutas, essas bibliotecas são usadas para conectar Auto para a palavra externa e fornecer uma interface segura. Em outras palavras, o Auto lida com os fluxos de valores, enquanto os condutas de tubulação controlam os fluxos de efeitos. Relação com o FRP Auto empresta muitos conceitos da Programação Reativa Funcional --- especialmente bibliotecas com seta e bibliotecas locais como netwire. Na melhor das hipóteses, Auto pode ser dito para trazer muitas idéias da API e empresta certos aspectos do modelo semântico do FRP e incorpora-os como parte de um modelo semântico mais amplo, mais apropriado para contextos discretos discretos discretos. Mas, os usuários de tais bibliotecas provavelmente poderiam apanhar rapidamente o Auto. E o reverso é (espero) também. Note-se que esta biblioteca não deve ser qualquer tipo de substituição significativa para implementar situações que envolvem conceitos de tempo contínuo (valor real, em vez de valor inteiro) (como jogos em tempo real) você pode fingir usando o Auto. Mas nessas situações, o FRP fornece uma semântica e um conjunto de conceitos muito superiores para trabalhar em tais contextos. Ou seja, você pode fingir, mas, em primeiro lugar, você perde quase todos os benefícios do FRP. Os esquemas de serialização do problema Safecopy são derivados implicitamente, mas se o seu programa muda, é improvável que o novo esquema de serialização possa retomar algo do antigo. Agora, a solução é apenas serializar pequenos aspectos do seu programa que você pode gerenciar e manipular diretamente ao mudar seu programa. Uma solução melhor pode existir. Em princípio, muito pouco do seu programa deve ser mais de IO como uma mônada. Mas às vezes, torna-se bastante conveniente para fins de abstração. Manipular erros de IO de forma robusta não é o meu ponto forte, e assim, enquanto quase todas as linguagens automáticas evitam IO e tempo de execução, algumas aplicações podem ser inevitáveis. O auto não é e nunca será sobre a transmissão de efeitos IO. Mas saber quais partes do IO se encaixam no modelo semântico dos transformadores de fluxo de valor renderiam muita visão. Além disso, a maioria dos corredores automáticos (as funções que traduzem um Auto em IO que o executam) poderão também se beneficiar de um olhar mais rigoroso. Testes de testes ainda não foram feitos, desculpe Trabalhando sobre esses :)

No comments:

Post a Comment