Thursday 15 March 2018

Trading system c ++


Aqui estão algumas sugestões. Pesquise a Amazon (ou o seu livreiro favorito) para livros sobre financiamento quantitativo C. Encontrei vários títulos que parecem promissores. Eu fui para o SourceForge (pesquisando em Sistemas de Negociação) e vi vários sistemas promissores que poderiam dar uma vantagem na redução, MAE, etc. Eu uso o TradeStation 9.0 para comparar várias estratégias de negociação. Ele fornecerá gráficos MAEMFE, curvas de equidade comercial e estratégias de classificação baseadas em redução máxima. Mas não se esqueça de ler os Sistemas de Negociação que Trabalham: Construindo e Avaliando Sistemas de Negociação Efetivos por Thomas Stridsman para uma crítica adequada dos relatórios gerados pela TradeStations. Respondeu 11 de abril às 15:51 O OP queria quotesome das funções que seriam usadas no desenvolvimento de uma estratégia de negociação. Embora eu não possa citar qualquer evidência em apoio, tenho certeza de que as ferramentas de análise técnica podem ser usadas no desenvolvimento Tais estratégias. Quanto a TAlib está escrito em C ou C, bem, eu estou corrigido. Ndash babelproofreader Apr 3 11 em 14: 37BarsMonster: Eu poderia ver, no entanto, para coisas como pilhas de rede, que são completamente dependentes da plataforma, exigiria algum conhecimento antes de poder mudar plataformas. Mais coisas como garfo que são comuns no mundo POSIX, mas não são possíveis em um ambiente Windows. Acho que isso é uma resposta razoável. Ndash Billy ONeal Ago 29 10 às 0:55 LinuxUNIX é muito mais utilizável para usuários remotos concorrentes, tornando mais fácil o script em torno dos sistemas, use ferramentas padrão como grepsedawkperlrubyless em logs. Sshscp. Tudo isso apenas lá. Há também problemas técnicos, por exemplo: para medir o tempo decorrido no Windows, você pode escolher entre um conjunto de funções com base no controle do relógio do Windows e no QueryPerformanceCounter (). O primeiro é incrementos cada 10 a 16 milissegundos (nota: alguma documentação implica mais precisão - por exemplo, os valores de GetSystemTimeAsFileTime () medida para 100ns, mas eles relatam o mesmo limite de 100ns do relógio para assinalar novamente). O último - QueryPerformanceCounter () - tem problemas de exibição em que diferentes coresppus podem relatar relógios-desde-inicialização que diferem por vários segundos devido a serem aquecidos em diferentes momentos durante a inicialização do sistema. O MSDN documenta isso como um possível erro do BIOS, mas é comum. Então, quem quer desenvolver sistemas de negociação de baixa latência em uma plataforma que não pode ser instrumentada adequadamente (há soluções, mas você não encontrará nenhum software que esteja sentado convenientemente em boost ou ACE). Muitas variantes LinuxUNIX têm muitos parâmetros facilmente ajustáveis ​​para trocar latência por um único evento contra a latência média sob carga, tamanhos de fatias de tempo, políticas de agendamento, etc. Em sistemas operacionais de código aberto, há também a garantia de que pode se referir ao Codifique quando você pensa que algo deve ser mais rápido do que é, e o conhecimento de que uma comunidade (potencialmente enorme) de pessoas tem sido e está fazendo de forma crítica - com o Windows, obviamente, principalmente será a prostituta designada para examiná-la. No lado da FUDreputação - um tanto intangível, mas uma parte importante das razões para a seleção do sistema operacional - acho que a maioria dos programadores da indústria confiaria apenas em LinuxUNIX mais para fornecer um agendamento e um comportamento confiáveis. Além disso, o LinuxUNIX tem uma reputação de falhar menos, embora o Windows seja bastante confiável nos dias de hoje, e o Linux possui uma base de código muito mais volátil do que o Solaris ou o FreeBSD. Respondido em 29 de agosto 10 às 0:42 Os sistemas operacionais do cliente do Windows permitem que apenas uma pessoa use o RDP de cada vez. No entanto, o Windows Terminal Server existe para sempre (foi, de fato, o uso original do RDP) e permite tantas conexões quanto você possui Licenças de Acesso para Cliente. Os sistemas operacionais do Windows Server vêm com a capacidade de ter mais de um usuário remoto por padrão. Se você pudesse obter o comentário sobre o agendamento, então eu iria aqui - essa parte da resposta parece ser FUD neste ponto para mim (o restante da resposta é bom). YMMV. Ndash Billy ONeal 29 de agosto 10 às 0:50 Não há programação UNIXLinux. É uma das áreas em que as implementações diferem. E o Linux, na verdade, teve mais de uma opção de agendador (google Completely Fair Scheduler Linux para o plano de fundo), então você pode até dizer que o planejamento do quotLinux é confiável. Ndash MSalters 30 de agosto 10 às 11:37 Em segundo lugar, as opiniões de histórico e acesso à manipulação do kernel. Além desses motivos, eu também acredito que, assim como eles desativam a coleta de lixo de. NET e o mecanismo similar em Java ao usar essas tecnologias em baixa latência. Eles podem evitar o Windows devido às APIs de alto nível que interagem com ossos de baixo nível e depois o kernel. Então, o núcleo é, naturalmente, o kernel que pode ser interagido com o uso do baixo nível os. As APIs de alto nível são fornecidas apenas para facilitar a vida dos usuários comuns. Mas, no caso de baixa latência, esta é uma camada gordurosa e uma perda de fração de segundos em cada operação. Então, uma opção lucrativa para ganhar poucos segundos por chamada. Além disso, essa outra coisa a considerar é a integração. A maioria dos servidores, centros de dados, trocas usam UNIX e não o Windows, portanto, usar os clientes da mesma família facilita a integração e a comunicação. Então você tem problemas de segurança (muitas pessoas por aí podem não concordar com este ponto, no entanto) hackear o UNIX não é fácil em comparação com o hacking WINDOWS. Eu não concordo que o licenciamento deve ser o problema para os bancos, porque eles duchem dinheiro em cada peça de hardware e software e as pessoas que os personalizam, então as licenças de compra não serão tão maiores quanto a questão quando consideradas o que ganham comprando. Respondeu 21 de dezembro 12 às 20:05 Sua resposta 2017 Stack Exchange, IncHard para dizer o que acontece. Uma coisa sobre HFT é que a velocidade do idioma estranhamente não importa muito. Você está falando de latências de 20 milissegundos e qualquer idioma pode fazer 20 milésimos de segundo, uma vez que os tempos de CPU são medidos em nano-segundos em vez de milésimos de segundo. Em algo trading, java é geralmente suficiente, já que o truque está conseguindo o multithreading e o direito de rede em vez de gastar esforço na CPU. Como java é o idioma padrão da rede bancária, então faz sentido usar isso se isso é o que você já possui. A outra coisa que você tem que ter cuidado é quotmarketingquot. Ninguém contrata quotprogrammersquot em finanças. Todo mundo quer ser um quotquant. O mesmo parece estar acontecendo com HFT. Porque HFT é sexy, então cada trabalho é chamado de HFT. C é necessário se você estiver falando sobre sistemas ultra rápidos, mas a maioria das negociações comerciais não envolvem isso, e há uma grande quantidade de negociação que envolve coisas que eu não consideraria HFT, mas um recrutador ou pessoa que anunciasse um emprego poderia. 5.6k Vistas middot View Upvotes middot Não para reprodução middot Resposta solicitada por 1 pessoa Como uma das respostas apontou, a maioria dos sistemas HFT raramente são implementados em um único idioma. Mesmo dentro do espaço do HFT, há um pouco de espaço do wiggle dependendo do que você está executando. Se você está tentando fazer um arbitro de índice de baunilha onde o seu sucesso depende da tentativa da competição, seu único tiro em fazê-lo funcionar é usar um FPGA ou um ASIC. Se você estiver jogando na faixa sub 10 de microssegundo, tudo em C ajuda muito. Os meus principais motivos para escolher C antes de Java são A capacidade de criar, destruir e redefinir objetos conforme eu quero. Minha maior conveniência com C é a capacidade de chamar um destruidor de objetos sem desalocar a memória dos objetos. A capacidade de usar diretamente macros, diretivas GCC (para coisas como previsão de ramificação) e na montagem de linha. A possibilidade de codificar a mão uma sub-rotina crítica de latência na montagem e integrá-la diretamente com o código não tem preço. Chamadas de SO Nativas (raras). Memória compartilhada perfeita e a capacidade de fazer certos ajustes como criar algoritmos conscientes NUMA, fixar certos tópicos para núcleos, DDIO, etc. Essas coisas definitivamente ajudam a proteger de 2 a 10 micros fora de sua pilha comercial de acordo com o que você está preparando. Muitas estratégias de alta freqüência são executadas no período de 20-30 microsecond. Eu acho que é aqui que existe muita diversidade em termos de configuração. A maioria dos sistemas neste intervalo de tempo consistem em sistemas de conectividade e gestão de pedidos escritos em interfaces de estratégia C e de estratégia que permitem que você escreva sua estratégia em qualquer coisa que seja popular em sua empresa. I039ve C, Java, C, Scala, python e até Haskell usado aqui. Jane Street afirma usar as empresas Ocaml. Large têm várias equipes que trocam diferentes horizontes temporais. A maioria das infraestruturas geralmente é escrita para as pessoas que precisam das coisas mais rápidas e depois são redistribuídas para outras pessoas. Geralmente, a maioria das lojas possui uma solução de hardware e uma solução de software. Core infra raramente é escrito em Java. Backtesting, estratégia e pessoas de pesquisa podem, no entanto, utilizá-lo substancialmente. 2.9k Visualizações middot View Upvotes middot Não para Reprodução Lance Diduck. Construiu dúzias de sistemas C ao longo de 20 anos Um sistema de negociação automatizado raramente é implementado usando um único idioma. QuotHFTquot poderia significar que I039m entrava e saiu de uma posição várias vezes por dia. Muitos desses sistemas começam como um aplicativo quothigh touchquot, geralmente java ou C, onde um comerciante se sentará lá e pressionará os botões para iniciar negociações. Para reduzir os custos de execução, precisamos de um sistema de baixa latência que tenha um bom determinismo nos tempos de resposta. Você não pode pausar para o rebocketing de tabela hash ou coletores de lixo ou o sistema operacional tirando sua fatia de tempo ou movendo você para um processador diferente ou o que for. Existem pessoas que tentam isso em Java, e passam a maior parte do tempo tentando fazer o Java funcionar de forma determinista. Boa sorte Mas ferramentas de relatórios, consoles, tela de monitoramento, certifique-se de que essas peças podem estar em Java ou C ou JavaScript para esse assunto. Pessoalmente, eu uso uma mistura de python e C 3.1k Views middot View Upvotes middot Não para reprodução middot Resposta solicitada por 1 pessoa Se você estiver no ultra HFT, então C é a única resposta (além do hardware personalizado - FPGA amp ASIC). Você simplesmente pode pagar o coletor de lixo. Nunca vi C ser espancado por java em UHFT ao agendar milhões de mensagens por segundo. Para dezenas de milhões, você precisa de FPGAs e centenas de ASICs. 2.9k Visualizações middot View Upvotes middot Não é para reprodução Por que C é tão atraente sobre Java ou C O que é mais benéfico para aprender como uma primeira linguagem de programação, Java ou C Por que importante o TA ou FA no mundo da HFT Qual língua deve Eu aprendo depois de python, C ou C Quanto tempo é necessário para aprender C, C e Java O que devo aprender primeiro - C, Java, C ou C Existem alguns tutoriais para programação de baixa latência em Java especialmente para HFT Java para JavaScript Como C é para C Por que o Java é melhor do que C O que é melhor: C, C ou Java Devo aprender C, Java ou HTML São utilizadas exceções C em HFT ou negociação de meio-frequência É possível aprender Java sem aprender CC O que? São os prós e os contras de Java e C Por que a sintaxe de Java é semelhante a C Devo aprender C, C ou Java primeiro E por que é mais difícil aprender do que o Java O que é mais difícil, Java, C ou C Qual é mais rápido, Java Ou C é Java mais fácil que C

No comments:

Post a Comment