Sunday 19 November 2017

Scala parser combinator binary options


Suponha que definimos o analisador como uma função O analisador toma uma string de entrada e produz uma seqüência de pares. Cada par consiste no resultado de análise e na parte não consumida da entrada. Como eu entendo, podemos definir o analisador como um aplicativo e implementar um seq parser combinator em termos de ltgt. O combinador seq é uma função, que leva dois analisadores p e q como seus argumentos e retorna um novo analisador, que se aplica p e q à entrada sequencialmente. Por exemplo: Obviamente, podemos facilmente definir flatMap para o analisador e, em seguida, definir ltgt em termos de que flatMap. Podemos definir ltgt de forma diferente e implementar seq com esse ltgt perguntou Jun 5 15 às 20: 24É a minha primeira vez usando scalas parser combinators. Eu tenho essa situação onde eu tenho uma lista de tipos e eles podem estender outros tipos, ou não. Se eles fizerem, eu apenas criar um mapa entre o tipo e seu tipo pai. Se não eu apenas mapear o tipo de objeto. (Tipos são apenas nomes de string) Eles são escritos como este: caso em que eles implicitamente serão - objeto eu tentei implementá-lo da seguinte maneira, mas não está compilando. Sua dizendo que ele requer uma opção ListString, String e encontrou um, b. Seu também dizendo que não pode encontrar os nomes de valor no primeiro para a compreensão, quando na verdade o seu especificado na correspondência de padrão de caso. Um pouco confuso agora o que está realmente acontecendo. Na verdade, eu só quero que este para retornar um MapString, String. Se o tipo pai estiver faltando ele deve padrão para objeto. Como é melhor abordar este Theres um par de coisas acontecendo aqui. Em primeiro lugar, a precedência de e. Significa que em vez de combinar (nome) que é um ParserListString com (- parenttype) que é um ParserOptionString você está realmente envolvendo a coisa inteira em e assim começar um ParserOption ListString, String se isso faz sentido. A solução mais fácil é usar um conjunto extra de colchetes. Então você quer começar com: Então, na função de mapeamento whatll youll receive é ListString, OptionString com a lista de nomes e um opcional parenttype. Em termos de correspondência de padrões você sempre recebe o nome parenttype, onde o último é um OptionString. Então basicamente seu segundo padrão é inválido. Então você poderia fazer isso: Ou você poderia simplificar isso para: Combinar Scala e Java sem problemas Scala classes são, em última instância, classes JVM. Você pode criar objetos Java, chamar seus métodos e herdar de classes Java de forma transparente da Scala. Da mesma forma, o código Java pode referenciar classes e objetos Scala. Neste exemplo, a classe Scala Author implementa a interface Java ComparableltTgt e trabalha com Java File s. O código Java usa um método do objeto companheiro Autor. E acessa campos da classe Author. Ele também usa JavaConversions para converter entre coleções Scala e coleções Java. Deixe o compilador descobrir os tipos para você O compilador Scala é inteligente sobre tipos estáticos. Na maioria das vezes, você não precisa dizer-lhe os tipos de suas variáveis. Em vez disso, sua inferência de tipo poderoso irá figurá-los para você. Nesta sessão REPL interativa (Read-Eval-Print-Loop), definimos uma classe e duas funções. Você pode observar que o compilador infere os tipos de resultados das funções automaticamente, bem como todos os valores intermediários. Ir concorrentes ou distribuídos com Futures Promessas em Scala, futuros e promessas podem ser usados ​​para processar dados de forma assíncrona. Tornando mais fácil para paralelizar ou mesmo distribuir o seu aplicativo. Neste exemplo, a construção futura avalia seu argumento de forma assíncrona e retorna um identificador para o resultado assíncrono como um FutureInt. For-comprehensions pode ser usado para registrar novos callbacks (para postar novas coisas para fazer) quando o futuro for concluído, ou seja, quando a computação estiver concluída. E uma vez que tudo isso é executado de forma assíncrona, sem bloquear, o thread do programa principal pode continuar a fazer outro trabalho entretanto. Comportamento de amplificador de interface flexívelmente combinado Em Scala, vários traços podem ser misturados em uma classe para combinar sua interface e seu comportamento. Aqui, um StarCruiser é um Spacecraft com um CommandoBridge que sabe como envolver o navio (desde um meio para acelerar) e um PulseEngine que especifica como acelerar. Ativar a estrutura de seus dados Em Scala, as classes de maiúsculas e minúsculas são usadas para representar tipos de dados estruturais. Eles implicitamente equipar a classe com toString significativo. Equals e hashCode métodos, bem como a capacidade de ser desconstruída com correspondência de padrões. Neste exemplo, definimos um pequeno conjunto de classes de maiúsculas e minúsculas que representam árvores binárias de inteiros (a versão genérica é omitida por simplicidade aqui). Em inOrder. A construção de correspondência escolhe o ramo direito, dependendo do tipo de t. E ao mesmo tempo desconstrói os argumentos de um Nó. Go Funcional com funções de ordem superior Em Scala, as funções são valores e podem ser definidas como funções anônimas com uma sintaxe concisa. No exemplo Scala à esquerda, o método de partição, disponível em todos os tipos de coleção (incluindo Array), retorna duas novas coleções do mesmo tipo. Os elementos da colecção original são divididos de acordo com um predicado, que é dado como um lambda, isto é, uma função anónima. O valor do parâmetro para o lambda, isto é, o elemento que está sendo testado. Este lambda particular também pode ser escrito como (x x. age lt 18). O mesmo programa é implementado em Java à direita. Próximos Eventos Estamos felizes em anunciar a disponibilidade do Scala 2.12.0-RC1 Note, entretanto, que a Scala 2.12.0-RC2 seguirá, devido a regressões conhecidas detalhadas abaixo. As mudanças mais notáveis ​​desde M5 são: 5135. Ou é agora direita-tendencioso SI-4826. Scaladoc agora suporta comentários doc em fontes Java SI-7187. Eta-expansão dos valores do método de argumento zero é agora depreciada 5307. Redução da interferência de SAMs quando inferring tipos de função na presença de sobrecarga 5141 / 5294. Refactoring de def. Val. E preguiçoso manipulação de val, a fixação de casos de canto variado e inconsistências 5311. Scala agora é construído com sbt em vez de Ant (afeta apenas contribuintes, não usuários) Como de costume para Scala pré-lançamentos, 2.12.0-RC1 não é binário compatível com qualquer outro Scala versão, incluindo qualquer 2.12 milestones. Problemas conhecidos Como com as versões anteriores do 2.12, a nova codificação de traços pode tornar algum código baseado em traços mais lento. Como resultado, os tempos de compilação também podem ser mais longos em 2.12 que 2.11. Congratulamo-nos com os comentários da comunidade Scala ajudando a isolar as desacelerações incomuns. As seguintes regressões conhecidas serão corrigidas em 2.12.0-RC2: SD-225 pode causar tempos de compilação drasticamente maiores para certos tipos de código. O SI-9918 pode causar scala. reflect. internal. TypesTypeError no código que envolve objetos de pacote. O SI-9920 pode causar java. lang. NoSuchMethodError s em tempo de execução. Uma regressão pode causar java. util. NoSuchElementException s em scala. tools. nsc. backend. jvm. BCodeSkelBuilder consulte 5395. Devido à última regressão mencionada, Shapeless não será publicado para 2.12.0-RC1. Esperamos abordar o seguinte em uma futura versão 2.12.x: SI-9824. Coleções paralelas são propensas a deadlock na REPL e em inicializadores de objeto. Scala 2.12 O Scala 2.12 requer um tempo de execução Java 8. O Scala 2.12 tem tudo a ver com a utilização ideal dos novos recursos do Java 8s. Os traços (5003) e as funções são compilados para seus equivalentes de Java 8, e tratamos os tipos de métodos abstratos únicos e os tipos de função embutidos Scalas uniformemente de verificação de tipo para o back-end (4971). Também usamos invokedynamic para uma codificação mais natural de outros recursos de linguagem (4896). Weve estandardizado no GenBCode back end (4814. 4838) ea implementação classpath plana é agora o padrão (5057). O otimizador foi completamente revisado para 2.12. Exceto para as alterações de quebra abaixo, o código que compila no 2.11.x sem depreciação avisos devem compilar 2.12.x também, a menos que você use APIs experimentais, como reflexão. Se você encontrar incompatibilidades, por favor, registre um problema. Novos recursos Com este release candidate, consideramos o 2.12.x como um recurso completo. Para 2.12.0, tentaremos manter o binário compatível com RC1, e não vamos arriscar regressões, exceto para os bugs mais críticos. O traço compila uma interface Com o Java 8 permitindo métodos concretos em interfaces, o Scala 2.12 é capaz de compilar um traço em uma única interface. Antes, um traço era representado como uma classe que mantinha as implementações do método e uma interface. Observe que o compilador ainda tem um pouco de magia para executar nos bastidores, de modo que cuidado deve ser tomado se um traço é destinado a ser implementado em Java. (Em resumo, se um traço faz alguma das seguintes suas subclasses requerem código sintético: definindo campos, chamando super, declarações de inicialização no corpo, estendendo uma classe, dependendo de linearização para encontrar implementações no super traço certo). Estilo Java 8 Lambdas O Scala 2.12 emite fechamentos no mesmo estilo que o Java 8, se eles segmentam uma classe FunctionN da biblioteca padrão ou um tipo de método abstrato único definido pelo usuário. O verificador de tipo aceita uma função literal como uma expressão válida para qualquer tipo de tipo de função tipo (built-in ou SAM). Isso melhora a experiência de usar bibliotecas escritas para Java 8 em Scala. Para cada lambda o compilador gera um método que contém o corpo lambda e emite um invokedynamic que irá girar até uma classe leve para este encerramento usando o JDKs LambdaMetaFactory. Comparado com Scala 2.11, o novo esquema tem a vantagem de que, na maioria dos casos, o compilador não precisa gerar uma classe anônima para cada encerramento. Isso leva a arquivos JAR significativamente menores. O novo back-end Scala 2.12 padroniza o back end GenBCode, que emite código mais rapidamente porque gera diretamente bytecode ASM de árvores de compilador Scala, enquanto o back end anterior usava uma representação intermediária chamada ICode. As extremidades traseiras antigas (GenASM e GenIcode) foram removidas (4814, 4838). Novo otimizador O back-end GenBCode inclui um novo inliner e otimizador de bytecode. O otimizador é habilitado usando a opção - opt do compilador, que assume como padrão - opt: l: classpath. Verificar - opt: ajuda a ver a lista completa de opções disponíveis para o otimizador. As seguintes otimizações estão disponíveis: Inline métodos finais, incluindo métodos definidos em objetos e métodos finais definidos em traços Se um fechamento for alocado e invocado dentro do mesmo método, a invocação de fechamento é substituída por uma invocação do método do corpo lambda correspondente. E um pequeno número de otimizações de limpeza Eliminação de Caixa / Unbox 4858 Ou agora é tendenciosa Agora também suporta operações como mapa. FlatMap. Contém. ToOption. E assim por diante, que operam no lado direito. Left e. right são depreciados em favor de. swap. As alterações são compatíveis com fonte com código antigo (exceto na presença de métodos de extensão conflitantes). Obrigado, Simon Ochsenreither. Para esta contribuição. Futuros melhorados Esta série de posts do blog de Viktor Klang explora as diversas melhorias feitas para scala. concurrent. Future para 2.12. Scaladoc agora suporta comentários de doc em fontes de Java Unificação parcial de construtores de tipo (SI-2712) A compilação com - Y união parciais adiciona a unificação parcial de construtores de tipo, corrigindo o notório SI-2712. Graças a Miles Sabin. Alterações de quebra Tipos de SAM A partir de 4971. tratamos os tipos de métodos abstratos únicos da mesma maneira que as nossas classes FunctionN incorporadas. Isso significa que a resolução de sobrecarga tem mais concorrentes para escolher, tornando a inferência de tipos menos eficaz. Heres um exemplo: A primeira tentativa falha porque o verificador de tipo não pode inferir os tipos para - s argumentos anymore. A inferência de tipos neste cenário só funciona quando podemos reduzir as sobrecargas para um antes de verificar os argumentos aos quais os métodos são aplicados. Quando uma função é passada como um argumento para um método sobrecarregado, fazemos isso considerando a forma da função (essencialmente, sua aridade). Agora que o comparador e (.) Gt. São ambos considerados funções de aridade dois, o nosso esquema inteligente quebra e o programador deve selecionar uma sobrecarga (segunda aplicação) ou tornar os tipos de argumento explícitos (última aplicação, que resolve a sobrecarga Função2). Finalmente, a conversão implícita de tipos de SAM para tipos de Função não vai mais entrar, já que o compilador faz essa conversão primeiro: Tipos inferidos para val (e lazy val) 5141 e 5294 alinham a inferência de tipos para def. Val. E preguiçoso val. A fixação de casos de canto variado e inconsistências. Como resultado, o tipo inferido de val ou lazy val pode mudar. Em particular, valores implícitos que não precisavam explicitamente declarados tipos antes podem precisar deles agora. (Isso sempre é uma boa prática.) Você pode obter o comportamento antigo com - Xsource: 2.11. Isso pode ser útil para testar se essas alterações são responsáveis ​​se o código falhar ao compilar. Árvores de sintaxe alteradas (afeta autores de plug-in de macro e compilador) O PR 4794 alterou as árvores de sintaxe para seleções de símbolos estáticamente acessíveis. Por exemplo, uma seleção de Predef não tem mais a forma qscala. this. Predef mas simplesmente qscala. Predef. As macros e os plugins do compilador que correspondem à forma antiga da árvore precisam ser ajustados. Compatibilidade binária Desde Scala 2.11, versões menores do Scala são compatíveis binariamente entre si. A Scala 2.12 continuará esta tradição: cada versão 2.12.x será compatível com o binário 2.12.0. Marcos e candidatos à liberação, no entanto, não são binários compatíveis com qualquer outra versão. Scala 2.12 não é e não será binário compatível com a série 2.11.x. Isso nos permite continuar melhorando o compilador Scala ea biblioteca padrão. Estamos trabalhando com a comunidade para garantir que projetos centrais no ecossistema Scala estejam disponíveis para 2.12. Consulte esta lista crescente de bibliotecas e frameworks. As notas de versão do Scala 2.11.1 explicam em mais detalhes sobre como funciona a compatibilidade binária no Scala. As mesmas políticas se aplicam também a 2.12. Contribuidores Um grande obrigado a todos que ajudaram a melhorar a Scala reportando bugs, melhorando nossa documentação, espalhando bondade em listas de discussão e outros fóruns públicos, e enviando e revisando solicitações de pull Vocês são todos magníficos. De acordo com git shortlog - sn --no-merges v2.12.0-M5..v2.12.0-RC1. Os contribuintes seguintes ajudaram a realizar este marco: Adriaan Moors, Jason Zaugg, Lukas Rytz, Stefan Zeiger, AP Marki, Simon Ochsenreither, Seth Tisue, Jakob Odersky, Dale Wijnand, Dima Tkach, Janek Bogucki, Micha Pociecha, Christopher Davenport, Martin Olsson , Tomjridge, Miles Sabin, Oscar Boykin, Raul Bache, Rex Kerr, Dmitriy Pogretskiy, Daniel Barclay, Antoine Gourlay, Steven Mitchell e Carsten Varming. Obrigado Notas de lançamento As melhorias para estas notas de versão são bem-vindas Obtendo Scala Baixe uma distribuição de scala-lang. org Coloque a configuração scalaVersion em seu projeto baseado em sbt Obtenha JARs via Maven Opções de CentralBinary Introdução às Opções Binárias Uma opção binária é uma opção que paga Quer um montante fixo ou nada, dependendo se uma determinada condição é cumprida quando a opção expira. Opções binárias também são referidas como opções de tudo ou nada, uma vez que é um tipo de opção onde o retorno é tudo ou nada. O retorno é, portanto, fixo e não chega a surpresa que tais opções também são conhecidos como: FROs-Fixed Return Options. Opções digitais também é outro termo comumente usado. Mais simplesmente, um comerciante só precisa tomar uma decisão sobre a direção de uma mudança de taxa: se o preço dos ativos subjacentes está subindo ou descendo sem levar em consideração outros fatores. Binários são considerados um dos mais simples produtos de negociação lá fora, o comerciante sabe no momento do comércio o que é o lucro máximo e perda. A negociação de opções binárias é considerada como um dos segmentos de crescimento mais rápido dos produtos de negociação simplificados. As opções binárias são fixas - odds-retorno de produtos de investimento que têm dois possíveis resultados absolutos com recompensa estruturada e risco, daí a palavra binário. Binários são considerados como um instrumento financeiro de mercado de massa, uma vez que habilita os comerciantes com uma abordagem comercial muito flexível, sem as complexidades envolvidas no comércio de opções tradicionais de baunilha. Se você está procurando uma especulação de curto prazo ou cobertura de seu portfólio, os binários podem ajudá-lo a obter um pagamento elevado dentro de curtas durações comerciais como tal, binários estão ganhando popularidade entre os comerciantes globalmente. Os contratos binários estão disponíveis em uma variedade de ativos subjacentes: estoques, commodities, moedas e índices. Se o comerciante fez uma chamada ou colocar, se no contrato expira o comerciante tem sido bem sucedida no que diz respeito à direção antecipada do preço do ativo subjacente, em seguida, o contrato expirará no dinheiro. Por outro lado, se o comerciante tem sido infrutífera em antecipar a direção do ativo, o contrato expirará fora do dinheiro. Quando o nível de expiração é igual ao preço de exercício, o contrato expirará com o dinheiro. Normalmente, haverá uma liquidação fixa de dinheiro a ser devolvido que é muitas vezes o investimento inicial, no entanto, isso depende do que foi predeterminado e acordado no contrato Uma opção binária reflete a especulação específica nos mercados financeiros que podem acontecer durante um período de tempo específico. Por exemplo: preço do Google é agora 430.25 e você quer especular sobre o movimento de preços da ação dentro de um período de tempo de 1 hora. Se você acha que o Google vai subir acima deste nível de preço, do que você deve comprar uma opção de chamada binária - se o preço do Google será acima do nível de preço atual durante a expiração, em seguida, a opção irá expirar no dinheiro, pagando-lhe o retorno de probabilidades fixo prometido Durante o comércio. Se não, a opção expirará fora do dinheiro. Se você acha que o Google vai cair abaixo deste nível de preço, então você deve comprar uma opção de venda binária, se o preço do Google será inferior ao nível de preço atual durante a expiração, em seguida, a opção expirará no dinheiro, pagando-lhe o retorno de probabilidades fixas prometido durante o comércio. Se não, a opção expirará fora do dinheiro. Diferença entre as opções de baunilha e as opções de opções binárias As opções binárias também conhecidas como opções digitais são semelhantes às opções normais, no sentido de que a recompensa é baseada no preço do activo subjacente quando o contrato expira, no entanto, com uma opção binária que só é necessário tomar Uma visão sobre a direção antecipada do preço do ativo subjacente e não tem que levar em consideração a magnitude. A principal diferença entre uma opção de baunilha regular e uma opção digital é a extensão de quanto um contrato pode potencialmente perder ou ganhar. Opções binárias muitas vezes referido como FRO opções de taxa fixa uma vez que o contrato terá percentual predeterminado de taxa fixa de retorno, ao contrário das tradicionais opções de baunilha, que são muito mais arriscado, uma vez que os ganhos potenciais são infinitos de curso de risco pode ser gerenciado por ordens estratégicas stop loss. Opções de baunilha vs. Opções binárias O proprietário da opção tem o direito de exercer suas opções e transformá-las em ações caso a opção expire In-the-money. Vantagens das opções binárias Simplicidade-Se o instrumento vai fechar acima ou abaixo Opções binárias são simples de entender e direto para o comércio. O comerciante só precisa considerar a direção do preço do ativo. Risco limitado e pagamento predeterminado O pagamento de um contrato de opção binária é fixo e pré-determinado, portanto, o risco potencial e a recompensa são conhecidos desde o início. Considerando que com opções tradicionais não existem parâmetros delineados por isso a perda possível ou ganho não é conhecido. A opção binária irá liquidar o contrato, independentemente de quanto o preço do activo é No dinheiro à expiração. Portanto, mesmo se o contrato só é bem sucedido por um tick o contrato ainda paga para fora no nível fixo. Hedge simplificado do seu portfólio As opções binárias são frequentemente utilizadas como uma ferramenta eficaz para proteger posições existentes. Como um produto As opções binárias são compatíveis com os métodos e estratégias de negociação mais utilizados. Também com opções binárias é possível oferecer uma maior seleção de contratos de curto prazo em todos os mercados, o que permite ao comerciante intra-dia operar com mais freqüência. Ao contrário de opções de baunilha, enquanto as opções de negociação binário as opções podem fechar no dinheiro recolhendo a recompensa completa, mesmo com uma mudança de preço mínimo de um único carrapato. Opções binárias são emitidos 24/7, permitindo que os comerciantes para o comércio em vários quadros de tempo. Como binários estão em uma variedade de ativos subjacentes globais de diferentes bolsas comerciantes agora são capazes de negociar opções binárias 24/7 sob a mesma plataforma de opções binárias. Opções Binárias Estratégia Uma estratégia muito comum é fazer uma opção de puxar ou chamar uma vez que tem havido um grande movimento no mercado especialmente se for um movimento inesperado. Muitas vezes os operadores de opções binárias vão abrir posições relacionadas a eventos que historicamente têm uma grande influência nos preços de mercado. Fox exemplo trimestral anúncios de lucro ou perda de empresas são ansiosamente observados por potenciais comerciantes e apostadores, uma vez que os resultados positivos ou negativos, muitas vezes refletem o movimento dos preços das ações. Além de anúncios formais pré-planejados os comerciantes estarão sempre assistindo as notícias, como muitos eventos diferentes podem influenciar os mercados, isto é, catástrofes naturais para mudanças políticas. Eventualmente, as melhores estratégias vêm com experiência que não pode ser ensinada. Opções Binárias em Mercados Financeiros Globais Opções binárias cai sob o guarda-chuva de opções exóticas, mas dentro do mercado financeiro são muitas vezes referidos como opções digitais. Embora as opções digitais são muito simples de entender e facilmente negociado os cálculos por trás do preço é sofisticado, é por esta razão opções digitais são conhecidos como uma opção exótica. Opções digitais são geralmente negociados OTC (over the counter) em todos os ativos em mercados financeiros, mas mais comumente usado dentro dos mercados de Forex e Interesse. Mais recentemente, numerosas bolsas de valores produziram opções digitais listadas em ações selecionadas, comumente conhecidas como opções de retorno fixo da FRO. Hoje, o CBOE oferece opções de retorno fixo em SP500 e VIX, também 20 ações foram listadas no AMEX em 2008. Pronto para começar a negociação Mais assistência necessáriaScala Nós fornecemos comerciantes Endless Possibilidades: Winoptions é hoje liderando plataforma de negociação de opções binárias. Como opções binárias tornaram-se mais populares do que nunca, winoptions fornece comerciantes com uma excelente experiência de comerciante em termos de segurança, características, facilidade de utilização, ferramentas e educação. A Winoptions se compromete com a excelência no fornecimento de uma plataforma de negociação que pode ser usada para investidores privados e institucionais em todo o mundo. Nossa equipe de winoptions está disponível para os comerciantes 24/7, com corretores profissionais orientando os comerciantes a cada passo do caminho. A visão winoptions é dar-lhe, o comerciante, o mais seguro, mais conveniente, e toda a melhor experiência de negociação cada. Nossos módulos de preços e de execução garantem o uso das tecnologias mais atualizadas e avançadas. Através da nossa parceria com o fornecedor de feeds, a Reuters, recebemos fluxos de dados ao vivo e precisos e os nossos termos e condições estabelecem claramente a diferença entre o preço de mercado em tempo real e os preços das opções. Nós fornecemos gráficos de expiração para qualquer momento, para garantir a confiança do comerciante para que nunca haja quaisquer perguntas sobre o fim dos comerciantes. Os fundos dos clientes são mantidos em uma conta segregada. Fundos são usados ​​apenas para opções de negociação através do nosso site, sobre as instruções dos clientes e nunca são usados ​​para qualquer outra causa. Nossos passivos e exposições são tratados profissionalmente e garantimos pagamentos de seus lucros com base em nossos termos. Divulgação de risco: A negociação de opções binárias envolve riscos significativos. Recomendamos vivamente que leia os Termos Termos e Condições. Embora o risco ao negociar opções binárias é fixado para cada comércio individual, os comércios são ao vivo e é possível perder um investimento inicial, especialmente se um comerciante optar por colocar todo o seu investimento para um único comércio ao vivo. É altamente recomendável que os comerciantes escolham uma estratégia de gestão de dinheiro adequada que limita o total de negociações consecutivas ou investimento total em circulação. Aviso de risco 8211 O valor de um investimento específico pode aumentar e diminuir, e os investidores podem perder seu investimento. Antes de investir considere seus recursos disponíveis, seu nível de experiência e os riscos envolvidos no investimento

No comments:

Post a Comment