Wednesday 30 May 2018

Direitos de voto sobre opções de ações


Votando certo.
O que é um direito de voto?
Um direito de voto é o direito de um acionista votar em quem comporá o conselho de administração e em questões de política corporativa, incluindo decisões sobre a emissão de valores mobiliários, iniciando ações corporativas e fazendo mudanças substanciais nas operações da corporação. É comum que os acionistas expressem seu voto por procuração enviando por correio sua resposta. Ao contrário do direito de voto único que os indivíduos geralmente possuem em governos democráticos, o número de votos que um acionista tem corresponde ao número de ações que ele possui.
QUEBRANDO "direito de voto"
Direito a voto.
Como os diretores e o conselho de administração de uma corporação (BOD) gerenciam suas operações diárias, os acionistas não têm direito a votar em questões básicas de gerenciamento. No entanto, os acionistas podem votar em grandes questões corporativas, tais como mudanças no regulamento ou eleição de diretores, em assembleias de acionistas. Embora os acionistas normalmente tenham um voto por ação, os detentores de ações preferenciais não têm direito a voto.
Elegibilidade de votação.
Normalmente, apenas um proprietário de registro é elegível para votar em uma reunião de acionistas. Os registros corporativos nomeiam todos os proprietários de ações em uma data de registro anterior à reunião. Os acionistas não listados no registro na data de registro não podem votar.
Votação e Quoruns.
O estatuto social normalmente exige um quórum para votar em uma assembléia de acionistas. Um quorum é normalmente alcançado quando os acionistas presentes ou representados na assembleia possuem mais da metade das ações da empresa. Algumas leis estaduais permitem a aprovação de uma resolução sem quorum se todos os acionistas fornecerem um endosso por escrito de uma medida.
Tomando um voto.
Aprovar uma resolução geralmente requer uma maioria simples de votos por ações. Uma porcentagem maior de votos pode ser necessária para certas resoluções excepcionais, como buscar uma fusão ou dissolver a corporação.
Votação por procuração.
Os acionistas podem ceder seus direitos de voto para outra parte sem abrir mão das ações. A pessoa ou entidade que recebe a procuração pode votar sem consultar o acionista. Em certos casos extremos, uma empresa ou pessoa pode pagar por proxies como um meio de coletar um número suficiente e mudar a equipe de gerenciamento existente.
Impacto dos Direitos de Voto.
Em grandes empresas de capital aberto, os acionistas exercem seu maior controle por meio da eleição dos diretores da empresa. No entanto, em pequenas empresas de capital fechado, os executivos e diretores geralmente possuem grandes blocos de ações. Portanto, os acionistas minoritários normalmente não podem afetar quais diretores são eleitos. Também é possível que uma pessoa possua uma participação controladora das ações da empresa. Portanto, os acionistas podem votar nas eleições ou nas resoluções, mas seus votos podem ter pouco impacto sobre os principais problemas da empresa.

Uma empresa deve permitir o exercício antecipado de opções de ações?
Algumas empresas permitem que os funcionários exerçam suas opções de ações não utilizadas, ou "exercício antecipado". # 8221; Uma vez adquirida, as ações não investidas estão sujeitas a um direito de recompra pela empresa após o término dos serviços. O preço de recompra é o preço de exercício da opção. Observe que uma opção de compra de ações normalmente não é exercível antecipadamente, a menos que o conselho de administração da empresa aprove uma concessão de opção como antecipada e a empresa emita a opção de compra de ações de acordo com um contrato de opção que permita o exercício antecipado.
Permitir o exercício antecipado de ações não investidas pode proporcionar aos empregados uma vantagem tributária potencial ao permitir que o empregado inicie seu período de retenção de ganhos de capital de longo prazo com relação a todas as suas ações e minimizar o potencial de imposto alternativo mínimo (AMT). Se um funcionário souber que ele exercerá uma opção de compra antecipada imediatamente após a outorga de uma opção (quando não houver diferença entre o preço de exercício e o valor justo de mercado das ações ordinárias), o funcionário normalmente deve desejar um ONS como oposição a um ISO, porque o tratamento de ganho de capital a longo prazo para ações emitidas após o exercício de um NSO ocorre após um ano. Em contrapartida, as ações emitidas após o exercício de uma ISO devem ser mantidas por mais de um ano após a data de exercício e mais de dois anos após a data de concessão, a fim de se qualificar para tratamento fiscal favorável.
Existem várias desvantagens em permitir o exercício antecipado, no entanto, incluindo:
Risco ao empregado. Ao exercer um direito de compra de ações ou uma opção imediatamente exercível, o funcionário assume o risco de que o valor das ações possa diminuir. Em outras palavras, o funcionário que está exercendo coloca seu próprio capital (o dinheiro usado para comprar o estoque) em risco. Mesmo que uma nota promissória seja usada para comprar a ação (futuro post para vir), a nota deve ser um recurso completo para que a Receita Federal respeite a compra. Além disso, se o empregado comprar as ações com uma nota promissória, a nota continuará a acumular juros até que seja paga, e uma taxa de juros de mercado deve ser paga para satisfazer os requisitos contábeis. Dependendo do número de ações compradas, o benefício fiscal esperado do exercício antecipado pode não justificar esses riscos aumentados para o acionista. Imposto sobre spread. Se houver um & # 8220; spread & # 8221; no momento do exercício, o empregado acionará a renda ordinária (no caso de um exercício de NSO equivalente à diferença entre o preço de exercício e o valor justo de mercado das ações ordinárias na data do exercício) e poderá desencadear a obrigação de AMT (no caso de um exercício ISO, com a diferença entre o preço de exercício e o valor justo de mercado das ações ordinárias na data de exercício sendo um item de preferência AMT). Quaisquer impostos pagos não serão reembolsados ​​se as ações não investidas forem depois recompradas ao custo. (Por favor, veja o post "Qual é a diferença entre um ISO e um NSO? & # 8221; para um resumo das implicações fiscais do exercício de um ISO ou um NSO.)" Porta traseira & # 8220; 8221; companhia pública . Permitir que os funcionários se exercitem antecipadamente pode aumentar o número de acionistas. Se a empresa chegar a 500 acionistas, a Seção 12 (g) do Securities Exchange Act de 1934 exigirá que a empresa se registre como uma empresa de relatórios públicos. Lei de valores mobiliários emite uma venda. Se a empresa tiver mais de 35 acionistas não-credenciados em um momento em que concordou em ser adquirida em uma ação para transação de ações, a aquisição provavelmente será mais complexa e levará mais tempo para ser concluída. Aborrecimentos administrativos. Um aumento significativo no número de acionistas pode impor uma tremenda carga administrativa à empresa. Isso é especialmente verdadeiro quando os funcionários compram ações sujeitas a recompra e quando compram ações com notas promissórias. Os formulários que o funcionário deve preencher e assinar são muito mais longos e mais complicados. 83 (b) as eleições devem ser apresentadas ao IRS dentro de 30 dias da data da compra. Certificados de ações para ações não investidas devem ser mantidos pela empresa para que possam ser facilmente recomprados se o funcionário deixar a empresa, o que aumenta o risco de perda ou extravio dos certificados de ações. Os juros das notas promissórias devem ser rastreados. Direitos dos acionistas. Os opcionais não têm direitos como acionistas até que exerçam suas opções de ações. Se os oponentes exercerem opções de compra de ações, investidas ou não, eles terão os mesmos direitos de voto que qualquer outro acionista. Certas ações, como a alteração do certificado de incorporação, que normalmente ocorre em conexão com cada financiamento de risco, exigem aprovação dos acionistas. Isso requer que determinadas informações sejam fornecidas ao acionista para tomar uma decisão informada. Os acionistas também têm mais direitos estatutários do que os indicados, incluindo direitos de inspeção. Os requisitos de informação do acionista também podem ser acionados de acordo com a Regra 701.
Algumas sugestões para esclarecimento:
* Imposto sobre spread: Existe tributação sobre o rendimento ordinário no caso de uma ISO? Há responsabilidade de AMT no caso de um NSO?
* & # 8220; Porta dos fundos & # 8221; empresa pública: Como isso afeta minha decisão de exercer minhas ações no início do processo NSO ou ISO? Como isso afeta a decisão da empresa de oferecer um exercício antecipado no caso NSO ou ISO?
* Aborrecimentos administrativos: o que você quer dizer com "ações não investidas devem ser mantidas pela empresa"? Os detentores de ações exercidas, mas não investidas, também têm mais direitos de voto que os detentores de opções não exercidas, mas adquiridas? As ações exercidas, mas não investidas, têm os mesmos direitos de voto que as ações exercidas pelo investidor?
@Nivi & # 8211; Obrigado pelo feedback. Tentei lidar com a maioria das sugestões com alterações no texto da postagem. Com relação à porta dos fundos & # 8221; Emissão de empresa pública, esta é uma questão da empresa e não é relevante para a decisão de cada funcionário para exercer.
Como um empregado de startup, fundador, duas vezes adquirido .. estes pontos, especialmente para uma startup, estão em algum lugar entre inconsequentes e falsas.
Para startups, o exercício antecipado enfraquece a retenção de funcionários. Assim, o maior motivo para não oferecê-lo é aumentar a retenção.
Considere um funcionário que se junta a uma startup quando o exercício antecipado de suas ações custa US $ 200. Cinco anos depois, suas ações estão avaliadas em US $ 800.000 +, mas ainda ilíquidas. O spread neste ponto posterior cria uma situação inconveniente para o empregado, onde exercê-lo pode ter consequências fiscais dispendiosas, mesmo que as ações não possam ser vendidas para gerar lucro. O empregado tornou-se um empregado contratado. Não é uma opção financeira razoável deixar e desistir do lucro, mas também não é necessariamente possível que eles comprem as ações e paguem os impostos. Eles estão presos, sem alavancagem, e sem informações sobre quando as ações podem ser líquidas e poderem ser vendidas. A empresa está feliz, porque o funcionário tem o maior incentivo para ficar na empresa.
Vamos falar sobre como o artigo representa erroneamente alguns dos pontos.
Risco ao empregado. Permitir que o exercício antecipado não crie riscos para o funcionário. O único risco é criado quando o empregado realmente decide se exercitar antecipadamente. Permitir isso simplesmente cria mais flexibilidade para o funcionário. Além disso, o exercício antecipado minimiza o risco para o funcionário ao permitir que ele exerça o estoque pelo menor preço possível. Mesmo sem exercício antecipado, o funcionário é livre para exercer a opção à medida que veste. Nesse ponto, o exercício cria risco aumentado, na forma de imposto sobre spread.
Imposto sobre spread. Se o imposto sobre o spread é ruim, então o exercício antecipado é bom. Existem apenas duas vezes que uma ação não tem risco de spread fiscal. No início, quando o preço de compra é igual ao valor, como em um exercício antecipado; e no final, durante uma venda no mesmo dia em que a ação é líquida. Todo o tempo no meio envolve spreads que são potencialmente perigosos para o funcionário do ponto de vista fiscal. Mais importante, essas conseqüências tributárias não afetam a empresa.
& # 8220; Porta dos fundos & # 8221; companhia pública. Não permitir o exercício precoce não impede o exercício. Para impedir que o exercício antecipado seja um meio eficaz de evitar a obrigatoriedade de apresentar relatórios financeiros públicos, os funcionários devem optar por não exercer as opções à medida que investem. A principal razão pela qual eles evitariam se exercitar enquanto investem é o risco aumentado ou o risco de imposto sobre spread. Essas razões as colocam mais e mais em servidão contratada, mas não ajudam a empresa a evitar ser forçada a apresentar relatórios financeiros públicos. Se esse é o objetivo da empresa, um meio melhor seria evitar a propriedade dos funcionários de ações ou opções. Esta questão é aplicável apenas a startups, como grandes empresas públicas já estão arquivando publicamente.
Lei de valores mobiliários emite uma venda. Este é um arenque vermelho. Este não é um motivo real pelo qual as aquisições não sejam concluídas, ou mesmo a principal questão em despesas legais ou custos na manipulação de uma aquisição. Simplesmente não importa.
Aborrecimentos administrativos. Novamente, arenque vermelho. Este não é um encargo ou custo significativo. As startups podem oferecer exercícios antecipados com facilidade. À medida que a contagem de funcionários cresce, é verdade que a carga administrativa cresce. No entanto, existem riscos muito maiores em uma empresa do que essa pequena questão clerical. Certificados de ações? Eles não precisam ser emitidos em empresas privadas. Pode ser simplesmente um livro ou um livro eletrônico. Alguns desses pontos parecem relevantes se estivéssemos falando de uma grande empresa pública, mas não estávamos falando apenas sobre a prevenção de back door & # 39; arquivamentos financeiros públicos?
Direitos dos acionistas. Novamente falsa e vermelha arenque. Todo financiamento de risco não exige alteração do certificado de incorporação. Pelo menos não se os advogados incorporadores fizessem o trabalho corretamente. Além disso, o estatuto social de incorporação não precisa exigir que acionistas minoritários votem & # 39; aprovar um evento de financiamento desde que recebam a maioria dos votos em apoio. Isto é simplesmente um não-problema para financiamento.
A propagação é uma razão para permitir que o exercício precoce não o proíba. O spread mínimo ocorre quando as opções são originalmente emitidas, o que requer um exercício antecipado para aproveitar. Sem o exercício antecipado, um funcionário é forçado a esperar até.
Obrigado por tomar o tempo para comentar.
Risco ao empregado. O ponto aqui é que, quando os preços do exercício se tornam não-triviais (ou seja, o custo de um carro novo), o exercício inicial não parece mais uma boa ideia.
Imposto sobre spread. Os funcionários muitas vezes não exercem antecipadamente suas ações até que estejam na empresa por algum período de tempo (e percebem se o risco de comprar as ações é garantido). Nessa situação, pode haver disseminação.
& # 8220; Porta dos fundos & # 8221; companhia pública. Você está certo, os funcionários sempre podem exercer suas ações adquiridas. O ponto é onde uma empresa estabelece uma cultura de exercício precoce, as coisas ficam arriscadas com o Ato.
Questões de lei de valores mobiliários. Ter que fazer uma audiência de imparcialidade da CA ou um S-4 adicionará pelo menos um mês e meio de tempo até o fechamento e eu suponho $ 75K em taxas legais / contábeis adicionais para uma audiência justa e muito mais para um S-4
Aborrecimentos administrativos. Quase todas as empresas privadas apoiadas por risco emitem certificados de ações. Eles têm uma tendência a se perder, o que é uma dor para lidar.
Direitos dos acionistas. Você está completamente errado aqui. O certificado de incorporação precisa ser alterado para criar a nova série de ações preferenciais em um financiamento de risco típico. Acionistas da empresa precisam aprovar uma emenda & # 8212; e mesmo se todos os acionistas não forem solicitados se seus votos não forem necessários, eles precisam ser avisados ​​da ação (pelo menos em caráter posterior). Há sempre uma sensibilidade para enviar avisos / informações aos acionistas dos funcionários.
Aborrecimentos administrativos: o que você quer dizer com "ações não investidas devem ser mantidas pela empresa"? Os detentores de ações exercidas, mas não investidas, também têm mais direitos de voto que os detentores de opções não exercidas, mas adquiridas? As ações exercidas, mas não investidas, têm os mesmos direitos de voto que as ações exercidas pelo investidor?

Opções de estoque, estoque restrito, estoque fantasma, direitos de valorização de estoque (SARs) e planos de compra de estoque do empregado (ESPPs)
Opções de ações.
Uma empresa concede a um empregado opções para comprar um número declarado de ações a um preço de subsídio definido. As opções são adquiridas durante um período de tempo ou quando certas metas individuais, de grupo ou corporativas são atingidas. Algumas empresas definem horários de aquisição baseados no tempo, mas permitem que as opções sejam adquiridas mais rapidamente se as metas de desempenho forem atingidas. Uma vez adquirido, o empregado pode exercer a opção pelo preço de subsídio a qualquer momento durante o prazo da opção até a data de expiração. Por exemplo, um funcionário pode ter o direito de comprar 1.000 ações a US $ 10 por ação. As opções cobrem 25% ao ano ao longo de quatro anos e têm prazo de 10 anos. Se a ação subir, o empregado pagará US $ 10 por ação para comprar as ações. A diferença entre o preço de subsídio de US $ 10 e o preço de exercício é o spread. Se a ação chegar a US $ 25 após sete anos e o empregado exercer todas as opções, o spread será de US $ 15 por ação.
Tipos de opções.
Se todas as regras para ISOs forem cumpridas, então a eventual venda das ações é chamada de "disposição qualificada", e o funcionário paga imposto sobre ganhos de capital de longo prazo sobre o aumento total em valor entre o preço da concessão e o preço de venda. A empresa não toma dedução de imposto quando existe uma disposição qualificada.
Exercitando uma opção.
Contabilidade.
Estoque restrito.
Estoque Fantasma e Direitos de Apreciação de Ações.
Planos de Compra de Ações de Empregados (ESPPs)
Os planos que não atendem a esses requisitos não são qualificados e não apresentam vantagens fiscais especiais.
Fique informado.
Nossa Atualização de Propriedade de Empregados duas vezes por mês mantém você em dia com as notícias neste campo, desde a evolução legal até a quebra de pesquisas.
Publicações Relacionadas.
Você pode estar interessado em nossas publicações nesta área de tópicos; veja, por exemplo:
Edições Selecionadas na Compensação Patrimonial.
Um olhar detalhado sobre alguns dos principais tópicos da remuneração de capital. Inclui um capítulo abrangente sobre ESPPs.
GPS: Opções de ações.
Um guia para questões administrativas e de conformidade para planos de opções de ações em empresas de capital aberto dos EUA.
Guia de Referência Rápida do Exame CEPI.
Um guia de referência rápida para compensação de capital sob a forma de quatro folhas laminadas frente e verso.
O Guia do Tomador de Decisão para Compensação de Capital.
Como encontrar e implementar uma estratégia de compensação de capital que funcione para sua empresa.
O Livro de Opções de Ações.
Um guia completo para opções de ações para funcionários, com detalhes técnicos abrangentes.
Se eu soubesse disso.
Histórias verdadeiras ilustrando erros comuns na implementação e operação de planos de remuneração de ações e o que fazer com eles.
Compartilhe esta página.
Link para nós
Folheto de Afiliação NCEO.
Leia nosso folheto de adesão (PDF) e passe-o para qualquer pessoa interessada na propriedade dos funcionários.

Advogado da Silicon Hills.
um Texas Startup Lawyer ajuda Startups e Founders fora do Vale do Silício a navegar Startup Law & amp; VC.
Early Hires: opções ou ações?
Resumindo: Embora a trajetória convencional de uma startup seja emitir (i) ações ordinárias para fundadores e (ii) opções para funcionários, as contratações antecipadas preocupadas com impostos muitas vezes insistem em receber ações também. O poder de voto, juntamente com outros fatores políticos, apresenta algumas compensações a serem consideradas pelos fundadores nesse cenário.
& # 8220; Pool de Opções & # 8221; & # 8211; uma parte da capitalização da empresa reservada (depois que as ações do fundador são emitidas) para emissões de ações para funcionários, consultores, consultores, etc., e sujeita a uma cláusula especial "plano". concebido para cumprir regras fiscais complexas. Mesmo que seja referido como uma opção & # 8220; & # 8221; pool, planos de ações adequadamente projetados permitirão a emissão de ações diretas sob o pool também; não apenas opções. & # 8220; ISO & # 8220; & # 8211; Opção de ações de incentivo & # 8211; um tipo de opção favorecida pelo imposto que pode ser emitida apenas para funcionários, se determinados requisitos forem atendidos. O principal benefício é que, no exercício, a diferença entre o preço de exercício e o valor justo de mercado da ação no momento do exercício não é tributada como receita ordinária. No entanto, está sujeita ao Imposto Mínimo Alternativo (AMT), que pode atingir certas pessoas dependendo da sua situação fiscal. & # 8220; NSO / NQSO & # 8221; & # 8211; Opção de ações não qualificadas & # 8211; basicamente, qualquer opção que não seja ISO. Normalmente emitido para não empregados (conselheiros, consultores), está sujeito ao imposto de renda ordinário por ocasião do exercício. Veja também: Qual é a diferença entre um ISO e um NSO? & # 8220; Stock restrito & # 8221; & # 8211; Para fins de uma startup privada, apenas uma outra maneira de dizer Common Stock. A mesma segurança que os fundadores obtêm, exceto para funcionários não fundadores que geralmente são emitidos pelo & # 8220; pool & # 8221; (sob o Plano) usando diferentes documentos de formulário. & # 8220; Opções de Exercício Antecipado & # 8221; & # 8211; As opções convencionais emitidas para os empregados não são exercíveis até que sejam adquiridas; significado até que o destinatário tenha trabalhado o tempo suficiente para "ganhar" o & # 8221; o direito de exercê-las. As opções de exercício antecipado modificaram as disposições de exercício / exercício para que possam ser exercidas a partir do Dia 1 & # 8211; com as ações subjacentes ficando sujeitas ao cronograma de aquisição de direitos. Do ponto de vista da empresa, as opções de exercício antecipado são muito semelhantes às emissões restritas de ações. A única diferença real é que o recebedor tem a opção de exercitar e receber o Estoque no Dia 1, ou sentar-se nele e se exercitar mais tarde.
O caminho convencional das emissões de ações de uma empresa é algo assim:
Os Fundadores recebem emissões diretas de Ações Ordinárias (não opções) Os funcionários não Fundadores recebem ISOs (opções) Consultores, assessores, etc. recebem NSOs (opções) Os investidores recebem Ações Preferenciais ou SAFEs / Notas Conversíveis que convertem em Ações Preferenciais.
O valor do estoque restrito é tributável como receita ordinária na data da emissão, a menos que seu valor justo de mercado (FMV) seja pago em dinheiro. Opções, I SOs e NSOs, no entanto, geralmente não são tributáveis ​​na data da concessão, desde que seu preço de exercício seja igual ao FMV. Assim, você normalmente esperaria que os funcionários preferissem receber opções sobre ações. Nenhum imposto & gt; Imposto. E este é o caso quando o FMV da ação é relativamente alto. É por isso que contratações posteriores (geralmente depois de uma Série A) quase sempre recebem opções, sem dúvida. O estoque chega a votar nas aprovações dos acionistas. Opções não (até que sejam exercidas para o estoque).
Os problemas: os funcionários adiantados querem minimizar impostos. As empresas querem evitar dar direitos de voto / complicar os votos dos acionistas cedo demais.
No entanto, nos primórdios da vida de uma startup, evitar o imposto sobre estoque restrito é fácil por causa da baixa FMV do estoque (frações de um centavo): escreva um cheque de alguns dólares FMV), ou apenas pagar o imposto sobre os poucos dólares de renda ordinária. Portanto, você recebe o & quot; nenhum imposto na concessão & # 8221; benefício de opções, sem se preocupar em pagar impostos mais tarde em uma data de exercício. O recebimento de ações também faz com que o relógio funcione com o tratamento de ganhos de capital a longo prazo. Portanto, as primeiras contratações, quando fazem o dever de casa, tendem a insistir em receber estoque restrito (ou opções de exercício antecipado) em relação às opções convencionais. Melhor lidar com o imposto quando a ação vale (pelo menos para o IRS) virtualmente nada, em vez de anos depois exercendo a opção quando a conta fiscal poderia ser muito maior (renda ordinária para NSOs, ou AMT (para algumas pessoas) para ISOs). Sidenote: Os planos de ações convencionais também têm um período de exercício pós-rescisão de 90 dias, o que significa que quando um funcionário deixa uma empresa (voluntária ou involuntariamente) ele precisa exercer suas opções dentro de 90 dias ou então ser demitido & # 8211; mesmo se investido. Pagar o preço de exercício não é um problema para uma contratação antecipada nesse cenário, porque é muito baixo (as frações de um centavo de bilheteria), mas se o AMT entrar em jogo, ele pode atingi-lo com um imposto conta. Isso não aparece em um cenário de estoque restrito. O tradeoff da perspectiva da Empresa é que, assim como os fundadores, os contratados que recebem ações restritas terão direitos totais de voto (incluindo ver o que for submetido aos votos dos acionistas) para todas as suas ações no Dia 1, antes deles # & #; 8217 ve investido em qualquer coisa. Quando apenas uma ou duas pessoas estão em questão, isso pode não ser um grande problema. Pode ser uma maneira de fazer com que os funcionários iniciais se sintam parte da equipe principal, porque seu patrimônio está sendo tratado como fundadores. Quando há mais de um punhado de contratações, no entanto, ele pode ficar pesado rapidamente. O número de pessoas a consultar para os votos dos acionistas pode ir de 2-3 a 10, 15, 20. Se houver consultores e conselheiros na foto, eles podem começar a perguntar por que eles não estão recebendo os mesmos benefícios fiscais contratações antecipadas. E então, em algum momento, você precisa desenhar uma linha e começar a conceder opções. A primeira opção não é tão especial quanto as pessoas com estoque restrito? Política.
De um modo geral, a decisão de oferecer opções restritas de ações para as primeiras contratações é prática / política. Embora a natureza favorecida pelos impostos das ISOs signifique que a maioria dos funcionários iniciantes não verá grande parte da diferença de impostos entre o recebimento de ações restritas de ISOs e ações restritas, a perspectiva de um impacto de AMT no cenário ISO torna ações restritas, na rede, melhor para os destinatários. Isso precisa ser equilibrado, do lado da empresa, contra o poder de voto antecipado / direitos de informação dados quando um funcionário recebe ações em vez de opções, e como isso vai acontecer com todas as outras empresas da empresa. contrata.
Meu conselho geral para os fundadores é estar ciente dos trade-offs, e conscientemente tratar o poder de voto antecipado e os benefícios fiscais associados a ações restritas como moeda não a ser desperdiçada. Se houver uma superestrela muito antiga que você queira destacar como um jogador importante, use a moeda. Se não, então tome a decisão com base em todos os outros fatores. A cultura da empresa provavelmente terá um grande fator no cálculo. Muitos, muitos fundadores preferem evitar a política / complicações e simplesmente traçar uma linha na divisão fundador (estoque) / não-fundador (opção). Outros são mais seletivos. Não há fórmula mágica.
Algumas questões separadas valem a pena:
O período de exercício pós-rescisão de 90 dias (após o qual as opções não exercidas, adquiridas ou não, são rescindidas) é frequentemente criticado por ser injusto para com os funcionários, e há alguma justificativa para essa crítica. O ponto de vista é que o funcionário não deve ser forçado a usá-lo ou perdê-lo & # 8221; se eles fizeram o seu tempo (sua opção adquirida) e agora estão se movendo para uma nova empresa. O número real de 90 dias vem de regras fiscais que exigem que as ISOs sejam exercíveis somente dentro de 90 dias após a rescisão. Se uma opção for exercível depois disso, ela se tornará automaticamente um NSO para fins fiscais. Mas não há nada nas regras fiscais que exijam que a opção seja encerrada em 90 dias. Isso em grande parte significava (i) como um impedimento (francamente) para as pessoas desistirem, e (ii) uma maneira de limpar a mesa de limite para pessoas que não queriam pagar o preço de exercício, permitindo essa parte da piscina para depois ser reutilizada para novas contratações. Enquanto o período de 90 dias ainda é uma convenção, os principais executivos / contratados muitas vezes negociam por um período prolongado de exercícios para suas próprias concessões, ou a Empresa, por um gesto de boa vontade, decide por si própria estender seletivamente o período em que alguém folhas em bons termos.
Disclaimer Obrigatório: Este post contém muitos fundamentos e generalizações sobre as regras fiscais, mas obviamente não se destina a ser uma declaração exaustiva dessas regras. As circunstâncias variam, e você absolutamente não deve confiar neste post sem consultar seu próprio advogado e / ou consultores fiscais. Se você fizer isso, não me culpe quando explodir na sua cara. Você foi avisado.

Investir em direitos e warrants de ações.
Empresas que precisam levantar capital adicional podem fazê-lo emitindo ações adicionais de ações. No entanto, essas ações adicionais diluirão o valor das ações existentes, o que pode ser uma preocupação para os acionistas. Algumas empresas, portanto, optam por emitir direitos ou garantias como um meio alternativo de geração de capital. Esses instrumentos dão aos acionistas o direito de preferência de compra de ações adicionais diretamente da empresa, geralmente a um preço com desconto.
Quais são os direitos das ações?
Os direitos de ações são instrumentos emitidos por empresas para fornecer aos acionistas atuais a oportunidade de preservar sua fração de propriedade corporativa. Um único direito é emitido para cada ação, e cada direito pode tipicamente comprar uma fração de uma ação, de modo que vários direitos são necessários para comprar uma única ação.
As ações subjacentes serão negociadas com o direito imediatamente após o direito ser emitido, que é referido como "direitos sobre". Então, o direito se separará do estoque e será negociado separadamente, e então o estoque negociará “direitos” até que os direitos expirem. Os direitos são instrumentos de curto prazo que expiram rapidamente, geralmente dentro de 30 a 60 dias após a emissão. O preço de exercício dos direitos é sempre definido abaixo do preço de mercado atual, e nenhuma comissão é cobrada pelo seu resgate.
O que são garantias?
Os warrants são instrumentos de longo prazo que também permitem que os acionistas comprem ações adicionais de ações a um preço com desconto, mas eles são tipicamente emitidos com um preço de exercício acima do preço de mercado atual. Um período de espera de talvez seis meses a um ano é, portanto, atribuído a warrants, o que dá ao preço do preço da ação um aumento suficiente para exceder o preço de exercício e fornecer um valor intrínseco. Os warrants geralmente são oferecidos em conjunto com títulos de renda fixa e atuam como “adoçantes”, ou atrativos financeiros para a compra de um título ou ações preferenciais.
Um mandado único geralmente pode comprar uma única ação, embora seja estruturado para comprar mais ou menos do que isso em alguns casos. Os warrants também foram usados ​​em raras ocasiões para comprar outros tipos de valores mobiliários, como ofertas preferenciais ou títulos. Os warrants diferem dos direitos em que eles devem ser comprados de um corretor para uma comissão e, geralmente, qualificam-se como títulos marginais.
Ambos os direitos e garantias se assemelham conceitualmente às opções de compra negociadas publicamente em alguns aspectos. O valor dos três instrumentos depende inerentemente do preço da ação subjacente. Eles também se assemelham a opções de mercado, pois não têm direito a voto e não pagam dividendos ou oferecem qualquer tipo de reivindicação sobre a empresa.
Como os direitos e warrants diferem das opções.
Os direitos e warrants diferem das opções de mercado, na medida em que são inicialmente emitidos apenas para os acionistas existentes, embora normalmente ocorra um mercado secundário que permite que outros compradores adquiram esses títulos.
Acionistas que recebem direitos e garantias têm quatro opções disponíveis para eles:
Mantenha os seus direitos ou garantias no momento da compra. Adquira direitos adicionais ou warrants no mercado secundário. Venda os seus direitos ou warrants a outro investidor. Simplesmente permita que os seus direitos ou warrants expirem.
A opção final listada aqui nunca é sábia para os investidores. Se o preço de mercado atual das ações exceder o preço de exercício, os investidores que não desejarem exercê-los devem sempre vendê-los no mercado secundário para receber seu valor intrínseco. No entanto, muitos acionistas sem instrução que não entendem o valor de seus direitos fazem isso regularmente.
Determinando o valor.
Tal como acontece com as opções de mercado, o preço de mercado da ação pode cair abaixo do preço de exercício, altura em que os direitos ou warrants se tornariam inúteis. Direitos e warrants também se tornam inúteis após a expiração, independentemente de onde as ações subjacentes estão negociando. Os valores para direitos e warrants de ações são determinados da mesma maneira que para opções de mercado. Eles têm valor intrínseco, que é igual à diferença entre os preços de mercado e de exercício do estoque, e o valor de tempo, que é baseado no potencial da ação de aumentar o preço antes da data de vencimento.
Ambos os tipos de títulos se tornarão inúteis quando da expiração, independentemente do preço atual da ação subjacente. Eles também perderão seu valor intrínseco se o preço de mercado das ações cair abaixo de seu preço de exercício ou de subscrição. Por esse motivo, as empresas devem definir cuidadosamente os preços de exercício dessas questões para minimizar a chance de que a oferta inteira falhe. No entanto, os direitos e garantias também podem proporcionar ganhos substanciais para os acionistas da mesma maneira que as opções de compra, caso o preço das ações subjacentes aumente.
Preços de direitos.
A fórmula usada para determinar o valor de um direito de ação é:
Direito de estoque = Preço de mercado atual - preço de subscrição de novo estoque / número de direitos necessários para comprar uma nova ação.
Atual preço de mercado das ações em circulação atuais = US $ 60.
Preço de subscrição de novo estoque = $ 50.
Número de direitos necessários para comprar uma nova ação = 5.
$ 60 - $ 50/5 = $ 2 (valor de cada direito)
Preço do Warrant.
A fórmula para determinar o valor de um warrant é:
Valor do avalista = Preço de mercado atual do estoque - preço de subscrição do bônus / número de ações que podem ser compradas com um único warrant.
Preço de mercado atual do estoque = $ 45.
Preço de subscrição do warrant = $ 30.
Número de ações compartilhadas que podem ser compradas = 1.
Como os direitos e garantias são tributados.
Os direitos e garantias são tributados da mesma maneira que qualquer outra garantia. A diferença entre o exercício e os preços de venda desses títulos é tributada como um ganho de longo ou curto prazo. Qualquer ganho ou perda realizado a partir de direitos de negociação ou warrants no mercado secundário é tributado da mesma maneira (exceto que todos os ganhos e perdas serão de curto prazo).
The Bottom Line.
Os direitos e garantias podem permitir que os acionistas atuais comprem ações adicionais com desconto e mantenham sua participação na empresa. No entanto, nenhum desses instrumentos é usado hoje em dia, já que as opções de ações e de mercado se tornaram muito mais populares. Para mais informações sobre direitos e warrants, consulte seu corretor ou consultor financeiro.

Direitos de voto sobre opções de ações
Por Kathleen A. Kelley em 15 de agosto de 2014.
Muitos dos meus clientes estão interessados ​​em formar corporações S em vez de corporações C, para que possam economizar dinheiro com impostos. O corpo de engenheiros é grande, mas o Código de Receitas Internas impõe muitos requisitos ao corpo de S, alguns dos quais podem atrapalhar os pequenos negócios.
A exigência sobre a qual me perguntam com mais frequência é a restrição que todos os acionistas ou membros devem compartilhar em uma classe de ações. Isso pode ser um problema para empresas em estágio inicial que gostam de emitir ações como remuneração ou recompensa para funcionários, mas que não querem distribuir exatamente o mesmo material que pertence aos fundadores. Felizmente, o IRS exige apenas que as ações tenham direitos idênticos às distribuições e receitas de liquidação, e não direitos idênticos no voto. Com isso em mente, é possível fornecer a seus funcionários ações ordinárias sem direito a voto em vez de ações ordinárias e não afetar sua eleição.
S Corporações vs. C Corporações.
Uma corporação S é uma corporação ou LLC formada sob as leis de um estado que então decide ser tratado como uma corporação S. A eleição não é feita nos Artigos de Incorporação ou nos Artigos de Organização da entidade, mas normalmente feita prontamente após a formação no formulário 2553, arquivado no IRS. Ao eleger o status S, a entidade pode passar por todos os seus ganhos, perdas, deduções e créditos para seus acionistas ou proprietários, de forma que haja apenas um nível de imposto, na faixa de imposto federal do respectivo proprietário. Em contraste, uma corporação que não eleger o status S, chamada corporação C, reconhecerá todos os ganhos, perdas, deduções e créditos no nível corporativo e no nível do acionista ou proprietário, resultando em um imposto duplo.
Requisitos para S Corporações.
Nem todas as corporações ou LLCs podem se qualificar para eleger o status S. Entre outros requisitos, a entidade deve:
Seja uma corporação formada nos Estados Unidos; Ter apenas pessoas físicas ou certos trusts como acionistas (nenhum sócio corporativo ou sócio em uma corporação S); Não tem mais de 100 acionistas ou membros; e tem apenas uma classe de estoque.
Planos de Ações de Empregados / Remuneração em Ações.
Para incentivar os funcionários, as empresas freqüentemente emitem opções de ações ou ações restritas aos funcionários. A ação é emitida para atrair talentos, como recompensa pelo desempenho ou como incentivo para permanecer na empresa, ou todos os três. O pensamento é que, como sócio, o funcionário investirá mais na empresa e trabalhará mais para alcançar resultados que ele ou ela compartilhará com os outros proprietários.
Enquanto o empregador pode reconhecer o benefício de ter funcionários compartilhando os lucros da empresa como um proprietário de ações, os empregadores tendem a não querer que esses mesmos funcionários tenham exatamente os mesmos direitos sobre as ações que os fundadores da empresa. A maneira mais fácil de distinguir os fundadores dos empregados-proprietários é limitar o capital votante aos fundadores ou investidores-anjos. Essa estrutura mantém a administração no nível fundador, aqueles que detêm ações ordinárias com direito a voto, mas os lucros e toda a propriedade econômica são compartilhados entre todos os proprietários de ações ordinárias.
Uma empresa que deseja os benefícios de tributação de fluxo de uma empresa S não é obrigada a emitir ações idênticas para todos os seus proprietários. A empresa pode emitir ações ordinárias e sem direito a voto desde que as ações tenham direitos idênticos às distribuições e recursos de liquidação.

Tuesday 29 May 2018

Estratégia de negociação em torno do ponto de pivô


Negociação de ponto de pivô.
A utilização de pontos de pivô como estratégia de negociação existe há muito tempo e foi originalmente usada por traders de pregão.
Esta foi uma maneira simples e agradável para os operadores de mercado terem uma ideia de para onde o mercado estava caminhando durante o dia, com apenas alguns cálculos simples.
O ponto de pivo é o nível no qual a direção do mercado muda para o dia. Usando alguma aritmética simples e nos dias anteriores, alta, baixa e próxima, uma série de pontos é derivada. Esses pontos podem ser níveis críticos de suporte e resistência. O nível de pivô, os níveis de suporte e resistência calculados a partir dele são coletivamente conhecidos como níveis de pivô.
Todos os dias o mercado que você está acompanhando tem uma abertura, alta, baixa e um fechamento para o dia (alguns mercados como o forex são 24 horas, mas geralmente usam as 5pm EST como abertura e fechamento). Esta informação contém basicamente todos os dados que você precisa para usar pontos de pivô.
A razão pela qual os pontos de articulação são tão populares é que eles são preditivos em oposição a atrasos. Você usa as informações do dia anterior para calcular possíveis pontos de inflexão para o dia em que você está prestes a negociar (dias atuais).
Como muitos comerciantes seguem os pontos de pivô, você frequentemente descobrirá que o mercado reage a esses níveis. Isso lhe dá a oportunidade de negociar.
Antes de entrar em como você calcula pontos de pivô, eu só quero salientar que eu coloquei uma calculadora online e uma versão de desktop realmente nítida que você pode baixar de graça AQUI.
Se você preferir trabalhar os pontos de pivô por conta própria, a fórmula que eu uso está abaixo:
Resistência 3 = Alta + 2 * (Pivô - Baixo)
Resistência 2 = Pivot + (R1 - S1)
Resistência 1 = 2 * Pivô - Baixo.
Ponto de giro = (Alto + Próximo + Baixo) / 3.
Suporte 1 = 2 * Pivot - High.
Suporte 2 = Pivot - (R1 - S1)
Suporte 3 = Baixo - 2 * (High - Pivot)
Como você pode ver na fórmula acima, apenas tendo os dias anteriores altos, baixos e próximos, você acaba terminando com 7 pontos, 3 níveis de resistência, 3 níveis de suporte e o ponto de pivô atual.
Se o mercado abrir acima do ponto de pivo, então o viés do dia é longo. Se o mercado abrir abaixo do ponto de pivo, então o viés do dia é para operações curtas.
Os três pontos de articulação mais importantes são R1, S1 e o ponto de rotação atual.
A idéia geral por trás de pontos de pivô de negociação é procurar uma reversão ou quebra de R1 ou S1. Quando o mercado chegar a R2, R3 ou S2, S3, o mercado já estará sobrecomprado ou sobrevendido e esses níveis devem ser usados ​​para saídas, em vez de entradas.
Um conjunto perfeito seria para o mercado abrir acima do nível do pivô e então parar ligeiramente no R1 e depois ir para o R2. Você entraria em uma quebra de R1 com um alvo de R2 e se o mercado fosse muito forte, feche a metade em R2 e meta R3 com o restante de sua posição.
Infelizmente a vida não é tão simples e temos que lidar com cada dia de negociação da melhor maneira possível. Eu escolhi um dia aleatoriamente da semana passada e o que se segue são algumas idéias sobre como você poderia ter negociado naquele dia usando pontos de pivô.
No dia 12 de agosto 04, o Euro / Dólar (EUR / USD) tinha o seguinte:
Resistência 3 = 1,2377.
Resistência 2 = 1,2337.
Resistência 1 = 1,2293.
─ ponto de articulação = 1,2253.
Suporte 1 = 1,2209.
Suporte 2 = 1,2169.
Suporte 3 = 1,2125.
Dê uma olhada no gráfico de 5 minutos abaixo:
A linha verde é o ponto de giro. As linhas azuis são os níveis de resistência R1, R2 e R3. As linhas vermelhas são os níveis de suporte S1, S2 e S3.
Há muitas maneiras de negociar esse dia usando pontos de articulação, mas vou orientá-lo em algumas delas e discutir por que algumas delas são boas em certas situações e porque algumas são ruins.
O comércio de fuga.
No início do dia, estávamos abaixo do ponto de pivotagem, de modo que nosso viés é para transações curtas. Um canal formado para que você estivesse procurando uma fuga do canal, de preferência para o lado negativo. Nesse tipo de negociação, você teria sua ordem de entrada de venda logo abaixo da linha de canal inferior, com uma ordem de parada logo acima da linha de canal superior e um destino de S1. O problema neste dia foi que, S1 estava muito perto do nível de fuga e não havia carne suficiente no mercado (13 pips). Esta é uma boa técnica de entrada para você. Só porque não era adequado neste dia, não significa que não será adequado no dia seguinte.
O comércio de retirada.
Este é um dos meus conjuntos favoritos. O mercado passa por S1 e depois recua. Um pedido de entrada é colocado abaixo do suporte, que neste caso foi o mais recente antes do recuo. Uma parada é então colocada acima do recuo (o pico mais recente) e um alvo definido para S2. O problema novamente, neste dia, era que a meta do S2 era fechar, e o mercado nunca retirou o suporte anterior, o que nos diz que, o sentimento do mercado está começando a mudar.
Quebra de Resistência.
Conforme o dia avançava, o mercado começou a voltar para S1 e formou um canal (área de congestionamento). Esta é outra boa forma para um comércio. Uma ordem de entrada é colocada logo acima da linha de canal superior, com uma parada logo abaixo da linha de canal inferior e o primeiro alvo seria a linha de pivô. Se você estiver negociando mais de uma posição, fecha metade da sua posição à medida que o mercado se aproxima da linha de pivô, aumenta sua parada e observa a ação do mercado nesse nível. Como aconteceu, o mercado nunca parou e seu segundo alvo se tornou R1. Isso também foi facilmente alcançado e eu teria fechado o resto da posição nesse nível.
Estratégia Avançada.
Como mencionei anteriormente, há muitas maneiras de negociar com pontos de pivô. Um método mais avançado é usar a cruz de duas médias móveis como confirmação de uma fuga. Você pode até usar combinações de indicadores para ajudá-lo a tomar uma decisão. Pode ser o cruzamento de duas médias e também o MACD deve estar no modo de compra. Mexa com alguns dos seus indicadores favoritos, mas lembre-se que o sinal é uma quebra de nível e os indicadores são apenas uma confirmação.
Ainda não entramos em padrões em torno de níveis de pivot ou falhas, mas esse não é o objetivo desta lição. Eu só quero apresentar outra maneira possível para você negociar.
Para ler mais artigos de Marcos, por favor clique aqui.

A estratégia de negociação Forex do Pivot Point.
A seguinte estratégia de negociação de ponto de giro existe há muito tempo. Foi originalmente usado por comerciantes de chão. Esta foi uma maneira agradável e fácil para os operadores de andar para ter uma idéia de onde o mercado estava indo durante o curso do dia usando apenas alguns cálculos básicos.
O ponto de pivo é definido como o nível no qual a direção do mercado muda para o dia. Usando alguns cálculos simples e os preços de alta, baixa e de fechamento do dia anterior, uma série de pontos é definida. Esses pontos podem ser níveis críticos de suporte e resistência. Os níveis de pivô, suporte e resistência calculados a partir desses preços são conhecidos coletivamente como níveis de pivô.
Todos os dias, o mercado que você está seguindo tem um preço aberto, alto, baixo e de fechamento para o dia (alguns mercados, como o mercado forex, estão abertos 24 horas, mas geralmente usamos meia-noite GMT (Greenwich Mean Time)) e tempo de fechamento). Esta informação contém basicamente todos os dados que você precisa para usar pontos de pivô.
A razão pela qual os pontos de articulação são tão populares é que eles são preditivos em oposição a atrasos. Você usa as informações do dia anterior para calcular possíveis pontos de inflexão para o dia em que você está prestes a negociar (dia atual).
Como muitos comerciantes seguem os pontos de pivô, você frequentemente descobrirá que o mercado reage a esses níveis. Isso lhe dá a oportunidade de negociar.
Como uma alternativa ao cálculo de pontos de pivô em seu próprio país, você pode usar nossa própria calculadora de ponto de pivô.
Se você preferir calcular os pontos de pivô, aqui estão as fórmulas que você precisa:
Resistência 3 = Alta + 2 * (Pivô - Baixo)
Resistência 2 = Pivot + (R1 - S1)
Resistência 1 = 2 * Pivô - Baixo.
Ponto de giro = (Alto + Próximo + Baixo) / 3.
Suporte 1 = 2 * Pivot - High.
Suporte 2 = Pivot - (R1 - S1)
Suporte 3 = Baixo - 2 * (High - Pivot)
Como você pode ver nas fórmulas acima, apenas tendo os preços altos, baixos e fechados do dia anterior, você acaba tendo 7 pontos: 3 níveis de resistência, 3 níveis de suporte e o ponto de pivô atual.
Se o mercado abrir acima do ponto de pivo, então o viés do dia é de negociações longas. Se o mercado abrir abaixo do ponto de pivo, então o viés do dia é curto.
Os três pontos de articulação mais importantes são R1, S1 e o ponto de rotação atual.
A idéia geral por trás de pontos de pivô de negociação é procurar uma reversão ou quebra de R1 ou S1. Quando o mercado atingir R2 ou R3, ou S2 ou S3, o mercado já estará sobrecomprado ou sobrevendido e esses níveis devem ser usados ​​como pistas para sair, em vez de entrar.
Uma configuração perfeita seria para o mercado abrir acima do nível do pivô e então parar levemente no R1 e então ir para o R2. Você entraria em uma quebra de R1 com um alvo de R2 e se o mercado fosse muito forte, feche a metade em R2 e meta R3 com o restante de sua posição.
Infelizmente, as coisas nem sempre acontecem de acordo com o planejado, temos que nos aproximar de cada dia de negociação da melhor maneira possível. Eu escolhi um dia aleatório do passado, e o que segue são algumas idéias sobre como você poderia ter negociado naquele dia usando pontos de pivô.
Em 12 de agosto de 2004, o EUR / USD tinha as seguintes características:
Resistência 3 = 1,2377.
Resistência 2 = 1,2337.
Resistência 1 = 1,2293.
─ ponto de articulação = 1,2253.
Suporte 1 = 1,2209.
Suporte 2 = 1,2169.
Suporte 3 = 1,2125.
Dê uma olhada no gráfico de 5 minutos abaixo:
A linha verde representa o ponto de pivô. As linhas azuis são os 3 níveis de resistência: R1, R2 e R3. As linhas vermelhas são os níveis de suporte: S1, S2 e S3.
Há muitas maneiras de negociar este cenário usando pontos de articulação, mas vou orientá-lo através de alguns deles e demonstrar porque alguns deles são bons em certas situações e porque alguns deles não são.
O comércio de fuga.
No início do dia, estávamos abaixo do nível de ponto de pivotagem, então nosso viés é para operações de curto prazo. Um canal formado, então você estaria procurando uma fuga do canal, de preferência indo para baixo. Nesse tipo de negociação, você colocaria sua ordem de entrada de venda logo abaixo da linha de canal inferior com uma ordem de parada logo acima da linha de canal superior e um destino de S1 (1.2209). Neste dia, porém, o S1 estava muito próximo do nível de breakout, então não havia um grande lucro a ser obtido no trade (13 pips). Esta é uma boa técnica de entrada para você. Só porque não foi muito rentável neste dia não significa que não teria sido mais lucrativo em outra ocasião.

Estratégia de negociação em torno do ponto de pivô
O nível de pivô e os níveis calculados a partir disso são coletivamente conhecidos como níveis de pivô.
Se você quiser saber como transformar $ 150 em $ 7,523.54 em menos de 30 dias com um sistema simples.
Digite seu email válido para acesso instantâneo:
Resistência 2 = Pivot + (R1 - S1)
Resistência 1 = 2 * Pivô - Baixo.
Ponto de giro = (Alto + Próximo + Baixo) / 3.
Suporte 1 = 2 * Pivot - High.
Suporte 2 = Pivot - (R1 - S1)
Suporte 3 = Baixo - 2 * (High - Pivot)
Infelizmente a vida não é tão simples e temos que lidar com cada dia de negociação da melhor maneira possível. Eu escolhi um dia aleatoriamente da semana passada e o que se segue são algumas idéias sobre como você poderia ter negociado naquele dia usando pontos de pivô.
Resistência 2 = 1,2337.
Resistência 1 = 1,2293.
─ ponto de articulação = 1,2253.
Suporte 1 = 1,2209.
Suporte 2 = 1,2169.
Suporte 3 = 1,2125.
A linha verde é o ponto de giro. As linhas azuis são os níveis de resistência R1, R2 e R3. As linhas vermelhas são os níveis de suporte S1, S2 e S3.
Ainda não entramos em padrões em torno de níveis de pivot ou falhas, mas esse não é o objetivo desta lição. Eu só quero apresentar outra maneira possível para você negociar.

Estratégias de Pivô: uma ferramenta útil para os comerciantes de Forex.
Por muitos anos, traders e market makers usaram pontos de pivô para determinar os níveis críticos de suporte e / ou resistência. Os pivots também são muito populares no mercado cambial e podem ser uma ferramenta extremamente útil para os operadores de mercado para identificar os pontos de entrada e para os comerciantes de tendência e de breakout identificarem os principais níveis que precisam ser quebrados para se qualificarem como um saia. Neste artigo, explicaremos como os pontos de pivô são calculados, como eles podem ser aplicados ao mercado de câmbio e como eles podem ser combinados com outros indicadores para desenvolver outras estratégias de negociação.
Calculando Pontos Dinâmicos.
Por definição, um ponto de pivô é um ponto de rotação. Os preços usados ​​para calcular o ponto de pivô são os preços de alta, baixa e de fechamento do período anterior para um título. Esses preços geralmente são obtidos dos gráficos diários de uma ação, mas o ponto de giro também pode ser calculado usando as informações dos gráficos por hora. A maioria dos traders prefere obter os pivots, bem como os níveis de suporte e resistência, fora dos gráficos diários e, em seguida, aplicá-los aos gráficos intraday (por exemplo, por hora, a cada 30 minutos ou a cada 15 minutos). Se um ponto de pivô é calculado usando informações de preço de um período de tempo mais curto, isso tende a reduzir sua precisão e significância.
O cálculo do livro didático de um ponto de giro é o seguinte:
Ponto de Pivô Central (P) = (Alto + Baixo + Fechado) / 3.
Os níveis de suporte e resistência são então calculados a partir desse ponto de pivô usando as seguintes fórmulas:
Suporte de primeiro nível e resistência:
Primeira Resistência (R1) = (2 * P) - Baixa.
Primeiro Suporte (S1) = (2 * P) - Alto.
Da mesma forma, o segundo nível de suporte e resistência é calculado da seguinte forma:
Segunda Resistência (R2) = P + (R1-S1)
Segundo Suporte (S2) = P - (R1-S1)
Calcular dois níveis de suporte e resistência é uma prática comum, mas não é incomum obter um terceiro nível de suporte e resistência. (No entanto, suporte e resistências de terceiro nível são um pouco esotéricas para serem úteis para fins de estratégias de negociação.) Também é possível aprofundar a análise de pontos pivôs - por exemplo, alguns traders vão além dos níveis tradicionais de suporte e resistência e também acompanhar o ponto médio entre cada um desses níveis.
Aplicando Pontos Dinâmicos ao Mercado de Câmbio.
De um modo geral, o ponto de articulação é visto como o nível primário de suporte ou resistência. O gráfico a seguir é um gráfico de 30 minutos do par de moedas GBP / USD com níveis de pivô calculados usando os preços diários de alta, baixa e baixa.
A abertura. Existem três mercados abertos no mercado de câmbio: os EUA abrem, o que ocorre aproximadamente às 8h da manhã. EDT, o europeu aberto, que ocorre às 2h. EDT, e o asiático aberto que ocorre às 19h. EDT.
Figura 1 - Este gráfico mostra um dia comum no mercado de câmbio. O preço de um par de moedas principais (GBP / USD) tende a flutuar entre os níveis de suporte e resistência identificados pelo cálculo do ponto de giro. As áreas circuladas no gráfico são boas ilustrações da importância de uma quebra acima desses níveis.
O que também vemos quando negociamos pivôs no mercado de FX é que o intervalo de negociação para a sessão geralmente ocorre entre o ponto de pivot e os primeiros níveis de suporte e resistência, porque uma multidão de traders joga esse range. Dê uma olhada na Figura 2, um gráfico do par de moedas USD / JPY. Como você pode ver nas áreas circuladas, os preços inicialmente permaneceram dentro do ponto de pivô e o primeiro nível de resistência com o pivô atuando como suporte. Uma vez que o pivô foi quebrado, os preços caíram e permaneceram predominantemente dentro do pivô e da primeira zona de apoio.
Figura 2 - Este gráfico mostra um exemplo da força do suporte e resistência calculada usando os cálculos de pivô.
A importância do mercado abre.
Um dos pontos-chave a entender quando se negocia pontos de pivot no mercado FX é que as quebras tendem a ocorrer em torno de um dos mercados abertos. A razão para isso é o afluxo imediato de comerciantes que entram no mercado ao mesmo tempo. Esses operadores entram no escritório, analisam como os preços foram negociados durante a noite e quais dados foram divulgados, ajustando seus portfólios de acordo. Durante os períodos de tempo mais silenciosos, como entre o fecho dos EUA (4h EDT) e o asiático aberto (7p. m. EDT) (e às vezes até durante a sessão asiática, que é o pregão mais silencioso), os preços podem permanecer confinado por horas entre o nível do pivô e o nível de suporte ou resistência. Isso fornece o ambiente perfeito para os operadores com limite de intervalo.
Duas estratégias usando pontos de pivô.
Muitas estratégias podem ser desenvolvidas usando o nível de pivô como base, mas a precisão do uso de linhas de pivô aumenta quando as formações de castiçal japonesas também podem ser identificadas. Por exemplo, se os preços fossem negociados abaixo do pivô central (P) durante a maior parte da sessão e fizessem uma incursão acima do pivot enquanto criavam simultaneamente uma formação de reversão (como uma estrela cadente, doji ou homem pendurado), você poderia vender antecipação da retomada do preço de negociação abaixo do ponto de pivô.
Um exemplo perfeito disso é mostrado na Figura 3, um gráfico USD / CHF de 30 minutos. USD / CHF manteve-se limitado entre a primeira zona de suporte e o nível de pivô para a maior parte do pregão asiático. Quando a Europa ingressou no mercado, os comerciantes começaram a elevar o USD / CHF acima do pivô central. Os touros perderam o controle quando a segunda vela se tornou uma formação doji. Os preços então começaram a reverter para baixo do pivô central para passar as próximas seis horas entre o pivô central e a primeira zona de apoio. Os comerciantes que observam esta formação poderiam ter vendido USD / CHF na vela logo após a formação do doji para aproveitar pelo menos 80 pips de lucro entre o pivot point e o primeiro nível de suporte.
Figura 3 - Este gráfico mostra um ponto de pivô sendo usado em cooperação com um padrão de velas para prever uma inversão de tendência. Observe como a descida foi interrompida pelo segundo nível de suporte.
Outra estratégia que os comerciantes podem usar é procurar os preços para obedecer ao nível de pivô, portanto, validando o nível como uma zona sólida de suporte ou resistência. Neste tipo de estratégia, você está olhando para ver o preço quebrar o nível de pivô, inverter e, em seguida, voltar para o nível de pivô. Se o preço prosseguir para o ponto de giro, isso indica que o nível de pivô não é muito forte e, portanto, é menos útil como sinal de negociação. No entanto, se os preços hesitarem em torno desse nível ou "validá-lo", o nível do pivô é muito mais significativo e sugere que o movimento inferior é uma quebra real, o que indica que pode haver um movimento de continuação.
O gráfico GBP / CHF de 15 minutos na Figura 4 mostra um exemplo de preços "obedecendo" à linha de pivô. Na maioria das vezes, os preços eram confinados primeiro no nível intermediário e no pivô. No aberto europeu (2h da EDT), o GBP / CHF subiu e quebrou acima do nível do pivô. Os preços retornaram ao nível do pivô, seguraram-no e voltaram a subir novamente. O nível foi testado mais uma vez antes de o mercado dos EUA abrir (7h da EDT), quando os traders deveriam ter feito uma ordem de compra para GBP / CHF, já que o nível do pivô já havia provado ser um nível de suporte significativo. Para os comerciantes que fizeram isso, o GBP / CHF bateu o nível e subiu novamente.
Figura 4 - Este é um exemplo de um par de moedas "obedecendo" ao suporte e resistência identificados pelo cálculo do ponto de giro. Esses níveis se tornam mais significativos quanto mais vezes o par tenta romper.
The Bottom Line.
Traders e market makers têm usado pontos de pivô há anos para determinar os níveis críticos de suporte e / ou resistência. Como os gráficos acima mostraram, os pivôs podem ser especialmente populares no mercado de câmbio, já que muitos pares de moedas tendem a flutuar entre esses níveis. Os operadores com limites de oferta entrarão em uma ordem de compra próxima aos níveis identificados de suporte e uma ordem de venda quando o ativo se aproximar da resistência superior. Os pontos de pivotagem também permitem que os traders de tendência e breakout identifiquem níveis chave que precisam ser quebrados para que um movimento se qualifique como um breakout. Além disso, esses indicadores técnicos podem ser muito úteis em mercados abertos.
Ter uma consciência de onde esses possíveis pontos de mudança estão localizados é uma excelente maneira de os investidores individuais se tornarem mais sintonizados com os movimentos do mercado e tomarem decisões de transação mais instruídas. Dada a sua facilidade de cálculo, os pontos de articulação também podem ser incorporados em muitas estratégias de negociação. A flexibilidade e a relativa simplicidade dos pontos de pivô definitivamente os tornam uma adição útil à sua caixa de ferramentas de negociação.

Como trocar pontos de pivô.
Negociação de ponto de pivô.
Você vai amar esta lição. A utilização de pontos de pivô como estratégia de negociação existe há muito tempo e foi originalmente usada por traders de pregão. Esta foi uma maneira simples e agradável para os operadores de mercado terem uma ideia de para onde o mercado estava caminhando durante o dia, com apenas alguns cálculos simples.
O ponto de pivo é o nível no qual a direção do mercado muda para o dia. Usando alguma aritmética simples e nos dias anteriores, alta, baixa e próxima, uma série de pontos é derivada. Esses pontos podem ser níveis críticos de suporte e resistência. O nível de pivô, os níveis de suporte e resistência calculados a partir dele são coletivamente conhecidos como níveis de pivô.
Todos os dias o mercado que você está acompanhando tem uma abertura, alta, baixa e um fechamento para o dia (alguns mercados como o forex são 24 horas, mas geralmente usam as 5pm EST como abertura e fechamento). Esta informação contém basicamente todos os dados que você precisa para usar pontos de pivô.
A razão pela qual os pontos de articulação são tão populares é que eles são preditivos em oposição a atrasos. Você usa as informações do dia anterior para calcular possíveis pontos de inflexão para o dia em que você está prestes a negociar (dias atuais).
Como muitos comerciantes seguem os pontos de pivô, você frequentemente descobrirá que o mercado reage a esses níveis. Isso lhe dá a oportunidade de negociar.
Se você preferir trabalhar os pontos de pivô por conta própria, a fórmula que eu uso está abaixo:
Resistência 3 = Alta + 2 * (Pivot & # 8211; Baixa)
Resistência 2 = Pivot + (R1 & # 8211; S1)
Resistência 1 = 2 * Pivô & # 8211; Baixo.
Ponto de giro = (Alto + Próximo + Baixo) / 3.
Suporte 1 = 2 * Pivot & # 8211; Alto.
Suporte 2 = Pivô & # 8211; (R1 & # 8211; S1)
Suporte 3 = Baixo e # 8211; 2 * (High & # 8211; Pivot)
Como você pode ver na fórmula acima, apenas tendo os dias anteriores altos, baixos e próximos, você acaba terminando com 7 pontos, 3 níveis de resistência, 3 níveis de suporte e o ponto de pivô atual.
Se o mercado abrir acima do ponto de pivo, então o viés do dia é longo. Se o mercado abrir abaixo do ponto de pivo, então o viés do dia é para operações curtas.
Os três pontos de articulação mais importantes são R1, S1 e o ponto de rotação atual.
A idéia geral por trás de pontos de pivô de negociação é procurar uma reversão ou quebra de R1 ou S1. Quando o mercado chegar a R2, R3 ou S2, S3, o mercado já estará sobrecomprado ou sobrevendido e esses níveis devem ser usados ​​para saídas, em vez de entradas.
Um conjunto perfeito seria para o mercado abrir acima do nível do pivô e então parar ligeiramente no R1 e depois ir para o R2. Você entraria em uma quebra de R1 com um alvo de R2 e se o mercado fosse muito forte, feche a metade em R2 e meta R3 com o restante de sua posição.
Infelizmente a vida não é tão simples e temos que lidar com cada dia de negociação da melhor maneira possível. Eu escolhi um dia aleatoriamente da semana passada e o que se segue são algumas idéias sobre como você poderia ter negociado naquele dia usando pontos de pivô.
Há muitas maneiras de negociar esse dia usando pontos de articulação, mas vou orientá-lo em algumas delas e discutir por que algumas delas são boas em certas situações e porque algumas são ruins.
O comércio de fuga.
No início do dia, estávamos abaixo do ponto de pivotagem, de modo que nosso viés é para transações curtas. Um canal formado para que você estivesse procurando uma fuga do canal, de preferência para o lado negativo. Nesse tipo de negociação, você teria sua ordem de entrada de venda logo abaixo da linha de canal inferior, com uma ordem de parada logo acima da linha de canal superior e um destino de S1.
O problema neste dia foi que, S1 estava muito perto do nível de fuga e não havia carne suficiente no mercado (13 pips). Esta é uma boa técnica de entrada para você. Só porque não era adequado neste dia, não significa que não será adequado no dia seguinte.
O comércio de retirada.
Este é um dos meus conjuntos favoritos. O mercado passa por S1 e depois recua. Um pedido de entrada é colocado abaixo do suporte, que neste caso foi o mais recente antes do recuo. Uma parada é então colocada acima do recuo (o pico mais alto de alta altitude) e um alvo definido para S2.
O problema novamente, neste dia, era que a meta do S2 era fechar, e o mercado nunca retirou o suporte anterior, o que nos diz que, o sentimento do mercado está começando a mudar.
Quebra de Resistência.
Conforme o dia avançava, o mercado começou a voltar para S1 e formou um canal (área de congestionamento). Esta é outra boa forma para um comércio. Uma ordem de entrada é colocada logo acima da linha de canal superior, com uma parada logo abaixo da linha de canal inferior e o primeiro alvo seria a linha de pivô.
Se você estiver negociando mais de uma posição, fecha metade da sua posição à medida que o mercado se aproxima da linha de pivô, aumenta sua parada e observa a ação do mercado nesse nível. Como aconteceu, o mercado nunca parou e seu segundo alvo se tornou R1. Isso também foi facilmente alcançado e eu teria fechado o resto da posição nesse nível.
Como mencionei anteriormente, há muitas maneiras de negociar com pontos de pivô. Um método mais avançado é usar a cruz de duas médias móveis como confirmação de uma fuga. Você pode até usar combinações de indicadores para ajudá-lo a tomar uma decisão. Pode ser o cruzamento de duas médias e também o MACD deve estar no modo de compra.
Mexa com alguns dos seus indicadores favoritos, mas lembre-se que o sinal é uma quebra de nível e os indicadores são apenas uma confirmação.
Martin Chandra é um investidor em tempo integral. Saiba mais sobre o ponto de pivô aqui.
Não esqueça que você pode baixar vários indicadores de ponto de pivô para o metatrader aqui na Great Trading Systems.
Ainda mais, você pode negociar os pontos de articulação de Camerilla, como mostrado pelo surefiretrading, verificando seu site aqui.
Subscrição GRÁTIS de Sistemas de Negociação.
Preencha o formulário abaixo para se inscrever em nossa newsletter e nós lhe enviaremos uma linha quando novos Indicadores e Expert Advisors forem adicionados. E você pode ter certeza de que será o primeiro a saber quando tivermos feito uma revisão de um novo sistema de negociação.
Nossa política de privacidade mantém seu endereço de e-mail 100% seguro e protegido.
Categorias de artigos.
Artigos que você pode gostar.
Contribuindo para o nosso site.
Estamos sempre atentos a novas ideias e estratégias de negociação inteligentes.
Nós amamos sistemas de negociação mecânicos e qualquer coisa Metatrader.
Se você acha que tem algo que vale a pena compartilhar, entre em contato.
Por favor, não aceitamos artigos para fins de marketing e qualquer conceito de negociação deve ser único.

Grupo de Treinamento Forex.
Pontos de pivô são um tipo de suporte e níveis de resistência que são usados ​​por muitos traders intraday e de curto prazo. Ao negociar pontos de pivot, muitas das mesmas regras estão em vigor como em outros tipos de técnicas de suporte e negociação de resistência.
Muitos comerciantes mantêm um olhar atento sobre os pontos de pivot diários, pois são considerados níveis-chave no período intradiário. Iremos através dos aspectos básicos dos Pontos de Pivot Forex e discutiremos algumas estratégias de negociação que podem ser usadas com pontos de pivot diários.
O que são pontos de pivô do Forex?
Pontos de pivot Forex são calculados níveis de preços horizontais no gráfico. Esses níveis mostram áreas potenciais onde o preço pode reverter, especialmente durante o primeiro toque desses níveis. Muitos traders de Forex tomam suas decisões de negociação intraday com base em níveis de pivot diários e, como tal, é importante que os traders intraday observem atentamente a ação de preço nesses níveis.
Como calcular os pontos de articulação.
O cálculo do ponto de pivô padrão é bastante simples. Requer apenas três números - próximos, altos e baixos.
Devemos primeiro calcular o principal ponto de pivot diário. A fórmula para isso:
Ponto de Pivotamento (PP) = (Diário Alto + Diário Baixo + Fechado) / 3.
Uma vez que o mercado Forex é um mercado 24/5, há alguma confusão quanto a qual tempo usar para a abertura e fechamento diário do mercado. A maioria dos traders de forex usa as 23:59 (23:59) GMT para o horário de fechamento do mercado Forex e 12:00 AM (00:00) GMT para o horário de abertura do mercado Forex. Ao fazer isso, você pode separar as sessões de negociação diárias umas das outras.
Quando você obtém o PP, pode começar a calcular os pontos de articulação superiores e inferiores adicionais. Estes são chamados de primeiro, segundo, terceiro níveis de resistência de pivô e primeiro, segundo, terceiro, níveis de suporte de pivô.
Calculando a Primeira Resistência e Suporte ao Pivô.
Como agora você tem o ponto de pivô básico, agora é possível calcular o primeiro suporte e resistência.
R1 = (2 x ponto de articulação) - Daily Low.
S1 = (2 x Ponto Dinâmico) - Diariamente Alto.
Calculando o Suporte e Resistência do Segundo Pivô.
R2 = Ponto Dinâmico + (Diariamente Alto - Diariamente Baixo)
S2 = Ponto Dinâmico - (Daily High - Daily Low)
Calculando o suporte e a resistência do terceiro ponto de articulação.
R3 = Diariamente Alto + 2 x (Ponto Dinâmico - Diariamente Baixo)
S3 = Daily Low - 2 x (Daily High - Ponto Dinâmico)
Passamos pelos cálculos acima, para que você possa entender como esses níveis são calculados. Vamos agora discutir algumas maneiras rápidas de calcular os pontos de pivô sem ter que fazer os cálculos manuais diariamente.
Adicionando Pontos Dinâmicos ao seu Gráfico.
Quando você aplica o ponto de pivô básico e os três suportes e resistências, haverá 7 níveis diferentes. Como você viu acima, pode ser um pouco entediante realizar os cálculos manualmente. Existem diferentes opções para obter os pontos de pivô sem fazer os cálculos acima manualmente.
Calculadora de pontos de pivô.
Existem muitas calculadoras de ponto de pivo on-line na rede. Quando você abre uma calculadora de ponto de giro, você precisará adicionar as três variáveis ​​de ação de preço. Estas são as altas diárias, as baixas diárias e as altas. Quando você adiciona esses três, basta clicar em um botão "calcular" e obter instantaneamente os pontos de pivô. Depois de ter isso, você pode simplesmente plotar as linhas de pivô em seu gráfico de negociação dentro de sua plataforma de negociação.
Indicador de ponto de giro.
A maioria dos softwares de negociação disponíveis hoje terá um indicador de pivô que calculará automaticamente esses níveis para você e os plotará no gráfico. Primeiro, verifique a lista de indicadores que sua plataforma de negociação oferece. Se você não tiver um indicador de pivô, faça uma pesquisa.
Você pode encontrar muitos indicadores de ponto de pivô on-line, que você pode simplesmente adicionar à sua plataforma. Navegar na net e você definitivamente vai encontrar um indicador de ponto de pivô disponível geralmente gratuitamente em algum lugar. Você pode ter que importar o indicador e extrair os arquivos na pasta de indicadores da sua plataforma de negociação. Depois de ter feito isso, você poderá aplicar o indicador de ponto de giro diretamente em seu gráfico. Quando você plotar seu indicador de ponto de giro em seu gráfico, você deve ver algo como isto:
Este é o gráfico de 30 minutos do EUR / USD 2, 3 e 4 de março de 2016. As linhas horizontais no gráfico são os pontos de pivô. A linha azul é o ponto central do pivô. As linhas acima do ponto principal do pivô são R1, R2 e R3. As linhas abaixo da linha azul são S1, S2 e S3, (S2 e S3 não são visíveis). Nós também colocamos três linhas verticais no gráfico. Essas três linhas separam os diferentes dias de negociação. Observe que os níveis de pivô de cada dia de negociação são alinhados de maneira diferente. Isto é assim, porque cada dia de negociação tem diferentes valores diários altos, baixos e próximos. Dessa maneira, os níveis de pivô também são diferentes. É por isso que há uma mudança rápida nos níveis das linhas de pivô para cada dia de negociação.
Pontos de Pivot de Negociação.
Existem algumas regras básicas quando se negocia pontos de pivô.
Seja pessimista quando o preço estiver abaixo do ponto principal do pivô. Seja otimista quando o preço estiver acima do ponto principal do pivô. Vá em frente se o preço saltar de S1, S2 ou S3. Seja breve se o preço for de R1, R2 ou R3.
Uma vez que discutimos a estrutura dos pontos de pivot e a maneira como eles são calculados, agora é hora de demonstrar o pivot trading usando alguns exemplos de gráficos. Dê uma olhada na imagem abaixo:
Este é o gráfico horário do USD / JPY de 29 de fevereiro a 4 de março de 2016. O gráfico mostra a ação de preço dos pontos de articulação por cinco dias consecutivos.
Os círculos mostram momentos em que o preço se consolida e hesita na área de um ponto de pivô. As setas mostram momentos em que o preço encontra suporte ou resistência em torno de um nível de ponto de giro.
Neste exemplo, vemos o preço hesitar em torno de um nível 4 vezes e, em 8 casos, temos uma reversão de preço após a interação com um ponto de pivô.
Estratégia de negociação de pivô.
Agora que vimos os pontos de pivô em ação, agora nos voltaremos para aplicar algumas estratégias de negociação de ponto de pivô.
Pivot Points de Negociação com Ação de Preço.
Em primeiro lugar, mostrarei como usar pontos de articulação como parte de uma estratégia de negociação de ação de preço puro, sem a ajuda de nenhum indicador de negociação adicional. Contaremos com regras de fuga regulares para entrar no mercado. Se entrarmos no mercado em uma fuga, colocaremos um stop loss abaixo do ponto de pivo anterior. Atingiremos o segundo nível de ponto de pivot após a fuga.
Dê uma olhada neste gráfico:
Este é o gráfico H1 do GBP / USD para o período de 28 de janeiro a 5 de fevereiro de 2016. Há dois breakouts por meio do nível PP, que podem ser negociados.
A primeira fuga através da linha pivô azul vem no início do gráfico. Um poderia encurtar o GBP / USD. Uma ordem de stop loss deve ser colocada logo acima de R1 - o primeiro nível de pivô acima do ponto de pivô principal. O alvo deve ser S2 - o segundo nível abaixo do ponto principal do pivô.
É muito importante enfatizar que, se a sua negociação for realizada durante a noite, os pontos de articulação provavelmente serão alterados para o dia seguinte. Dessa forma, seu stop loss e target podem precisar ser ajustados para refletir os novos níveis.
De acordo com o exemplo de negociação acima, cerca de seis horas após a negociação a descoberto no par de par GBP / USD, o preço atinge a meta, que era de cerca de 138 pips de lucro potencial.
O preço começa a aumentar depois de atingir o alvo. No meio do próximo dia de negociação, o GBP / USD quebra o ponto de giro principal na direção de alta. Esta é uma boa oportunidade de longa posição. Se você quiser aproveitar esta longa oportunidade, deverá colocar sua ordem de stop loss logo abaixo de S1, o que não é visível na foto neste momento em particular. Ao mesmo tempo, seu alvo deve estar no R2.
Depois de quebrar o ponto de pivô principal, o preço começa a aumentar e ele passa por R1. No dia seguinte, os níveis de pivô são diferentes. O preço diminui até o ponto central do pivô e até fecha uma vela abaixo.
No entanto, a vela é um martelo de alta, que é uma formação de vela de rejeição. Isso sugere que o comércio deve permanecer aberto. Além disso, o stop loss abaixo de S1 ainda está intacto. O preço inicia então uma consolidação que dura até o final do dia de negociação.
Quando o próximo dia de negociação chegar, os pontos de pivô serão reajustados novamente e estarão mais apertados. O ponto principal do pivô é maior. O preço testa novamente o ponto de pivô principal como suporte e salta para cima. Em seguida, o GBP / USD entra em uma tendência de alta e o destino em R2 é atingido.
Observe que depois de atingir o alvo, o GBP / USD fecha uma vela acima de R2. Isso implica que a tendência de alta pode continuar, o que coloca na mesa uma terceira oportunidade de negociação. Se você for longo aqui, você deve colocar uma parada logo abaixo R1. Uma vez que o comércio é longo e está aberto em uma fuga por meio de R2, a ordem do limite de destino deve ser colocada em algum lugar acima de R3 (não temos nível R4). Você também pode usar suas próprias regras de ação de preço para determinar por quanto tempo deve permanecer no negócio.
Pivot Points de Negociação com MACD.
Nesta estratégia de negociação de pivô, incluirei o indicador de Divergência de Convergência Média Móvel (MACD). O objetivo dessa estratégia é combinar uma quebra de ponto de pivô ou um salto com um crossover ou divergência de MACD. Quando você combina sinais de ambos os indicadores, você deve entrar no mercado na direção respectiva. Um stop loss deve ser usado nesta estratégia de negociação da mesma forma que na estratégia anterior. Sua parada deve estar localizada no nível de pivô anterior. Você deve permanecer no comércio até que o MACD forneça um cruzamento oposto. A imagem abaixo irá tornar a imagem mais clara para você.
Este é o gráfico H1 do USD / CAD para 19 a 26 de fevereiro de 2016. A imagem mostra uma oportunidade longa e duas posições curtas. Os sinais são baseados em breakouts de ponto de pivô e cruzamentos MACD.
Começamos com a primeira oportunidade de negociação que é curta. As linhas MACD cruzam-se para baixo e obtemos o primeiro sinal para uma eventual tendência de baixa. Poucas horas depois, vemos o preço passando pelo ponto de pivot principal, que é o segundo sinal de baixa neste caso. Pode-se agora reduzir o USD / CAD com base nessa estratégia de negociação. Um stop loss deve ser colocado logo acima do ponto de pivô R1, como mostrado na imagem.
O preço inicia um movimento descendente. No entanto, vemos uma correção no ponto de pivô principal (primeira seta preta). O preço então salta do nível PP e a diminuição continua. A segunda hesitação na tendência de baixa leva a uma linha de alta das linhas MACD e o negócio deve ser fechado. Alguém poderia ter feito 53 pips desta negociação.
Observe que poucas horas após o cruzamento MACD de alta, o preço muda acima do ponto de pivô principal. Existem dois sinais correspondentes provenientes do PP e do MACD. Isso parece uma boa oportunidade que pode ser negociada. Neste caso, o stop loss deve estar localizado logo abaixo do ponto de pivô S1. O preço começa a aumentar e o MACD começa a tendência em alta. No meio do próximo dia de negociação, as linhas MACD interagem na direção bearish. Isso deve ser tomado como um sinal de fechamento. O longo comércio teria gerado lucro de 57 pips.
O preço aumenta para R1 e começa a se aproximar desse nível de resistência. De repente, o USD / CAD salta em uma direção de baixa. Ao mesmo tempo, as linhas MACD cruzam em direção bearish também. Essa é outra combinação de dois sinais dos pontos de pivô e do MACD, que é uma oportunidade de posição curta.
O preço muda imediatamente abaixo do nível PP e continua a diminuir rapidamente. Uma correção ocorre depois e as linhas MACD quase se cruzam em direção bullish. No entanto, não há nenhuma leitura otimista vinda do MACD e a negociação deve ser realizada. Os preços continuam a descer. A próxima hesitação na tendência de baixa leva a uma linha de alta no MACD, que deve ser tomada como um sinal de saída. Este comércio teria gerado lucro de 235 pips em cerca de dois dias.
Conclusão.
Pontos de pivô são níveis intraday gráficos importantes, que atuam como áreas de suporte e resistência. Os pontos de pivot são considerados muito objetivos, uma vez que são calculados usando uma fórmula precisa. A configuração do ponto de pivô básico inclui um nível de pivô básico (PP) com três níveis de resistência acima (R1, R2 e R3) e três níveis de suporte abaixo (S1, S2 e S3). Os pontos de pivô são calculados usando a alta diária, baixa e próxima do par de Forex. A fim de definir os prazos diários, muitos comerciantes definiram o open-close do dia de negociação do Forex para: Início: 00:00 GMT Fim: 23:59 GMT Todos os dias de negociação, PP, R1, R2, R3, S1, Os níveis S2 e S3 mudam de localização, porque os valores diários altos, baixos e próximos são diferentes todos os dias. Há muitas calculadoras de ponto de giro, o que facilitaria significativamente a maneira como você extrai seus dados dinâmicos. Há pronto para usar indicadores de pivô, que se adaptam à sua plataforma de negociação. Você deve sempre usar uma ordem de stop loss quando trocar pontos de pivô. Um bom lugar para colocar sua parada é o nível de pivô anterior daquele que você usa para entrar no mercado. Você deve obter lucro depois que o preço passar por duas áreas dinâmicas ou com base em outras pistas de ação de preço ou um sinal indicador de confirmação. Dois métodos para trocar pontos de pivô são: Pivot Points de Negociação usando Pontos de Pivô de Negociação de Ação de Preço com MACD.
Leve sua negociação para o próximo nível, acelere sua curva de aprendizado com o meu programa gratuito de treinamento em Forex.

Estratégia de versão da web api


Formas de versão da sua API, parte 2.
Esta é a segunda parte de uma série sobre o versionamento de API. A Parte Um cobriu os métodos predominantes para versionar sua API e permitir que os clientes codificassem contra uma versão específica. Eu sugiro que você leia esse post (pelo menos dê uma olhada na introdução!) Antes deste, pois ele fornece algum contexto necessário. Nele, insinuei que outro método que utiliza alguns conceitos pouco conhecidos da especificação do cabeçalho Accepts pode permitir que você crie uma API sem versão. Eu vou admitir na frente, no entanto, é um pouco errado, mas eu acho que ainda é importante. Você ainda pode atualizar as coisas na API, mas não está fazendo o versionamento da interface em si. Você está meramente controlando as representações de recursos.
A alteração mais comum em qualquer API arquitetada REST é adicionar, alterar ou remover campos dos recursos. Novas informações são adicionadas ou podem estar em um formato diferente. Informações podem se tornar indisponíveis. Você também pode adicionar, mover ou remover recursos. Dependendo da arquitetura da API, os verbos HTTP podem significar coisas ligeiramente diferentes. Tudo isso normalmente exigiria um incremento de versão da API se eles causassem a quebra de aplicativos existentes. Com um pouco de previsão, no entanto, sua API pode mudar sem exigir uma estratégia de versão de API inteira.
Arquiteto de uma interface sem versão:
Use esquemas de URI sane: / api / collection_name / resource_id Siga as definições dos métodos HTTP A inclusão de recursos deve ser sempre compatível com versões anteriores A remoção de recursos teria que ser feita entre versões de qualquer maneira Os recursos móveis podem ser manipulados por códigos HTTP de redirecionamento.
Representações de recurso de versão:
Usar o cabeçalho Aceitar A adição de informações deve sempre ser compatível com versões anteriores A remoção de informações teria que ser feita em versões de qualquer maneira. A movimentação de informações pode ser feita com a opção Aceitar o controle de versão.
Arquitetando uma API sem versão.
Deixe-me começar dizendo que reconheço que uma API sem versão é um pouco ideal, e uma API com uma estratégia de versão bem pensada é preferível a uma API com uma tentativa mal pensada de não usar a versão. Não há vergonha em dizer que você acha que precisa de versionamento, nem todas as APIs possíveis podem se encaixar nessa estratégia sem versão. Ele realmente funciona apenas para APIs baseadas em REST-architected, manipulação de recursos que seguem os padrões vigentes. Dito isso, uma grande quantidade de APIs pode ser retrabalhada para se encaixar neste estilo. Além disso, isso é destinado a APIs de back-end, e não a APIs que fazem interface com seu front-end da web. Na minha opinião, essas devem ser quase sempre APIs separadas, para que você possa atualizar a funcionalidade de front-end da web no seu próprio ritmo, sem se preocupar com os usuários da API. Eu sei que, pessoalmente, sou muito mais negligente na minha sequência de padrões para APIs de front-end.
O primeiro passo para entender como criar uma API sem versão é saber que você não quer fazer a versão da própria versão. Isso significa que você não deseja alterar como e onde as informações são armazenadas e acessadas. Em termos práticos, esta é a estrutura da URI. Até mesmo essa regra pode ser distorcida, é claro - embutida na especificação HTTP são redirecionamentos! Se você moveu informações, basta fornecer um redirecionamento permanente para o novo URI. Agora, o que acontece se você remover um recurso?
Há dois motivos pelos quais um determinado URI pode ser removido de uma API típica: o próprio tipo de recurso foi removido ou, mais comumente, essa representação particular do recurso não é mais suportada. Neste último caso, você não está realmente aderindo à arquitetura REST: A representação de recursos deve ser dissociada da URI. No primeiro caso, se o tipo de recurso inteiro não estiver mais acessível, provavelmente é por um motivo comercial, e nesse caso você também o removerá de todas as versões anteriores da API. Nesse caso, o controle de versão não lhe dava nada, não é mesmo?
Adicionar recursos ou informações a recursos deve sempre ser uma alteração compatível com versões anteriores. Se você estiver usando o JSON, adicionar elementos aos recursos existentes deve ser fácil. Mesmo se você tiver um esquema XML, basta adicioná-los ao esquema definido e alertar os clientes que podem ter baixado sua própria cópia do esquema para atualizá-lo. Se você quiser adicionar um recurso totalmente novo, basta adicioná-lo. Ninguém deve ser afetado.
Provavelmente, a coisa mais difícil de fazer sem versão é qualquer alteração no que acontece quando você executa um método específico em uma API específica. Por exemplo, se você costumava POSTAR para / api / foo / e criar um novo recurso foo para você, mas agora deseja que ele edite um recurso foo existente. O melhor que posso lhe dizer é que não siga as definições do método de especificação HTTP recomendadas explicitamente:
GET / api / foo / ou GET / api / foo / 1 recupera recursos ou coleções de recursos e é idempotente (repetitivo com os mesmos resultados) POST / api / foo / cria novos recursos e NÃO é idempotente (a repetição cria mais recursos) PUT / api / foo / 1 atualiza ou cria um recurso específico inteiro e é idempotente PATCH / api / foo / 1 (padrão proposto) atualiza campos de um recurso específico e é idempotente DELETE / api / foo / 1 exclui um recurso (às vezes, coleções de recursos) e é idempotente.
Tecnicamente, acho que DELETE deveria notificar de alguma forma se o recurso não existia em primeiro lugar e uma maneira correta de fazer isso seria um erro, mas eu vou adiar isso. OPÇÕES e CABEÇA são usadas menos e se você as estiver usando, você provavelmente saberá o que você está fazendo de qualquer maneira. Se você estiver usando o PATCH, saiba que ele não é um padrão bem suportado e muitas APIs aceitam solicitações PUT incompletas e atualizam apenas os campos alterados. Acho que isso é bom, desde que seja um comportamento bem documentado e bem documentado, dado um suporte PATCH irregular, pelo menos até que seja mais amplamente aceitável.
Muitas vezes, os recursos são modificados pelas solicitações POST. Um formulário é enviado, você interpreta os dados e altera um recurso. Esse é um padrão comum em APIs de front-end e, como mencionei acima, tudo bem. Não é perfeito, mas está bem. Em uma API de back-end, isso não deveria acontecer! Use uma solicitação PUT ou PATCH e defina explicitamente o que você deseja que o novo recurso seja. Uma desculpa comum é que as versões antigas do IE não suportam PUT ou PATCH, mas esta é uma API de back-end, está bem! Todas as grandes bibliotecas que conheço, pelo menos, suportam o PUT - se você estiver usando um que não o faça, provavelmente deve procurar em outro lugar.
Em suma, um pré-requisito para o versionlessness é que todos os recursos que você tem devem poder ser acessados ​​e manipulados em uma fasion consistente, com as únicas diretivas sendo o URI para o recurso, o método HTTP e os dados que representam o próprio recurso. Se você estiver manipulando um único recurso lógico - digamos, um perfil de usuário - de vários URIs, provavelmente encontrará situações em que precisa de uma versão.
Representações de recursos de controle de versão.
Como mencionei na introdução, as próprias representações de recursos transferidas para o cliente podem e provavelmente devem ser versionadas. A beleza dessa abordagem é que cada recurso pode ser versionado de forma independente. Se você alterar um recurso e, em seguida, um mês depois, decidir alterar um recurso diferente, não será necessário incrementar um contador de versões da API duas vezes. Cada versão de recurso é incrementada individualmente. Observe que não estou falando sobre a versão dos recursos em si, apenas a representação do recurso. Se você tiver um recurso com versão, por exemplo, um documento que tenha revisões anteriores disponíveis, elas devem ser acessadas separadamente do que o método que estou descrevendo aqui.
Familiarizar-se com a especificação do cabeçalho Accept provavelmente ajudará você a entender a verdadeira profundidade de quão longe as especificações podem ir para a proteção do futuro. Quase todo mundo sabe que o cabeçalho Accepts especifica que tipo de MIME-Type o solicitante espera, como application / json. Poucos sabem que ele pode não apenas especificar um tipo, mas também especificar vários tipos aceitáveis, bem como parâmetros em cada tipo. Para representar representações de recursos de versão, vamos aproveitar os parâmetros de tipo.
Eu pulo e considero o seguinte:
Mesmo sem entender completamente o cabeçalho Aceita, você provavelmente pode adivinhar que essa cadeia implica que ele espera o tipo application / vnd. example. foo no formato json, versão 2, se disponível, e qualquer versão, caso contrário. Analisar o cabeçalho Aceita de maneira consistente com a especificação pode ser difícil somente porque muitas bibliotecas não o analisam imediatamente.
Então, quando você deve representar representações de recursos? Como mencionei acima, se você estiver removendo informações sobre um recurso, provavelmente é por motivo comercial que você não quer mais que ele seja exposto. Na idade atual de transmissão compactada, há pouco ganho para remover informações simplesmente porque você não acha que é mais útil. A adição de informações deve sempre ser possível de ser feita de maneira compatível com versões anteriores. Você pode querer a versão em casos de alterar o nome e / ou o tipo de um campo, por exemplo, se você quiser (o exemplo do mundo real!) Redirecionar um campo booleano rotulado & # 8220; ativado & # 8221; para um mais genérico & # 8220; status & # 8221; tipo enum.
Agora, como faço isso?
Infelizmente, muito do que eu tenho discutido aqui tem pouco ou nenhum apoio amplo na comunidade de pessoas que estão construindo APIs amplamente usadas. Eu suspeito que nenhuma pequena parte disso seja devido à dificuldade de implementá-las em um aplicativo do mundo real. Dependendo da sua plataforma, pode ser fácil ou difícil, e algumas bibliotecas suportarão uma estratégia de controle de versões como essa. O mais próximo que eu sei é se o node-restify, que suporta roteamento versionado baseado em um cabeçalho de versão aceita.
Eu vou estar passando por algumas bibliotecas e tentar estendê-las para dar suporte a versões no futuro. Possivelmente tentando minha própria biblioteca que faz muito disso de graça. Quanto mais fácil para um desenvolvedor escrever código compatível com os padrões, mais provável será adotá-lo, porque no final se trata de facilidade de desenvolvimento versus adesão aos padrões, acho que todos nós sabemos que a facilidade vencerá toda vez .

Seu versionamento de API está errado, e é por isso que decidi fazer isso de três formas diferentes e erradas.
No final, decidi que a maneira mais justa e equilibrada era irritar todo mundo igualmente. É claro que estou falando sobre versionamento de APIs e não desde as ótimas guias # x201C versus espaços & # x201D; debate tenho visto tantas crenças fortes em campos totalmente diferentes.
Isso foi ótimo. Quando eu construí Eu fui pwned? (HIBP) no final de novembro, foi concebido para ser um serviço simples e rápido que algumas pessoas usariam. Eu acho que é justo dizer que os dois primeiros pontos foram alcançados, mas não o último. Não era um "número um", na verdade, no final da primeira semana, era mais do que o Google Analytics poderia suportar. O ponto é que você não pode sempre prever o futuro quando você escreve sua API e em algum momento você pode precisar mudar algo que as pessoas já dependem.
Mas aqui está o problema & # x2013; toda vez que você começa a falar sobre qualquer coisa relacionada a APIs via HTTP, isso acontece:
Todo caminho que você vira, há diferentes filosoficos sobre o caminho certo & # x201D; e muito para trás e para frente no REST, o que é RESTful, o que não é e se é importante. Vamos falar sobre as alterações da API, o impacto sobre as versões, por que há tantas idéias divergentes sobre como isso deve ser feito e, por fim, por que nenhuma das brincadeiras é tão importante quanto realmente fazer as coisas.
Puxando mais dados de violação.
Tendo em mente que a mesma API é usada para o recurso de pesquisa no site e agora também por terceiros criando tudo, de aplicativos de smartphone a ferramentas de teste de penetração, a resposta acima funcionou bem no começo, mas foi limitada. Por exemplo, esta resposta não funciona tão bem:
Por quê? Porque & # x201C; BattlefieldHeroes & # x201D; é o Pascal-cased que é ótimo para combinar com classes CSS codificadas (embora provavelmente não seja uma boa abordagem a longo prazo) e por ter um & # x201C; stable & # x201D; nome para se referir a (eu não vou alterá-lo, mesmo que haja uma segunda violação), mas não é adequado para exibição como um título. Tudo isso sai do Armazenamento de Tabelas do Azure e eu entro no SQL Azure para extrair dados relacionais que realmente descrevem a violação. Um dos atributos nesse armazenamento relacional é o nome que você vê acima.
O que eu realmente queria fazer era algo mais assim:
Pegue? Para o ponto anterior sobre o nome da violação, que ainda está lá no atributo name, mas agora temos um título também. Isto é o que você mostra para as pessoas & # x2013; & # x201C; Battlefield Heroes & # x201D; & # x2013; mas mais importante, se o Gawker for penhorado novamente, posso nomear a violação de algo como Gawker2014 e o título pode ser algo amigável ao longo das linhas de Gawker (Ataque Eletrônico do Exército Sírio) & # x201D ;. Ele segmenta o que é estável e previsível daquilo que não é e significa que as pessoas podem criar dependências, como imagens ou outros recursos, no atributo name.
Os outros dados devem ser bem claros: a data da violação, quando foi adicionada ao sistema, o número de contas pwned, a descrição da violação (novamente, isso pode mudar se o palavreado precisar ser ajustado) e & # x201C; DataClasses & # x201D ;. Uma das coisas que muitas pessoas estavam pedindo era uma descrição do que estava comprometido na brecha, então agora há um monte de atributos que podem ser adicionados através de uma coleção sobre a violação em si. Eu já estou mostrando isso abaixo de cada violação na página de sites da Pwned (essa é outra razão pela qual eu posso agora ajustar algumas das descrições).
Esta é uma mudança urgente. Enquanto o sentimento da API é o mesmo & # x2013; forneça um nome de conta, receba de volta uma lista de violações & # x2013; não há mais uma matriz de strings de nomes de violações. Se eu simplesmente substituísse a API antiga por essa, as coisas iriam quebrar. APIs. Devo. Evoluir.
O software evolui, as APIs devem ser versionadas.
Vamos ser sinceros sobre isso: o mundo segue em frente. A API para o HIBP durou cerca de 2 meses, não porque foi mal projetada, mas porque o serviço se tornou insano e inesperadamente bem-sucedido. Eu gosto desse tipo de problema, e você também deveria.
Agora eu tive uma escolha; ou eu poderia me contentar com o que eu tinha e privar as pessoas de uma maneira melhor, eu poderia adicionar ao serviço existente de uma forma não violenta ou eu poderia criar uma nova versão (embora expondo a mesma entidade de uma maneira diferente) e construir É a melhor maneira de saber como; sem bytes desnecessários, modelados corretamente (até que eu decida que uma nova versão é mais correta) e uma boa representação da entidade que eu estou finalmente tentando entrar em consumidores & # x2019; apps.
Não há nada de errado em introduzir uma nova versão de uma API quando é a coisa mais sensata a ser feita. Por todos os meios, faça o seu melhor para obtê-lo & # x201C; direita & # x201D; desde o primeiro dia, mas fazê-lo com a expectativa de que "certo" & # x201D; é um estado temporário. É por isso que precisamos estar aptos para a versão.
Os vários campos de versionamento.
Certo, então quão difícil pode ser esse negócio de versionamento? Quero dizer, deve ser um exercício simples, certo? O problema é que isso é muito filosófico, mas em vez de ficar atolado nisso por enquanto, deixe-me delinear as três escolas comuns de pensamento em termos de como elas são praticamente implementadas:
URL: basta digitar a versão da API no URL, por exemplo: haveibeenpwned / api / v2 / breachedaccount / foo Cabeçalho de solicitação personalizada: você usa o mesmo URL de antes, mas adiciona um cabeçalho como & # x201C; api-version: 2 & # x201D; Aceitar cabeçalho: você modifica o cabeçalho de aceitação para especificar a versão, por exemplo, & # x201C; Accept: application / vnd. haveibeenpwned. v2 + json & # x201D;
Tem havido muitas, muitas coisas escritas sobre isso e eu vou linkar para eles no final do post, mas aqui está a versão abreviada:
Os URLs são uma droga porque devem representar a entidade: na verdade, eu concordo com isso na medida em que a entidade que estou recuperando é uma conta violada, não uma versão da conta violada. Semanticamente, não é realmente correto, mas é fácil de usar! Cabeçalhos de pedidos personalizados são uma droga porque não é realmente uma forma semântica de descrever o recurso: A especificação HTTP nos dá um meio de solicitar a natureza que gostaríamos do recurso representado por meio do cabeçalho de aceitação, por que reproduzir? esta? Aceitar cabeçalhos chupados porque são mais difíceis de testar: não posso mais apenas fornecer a alguém um URL e dizer: "##201C; aqui, clique em" & # x201D ;, em vez disso, eles devem construir cuidadosamente a solicitação e configurar o cabeçalho de aceitação adequadamente .
Os vários argumentos a favor e contra cada abordagem tendem a ir de & # x201C; este é o & # x2018; certo & # x2019; maneira de fazer isso, mas é menos prático & # x201D; através de & # x201C; Esta é a maneira mais fácil de criar algo consumível que, portanto, faz com que seja "# & # x2018; right & # x2019; & # x201D ;. Há muita discussão sobre hipermídia, negociação de conteúdo, o que é & nbsp; REST & # x201D; e todo tipo de outras questões. Infelizmente, isso muitas vezes é filosófico e perde a visão de qual deve ser o objetivo real: criar software que funcione e particularmente para uma API, tornando-a facilmente consumível.
É sobre ter um contrato estável, estúpido!
Mais importante do que todas as reclamações e delírios sobre como fazer isso dessa maneira ou daquela maneira é dar estabilidade às pessoas. Se eles investem seu esforço suado escrevendo código para consumir sua API, então é melhor que você não a interrompa mais adiante.
Honestamente, os debates sobre o que é o & # X201C; RESTful & # x201D; contra o que não é como se o próprio termo ditasse seu sucesso é apenas louco. Transforme essa discussão em "Aqui estão as razões práticas pelas quais isso faz sentido, e é isso que pode acontecer se você não o fizer", e eu farei de tudo. O problema é que até mesmo as vozes da razão dentro das discussões barulhentas deixam dúvidas quanto ao que realmente é a melhor abordagem e, portanto, eu alcancei um compromisso & # x2026;
Aqui estão 3 maneiras erradas de consumir a API de HIBP que você pode escolher agora.
Ok, agora que estamos claramente estabelecidos, mas você está errado, eu gostaria de dar a você a opção de escolher qualquer uma das três formas erradas. Espere & # x2013; o que?! É assim: no entanto, eu implemento a API, ela será muito difícil de consumir, muito acadêmica, muito provavelmente falha no proxy ou algo do tipo. Em vez de escolher um caminho errado, decidi dar-lhe todas as 3 formas erradas e pode escolher aquele que é o menos errado para você.
Caminho errado 2 - cabeçalho de solicitação personalizada:
Inevitavelmente, alguém vai me dizer que fornecer 3 maneiras erradas é a coisa errada a fazer. Não significaria mais código kludge para manter? Não, isso significa simplesmente que a implementação da API da Web subjacente é decorada com dois atributos:
O primeiro é simplesmente uma restrição de roteamento que implementa o RouteFactoryAttribute. Eu passo na rota e passo a versão que pode mapear para aquela rota, então a implementação procura a presença de um & # x201C; api-version & # x201D; cabeçalho ou um cabeçalho de aceitação correspondente a esse padrão:
Se a versão especificada em uma dessas combina com a especificada na restrição de roteamento, então, é o método que será invocado. Esta é uma adaptação simples desta amostra no CodePlex.
O segundo atributo que decora o método GetV2 acima é cortesia da Web API 2 e do recurso de roteamento de atributos. É claro que sempre poderíamos fazer roteamento na API da Web, mas isso geralmente era definido globalmente. O roteamento de atributos como esse traz a definição de rota para o contexto em que ela é aplicada e facilita a visualização da ação do controlador que será chamada por qual rota. Isso também significa que as implementações de todas as três formas erradas de chamar a API estão reunidas em um único local.
Então, em suma, não, isso não cria um monte de kludge e é muito fácil de manter. Cada uma das 3 abordagens retornará exatamente o mesmo resultado e, o mais importante, elas permanecerão estáveis ​​e não serão alteradas de nenhuma maneira e, no final das contas, será a mais importante, independentemente de qual opção você escolher. Toda a implementação agora também está claramente documentada na página da API do site.
Mas e se você não especificar uma versão?
Você sabe o pouco onde eu disse que você não pode quebrar o que já está lá fora? Sim, isso significa que se você fizer o que faz agora, # x2013; não especifique uma versão & # x2013; então você começa o que você recebe agora. Em outras palavras, nenhum pedido para uma versão específica significa que você obtém a versão 1.
Estou bem com isso, independentemente de ter atingido este ponto por padrão. Eu sei que algumas pessoas sempre gostam de retornar a versão mais recente se um número não for especificado, mas IMHO que quebra todo o contrato estável & # x201; & # x201D; objetivo; o que você obtém da API hoje pode ser completamente diferente do que você recebe amanhã se eu revisá-lo. Isso seria uma droga e quebraria as coisas.
Você tem 3 opções, mas minha preferência pessoal é & # x2026;
Eu tenho o luxo de controlar tanto a API quanto o consumidor primário do site da HIBP. Dado que eu forneci 3 opções para consumir a API, qual delas eu mesmo uso?
Eu fui com o favorito filosófico que é especificá-lo através do cabeçalho de aceitação. Eu não acho que isso é certo e os outros estão errados, ao invés disso eu acho que isso faz mais sentido por duas razões principais:
Concordo que o URL não deve mudar: se concordarmos que o URL representa o recurso, a menos que estejamos tentando representar versões diferentes do próprio recurso, não, não acredito que o URL deva mudar. As brechas para foo são sempre as brechas para foo e eu não acho que só porque eu mudo os dados retornados para foo que a localização de foo deve mudar. Concordo que os cabeçalhos de aceitação descrevem como você deseja os dados: Esta é uma semântica da especificação de HTTP e assim como a semântica dos verbos de solicitação faz muito sentido (isto é, estamos obtendo ou colocando ou excluindo ou postando), O mesmo acontece com a maneira como o cliente gostaria que o conteúdo fosse representado.
De maneira nenhuma isso significa que eu acho que os outros dois estão errados e, francamente, não há melhor maneira de compartilhar a API com alguém do que dizer: "Aqui, clique aqui", mas quando eu puder facilmente construir o pedido e gerenciar os cabeçalhos, eu fui com esta rota.
Na verdade, pensando nisso, eu também uso a versão na rota do domínio. Por quê? Apenas através do processo de escrever esta API eu estava constantemente me comunicando com as pessoas sobre as formas de consultá-las (mais sobre isso mais tarde) e os atributos que ela retorna. Ser capaz de passar por um e-mail e dizer "Ei, aqui está o que eu estou pensando" ##201D; e eles simplesmente clicam e obtêm resultados é inestimável. Este é o ponto que os proponentes da abordagem de versionamento de URLs fazem com toda a razão: você simplesmente não pode fazer isso quando você está dependente de cabeçalhos.
Ah, e no caso de você estar me checando, no momento em que escrevo, eu ainda não rolei o site para a v2 da API. Agora que os dados de violação são extraídos na API quando ocorre uma pesquisa, isso significa que eu tenho o luxo de não carregar todas as violações na origem na carga inicial (isso nunca será sustentável à medida que o conjunto de dados se expande). Isso salvará um monte de tráfego de saída e acelerará as coisas para as pessoas em termos de obter o site carregado, mas isso também significa um pouco mais de trabalho do meu jeito. Fique ligado.
No fechamento.
Claramente, eu tenho sido um pouco irônico aqui com relação a tudo estar errado, mas honestamente, quanto mais você lê sobre isso e quanto mais perguntas você faz, mais errado todo caminho parece de uma maneira ou de outra. Na verdade, eu sei muito bem que existem aspectos da minha implementação que serão referidos como "errados" e "x201D". (Eu posso pensar em pelo menos um par) e, naturalmente, eu estou me preparando para o potencial ataque de feedback para esse efeito. A coisa é, porém, cada uma dessas opções funciona e, francamente, para todos os efeitos práticos, eles funcionam tão bem quanto os outros.
Se eu puder deixar outras pessoas pensando em como atualizar suas APIs com um pensamento final: ninguém usará sua API até que você a tenha criado. Pare de procrastinar. Nenhuma dessas opções é "ruim", "# x201C; ruim & # x201D; em qualquer sentido tangível, eles são apenas diferentes. Eles são todos facilmente consumíveis, todos eles retornam o mesmo resultado e nenhum deles é susceptível de ter qualquer impacto real sobre o sucesso do seu projeto.
Referências.
Stack Overflow: Práticas recomendadas para o versionamento de API? (ótima pergunta, ótimas respostas, fechada como "não construtiva", eu assumo porque "Bill the Lizard & # x201D; saiu do lado errado da cama naquela manhã) Blog do Lexical Scope: How are REST APIs com versão? (boa comparação de práticas de controle de versão entre serviços, ainda que alguns anos atrás) CodePlex: Exemplo de restrição de roteamento (vinculado na página da API da Web da Microsoft como um exemplo de APIs de controle de versão adicionando um cabeçalho personalizado) CodeBetter: Versionamento RESTful Serviços (muito pragmáticos e uma boa descrição das várias maneiras pelas quais uma API pode mudar) Blog de Vinay Sahni: Práticas recomendadas para projetar uma API RESTful pragmática (ele está argumentando sobre o versionamento de URL por causa de & # x201C ; explorabilidade do navegador & # x201D;) Lans Pivotal: versionamento da API (boa visão das opiniões conflitantes existentes) Web Stack of Love: Versões da API da Web ASP com Tipos de Mídia (bom passo-a-passo para criar um aplicativo para dar suporte a versões por negociação de conteúdo)
Oi, sou Troy Hunt, escrevo este blog, crio cursos para a Pluralsight e sou diretor regional da Microsoft e MVP que viaja pelo mundo falando em eventos e treinando profissionais de tecnologia.
Oi, sou Troy Hunt, escrevo este blog, crio cursos para a Pluralsight e sou diretor regional da Microsoft e MVP que viaja pelo mundo falando em eventos e treinando profissionais de tecnologia.
Próximos eventos.
Eu normalmente faço workshops particulares em torno destes, eis os próximos eventos públicos em que estarei:
Não tem a Pluralsight? Que tal um teste gratuito de 10 dias? Isso vai te dar acesso a milhares de cursos, dentre os quais dezenas de meus incluem:
“O Cloud Never Goes Down”, os SLAs do Azure e outras trivialidades de disponibilidade.
Veja como Bell foi hackeado - injeção de SQL, golpe a golpe.
Inscreva-se agora!
Copyright 2018, caça de Troy.
Esta obra está licenciada sob uma licença Creative Commons Atribuição 4.0 Internacional. Em outras palavras, compartilhe generosamente, mas forneça atribuição.
Aviso Legal.
As opiniões expressas aqui são minhas e podem não refletir as das pessoas com quem trabalho, meus amigos, minha esposa, as crianças etc. A menos que eu esteja citando alguém, elas são apenas minhas opiniões.
Publicado com o Ghost.
Este site funciona inteiramente no Ghost e é possível graças ao seu apoio gentil. Leia mais sobre porque eu escolhi usar o Ghost.

Versioning & para;
Uma boa API é versionada: alterações e novos recursos são implementados em novas versões da API, em vez de alterar continuamente apenas uma versão. Ao contrário dos aplicativos da Web, com os quais você tem controle total do código do lado do cliente e do lado do servidor, as APIs devem ser usadas por clientes além do seu controle. Por esse motivo, a compatibilidade com versões anteriores (BC) das APIs deve ser mantida sempre que possível. Se uma alteração que pode quebrar o BC for necessária, você deverá introduzi-la na nova versão da API e aumentar o número da versão. Os clientes existentes podem continuar usando a versão antiga e funcional da API. e os clientes novos ou atualizados podem obter a nova funcionalidade na nova versão da API.
Dica: consulte Versão semântica para obter mais informações sobre como criar números de versão da API.
Uma maneira comum de implementar o controle de versão da API é incorporar o número da versão nas URLs da API. Por exemplo, example / v1 / users representa o terminal / users da versão 1 da API.
Outro método de versionamento de API, que ganhou força recentemente, é colocar o número da versão nos cabeçalhos de solicitação HTTP. Isso geralmente é feito através do cabeçalho Accept:
Ambos os métodos têm seus prós e contras, e há muitos debates sobre cada abordagem. Abaixo, você verá uma estratégia prática para o versionamento de APIs, que é uma combinação desses dois métodos:
Coloque cada versão principal da implementação da API em um módulo separado cujo ID é o número da versão principal (por exemplo, v1, v2). Naturalmente, os URLs da API contêm números de versão principais. Dentro de cada versão principal (e, portanto, dentro do módulo correspondente), use o cabeçalho de solicitação Accept HTTP para determinar o número da versão secundária e escrever o código condicional para responder às versões secundárias de acordo.
Para cada módulo que atende uma versão principal, o módulo deve incluir as classes de recurso e controlador que atendem a essa versão específica. Para separar melhor a responsabilidade do código, você pode manter um conjunto comum de classes de recurso e controlador de base e subclassá-las em cada módulo de versão individual. Dentro das subclasses, implemente o código concreto, como Model :: fields ().
Seu código pode ser organizado da seguinte forma:
Sua configuração de aplicativo seria semelhante a:
Como resultado do código acima, o exemplo / v1 / users retornará a lista de usuários na versão 1, enquanto o exemplo / v2 / users retornará os usuários da versão 2.
Graças aos módulos, o código para diferentes versões principais pode ser bem isolado. Mas os módulos tornam ainda possível reutilizar o código nos módulos através de classes base comuns e outros recursos compartilhados.
Para lidar com números de versão secundários, você pode aproveitar o recurso de negociação de conteúdo fornecido pelo comportamento contentNegotiator. O comportamento contentNegotiator definirá a propriedade yii \ web \ Response :: $ acceptParams quando determinar qual tipo de conteúdo será suportado.
Por exemplo, se uma solicitação for enviada com o cabeçalho HTTP Accept: application / json; version = v1, após a negociação do conteúdo, yii \ web \ Response :: $ acceptParams conterá o valor ['version' = & gt; 'v1'].
Com base nas informações de versão em acceptParams, você pode escrever código condicional em locais como ações, classes de recursos, serializadores, etc. para fornecer a funcionalidade apropriada.
Como as versões secundárias, por definição, exigem a manutenção da compatibilidade com versões anteriores, esperamos que não haja muitas verificações de versão no seu código. Caso contrário, é provável que você precise criar uma nova versão principal.
Página gerada em Sex, 23 fev 2018 21:01:58 +0100.

Culbertson Exchange.
Discussões sobre tópicos de interesse e desenvolvimento de aplicativos & # 8230;
API da Web do Versioning ASP.
Uma das coisas importantes a considerar ao criar uma API é uma estratégia para controlar a versão da API para gerenciar mudanças. Existem várias razões pelas quais isso é importante:
Para suportar usuários (desenvolvedores) da API que estão usando uma versão existente para não forçar a quebra de alterações neles. Para impedir a quebra de versões existentes dos aplicativos clientes que estão usando uma versão existente da API.
Previous versions of the API will normally be maintained for either a period to allow developers and client applications to upgrade or indefinitely.
Strategies for Versioning.
There are multiple ways to indicate the version of the API:
Specify the version as part of the URI address or URL query parameters, e. g. Specify the version as part of the Accept request header, for example: Specify the version as a special request header, for example:
There are pros and cons of each approach, and have been extensively discussed on the Internet with religious fervor. I recently attended a nice talk by Michael Pratt on how to version or not version your API (be sure to use down arrows for pros and cons for each strategy). The best approach is to pick a strategy that best fits your use cases and to stick with it for consistency.
Adding Versioning to ASP Web API.
There are no versioning capabilities provided by the ASP Web API out of the box. However there is a nice Nuget package called SDammann. WebApi. Versioning by Sebastiaan Dammann that extends the Web API with a versioning framework. The package is flexible in that it allows the API developer to choose one of the strategies mentioned above for the API versioning. This article will show how to set up the framework on a project.
Setting Up the Project.
The first step is to get the WebApi. Versioning from Nuget by bringing up the Package Manager Console and getting the Nuget package:
In this example we are going to use the the URI address strategy to indicate the versioning.
The next step is to indicate in the Global. Asax. cs\Application_Start method to use the versioning package for the controller selector and to provide the strategy to use for the controller selection:
In this case the new RouteVersionControllerSelector(…) indicates to the package which strategy to use (in this case selecting by routes in the URI). For that to work the default route (and likewise any custom routes) must be modified to include the version in App_Start\WebApiConfig. cs :
The integer variable after the “v” will be utilized by the package to determine which controller to use based on the value. For example “v1” will indicate to use the controllers that are in the namespace Appname. Controllers. Version1 .
Managing Controllers to Avoid Duplication.
One of the downsides of this approach is that it could cause a lot of code duplication if the entire controllers are copied to a new namespace each time a version is added. One approach to reduce besides keeping the controllers “skinny” is to add a base class for each controller and implement overrides for the version where needed. For example the Controllers folder would look something like this:
The base controllers would contain the initial implementation for version 1 with virtual methods:
Then for the Version1 implementation it would not need to override any methods but only provide services such as dependency injection and to expose the methods to the Version1 class:
Then for Version2 we can override the methods that will be affected by a change and ignore the other methods that will be inherited from the base class. For example say we need to add a new Boolean property to the Project model called “IsUrgent”. We don’t want it to affect Version1 users but we do want it to be mandatory for Version2. We can add this property to the model as a nullable Boolean property and not add any Required attributes so as not to disturb Version1 usage:
This change will affect the “Post” and “Put” verbs for the Projects controller and we will need to override those methods. For example to override the “Post” method and to ensure the required flag is present we can do the following:
Conclusão.
The SDammann. WebApi. Versioning package provides an easy and flexible framework for versioning ASP Web API. It covers the most common strategies to version a web API and could be extended to support less common methods as it is open source.
In the next blog post I will discuss strategies for testing the versioning of the Web API.

Web api versioning strategy


Are there any known how-tos or best practices for web service REST API versioning?
I have noticed that AWS does versioning by the URL of the endpoint. Is this the only way or are there other ways to accomplish the same goal? If there are multiple ways, what are the merits of each way?
closed as primarily opinion-based by templatetypedef, amon, George Stocker ♦ Mar 6 '14 at 13:22.
Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise. Se essa questão puder ser reformulada para se ajustar às regras da Central de Ajuda, edite a pergunta.
locked by animuson ♦ Mar 8 '16 at 3:40.
Esta questão existe porque tem significado histórico, mas não é considerada uma boa pergunta sobre o tema para este site, então, por favor, não a use como prova de que você pode fazer perguntas semelhantes aqui. Esta questão e suas respostas estão congeladas e não podem ser alteradas. Mais informações: centro de ajuda.
This is a good and a tricky question. The topic of URI design is at the same time the most prominent part of a REST API and , therefore, a potentially long-term commitment towards the users of that API .
Since evolution of an application and, to a lesser extent, its API is a fact of life and that it's even similar to the evolution of a seemingly complex product like a programming language, the URI design should have less natural constraints and it should be preserved over time . The longer the application's and API's lifespan, the greater the commitment to the users of the application and API.
On the other hand, another fact of life is that it is hard to foresee all the resources and their aspects that would be consumed through the API. Luckily, it is not necessary to design the entire API which will be used until Apocalypse. It is sufficient to correctly define all the resource end-points and the addressing scheme of every resource and resource instance.
Over time you may need to add new resources and new attributes to each particular resource, but the method that API users follow to access a particular resources should not change once a resource addressing scheme becomes public and therefore final.
This method applies to HTTP verb semantics (e. g. PUT should always update/replace) and HTTP status codes that are supported in earlier API versions (they should continue to work so that API clients that have worked without human intervention should be able to continue to work like that).
Furthermore, since embedding of API version into the URI would disrupt the concept of hypermedia as the engine of application state (stated in Roy T. Fieldings PhD dissertation) by having a resource address/URI that would change over time, I would conclude that API versions should not be kept in resource URIs for a long time meaning that resource URIs that API users can depend on should be permalinks .
Sure, it is possible to embed API version in base URI but only for reasonable and restricted uses like debugging a API client that works with the the new API version. Such versioned APIs should be time-limited and available to limited groups of API users (like during closed betas) only. Otherwise, you commit yourself where you shouldn't.
A couple of thoughts regarding maintenance of API versions that have expiration date on them. All programming platforms/languages commonly used to implement web services (Java, , PHP, Perl, Rails, etc.) allow easy binding of web service end-point(s) to a base URI. This way it's easy to gather and keep a collection of files/classes/methods separate across different API versions .
From the API users POV, it's also easier to work with and bind to a particular API version when it's this obvious but only for limited time, i. e. during development.
From the API maintainer's POV, it's easier to maintain different API versions in parallel by using source control systems that predominantly work on files as the smallest unit of (source code) versioning.
However, with API versions clearly visible in URI there's a caveat: one might also object this approach since API history becomes visible/aparent in the URI design and therefore is prone to changes over time which goes against the guidelines of REST. Concordo!
The way to go around this reasonable objection, is to implement the latest API version under versionless API base URI. In this case, API client developers can choose to either:
develop against the latest one (committing themselves to maintain the application protecting it from eventual API changes that might break their badly designed API client ).
bind to a specific version of the API (which becomes apparent) but only for a limited time.
For example, if API v3.0 is the latest API version, the following two should be aliases (i. e. behave identically to all API requests):
In addition, API clients that still try to point to the old API should be informed to use the latest previous API version, if the API version they're using is obsolete or not supported anymore . So accessing any of the obsolete URIs like these:
should return any of the 30x HTTP status codes that indicate redirection that are used in conjunction with Location HTTP header that redirects to the appropriate version of resource URI which remain to be this one:
There are at least two redirection HTTP status codes that are appropriate for API versioning scenarios:
301 Moved permanently indicating that the resource with a requested URI is moved permanently to another URI (which should be a resource instance permalink that does not contain API version info). This status code can be used to indicate an obsolete/unsupported API version, informing API client that a versioned resource URI been replaced by a resource permalink .
302 Found indicating that the requested resource temporarily is located at another location, while requested URI may still supported. This status code may be useful when the version-less URIs are temporarily unavailable and that a request should be repeated using the redirection address (e. g. pointing to the URI with APi version embedded) and we want to tell clients to keep using it (i. e. the permalinks).
The URL should NOT contain the versions. The version has nothing to do with "idea" of the resource you are requesting. You should try to think of the URL as being a path to the concept you would like - not how you want the item returned. The version dictates the representation of the object, not the concept of the object. As other posters have said, you should be specifying the format (including version) in the request header.
If you look at the full HTTP request for the URLs which have versions, it looks like this:
The header contains the line which contains the representation you are asking for ("Accept: application/xml"). That is where the version should go. Everyone seems to gloss over the fact that you may want the same thing in different formats and that the client should be able ask for what it wants. In the above example, the client is asking for ANY XML representation of the resource - not really the true representation of what it wants. The server could, in theory, return something completely unrelated to the request as long as it was XML and it would have to be parsed to realize it is wrong.
A better way is:
Further, lets say the clients think the XML is too verbose and now they want JSON instead. In the other examples you would have to have a new URL for the same customer, so you would end up with:
(or something similar). When in fact, every HTTP requests contains the format you are looking for:
Using this method, you have much more freedom in design and are actually adhering to the original idea of REST. You can change versions without disrupting clients, or incrementally change clients as the APIs are changed. If you choose to stop supporting a representation, you can respond to the requests with HTTP status code or custom codes. The client can also verify the response is in the correct format, and validate the XML.
One last example to show how putting the version in the URL is bad. Lets say you want some piece of information inside the object, and you have versioned your various objects (customers are v3.0, orders are v2.0, and shipto object is v4.2). Here is the nasty URL you must supply in the client:
We found it practical and useful to put the version in the URL. It makes it easy to tell what you're using at a glance. We do alias /foo to /foo/(latest versions) for ease of use, shorter / cleaner URLs, etc, as the accepted answer suggests.
Keeping backwards compatibility forever is often cost-prohibitive and/or very difficult. We prefer to give advanced notice of deprecation, redirects like suggested here, docs, and other mechanisms.
I agree that versioning the resource representation better follows the REST approach. but, one big problem with custom MIME types (or MIME types that append a version parameter) is the poor support to write to Accept and Content-Type headers in HTML and JavaScript.
For example, it is not possible IMO to POST with the following headers in HTML5 forms, in order to create a resource:
This is because the HTML5 enctype attribute is an enumeration, therefore anything other than the usual application/x-www-formurlencoded , multipart/form-data and text/plain are invalid.
. nor am I sure it is supported across all browsers in HTML4 (which has a more lax encytpe attribute, but would be a browser implementation issue as to whether the MIME type was forwarded)
Because of this I now feel the most appropriate way to version is via the URI, but I accept that it is not the 'correct' way.
Put your version in the URI. One version of an API will not always support the types from another, so the argument that resources are merely migrated from one version to another is just plain wrong. It's not the same as switching format from XML to JSON. The types may not exist, or they may have changed semantically.
Versions are part of the resource address. You're routing from one API to another. It's not RESTful to hide addressing in the header.
There are a few places you can do versioning in a REST API:
As noted, in the URI. This can be tractable and even esthetically pleasing if redirects and the like are used well.
In the Accepts: header, so the version is in the filetype. Like 'mp3' vs 'mp4'. This will also work, though IMO it works a bit less nicely than.
In the resource itself. Many file formats have their version numbers embedded in them, typically in the header; this allows newer software to 'just work' by understanding all existing versions of the filetype while older software can punt if an unsupported (newer) version is specified. In the context of a REST API, it means that your URIs never have to change, just your response to the particular version of data you were handed.
I can see reasons to use all three approaches:
if you like doing 'clean sweep' new APIs, or for major version changes where you want such an approach. if you want the client to know before it does a PUT/POST whether it's going to work or not. if it's okay if the client has to do its PUT/POST to find out if it's going to work.
Versioning your REST API is analogous to the versioning of any other API. Minor changes can be done in place, major changes might require a whole new API. The easiest for you is to start from scratch every time, which is when putting the version in the URL makes most sense. If you want to make life easier for the client you try to maintain backwards compatibility, which you can do with deprecation (permanent redirect), resources in several versions etc. This is more fiddly and requires more effort. But it's also what REST encourages in "Cool URIs don't change".
In the end it's just like any other API design. Weigh effort against client convenience. Consider adopting semantic versioning for your API, which makes it clear for your clients how backwards compatible your new version is.

REST APIs don’t need a versioning strategy – they need a change strategy.
Change in an API is inevitable as your knowledge and experience of a system improves. Managing the impact of this change can be quite a challenge when it threatens to break existing client integrations.
Developers often try to decide on a versioning strategy as soon as they start work on an API. This is understandable but it’s not always the smartest way of looking at the problem of managing change. Brandon Byers summed this up by borrowing Jamie Zawinski’s dig at regular expressions:
Some people, when confronted with a problem, think “I know, I’ll use versioning.” Now they have 2.1.0 problems.
How can you version resources in REST?
REST doesn’t provide for any specific versioning but the more commonly used approaches fall into three camps: putting it on the URI, using a custom request header or a adding it to the HTTP Accept header.
Using the URI is the most straightforward approach though it does upset REST advocates who insist that a URI should refer to a unique resource. You are also guaranteed to break client integrations when a version is updated no matter how heavily you invest in creative routing and client communication.
A custom header allows you to preserve your URIs between versions though it is effectively a duplicate of the content negotiation behaviour implemented by the existing Accept header. A client can use this header to send a list of supported versions while the server responds with the version used in the Content-Type header.
Content negotiation may let you to preserve a clean set of URLs but you still have to deal with the complexity of serving different versions of content somewhere . This burden tends to be moved up the stack to your API controllers which become responsible for figuring out which version of a resource to send. The end result tends to be a more complex API as clients have to know which headers to specify before requesting a resource.
The version number isn’t the problem.
Given the contentious nature of REST, you’ll always be wrong in somebody’s eyes no matter what approach you take. The point is that version numbering itself is a red herring.
The real challenge here is in managing a code base that can serve up multiple versions of resources. If you keep all versions in the same code base then older versions become vulnerable to unexpected changes. If you separate the code bases then the operational and support overhead escalates. In both cases, code bloat and increased complexity are an inevitable consequence.
A strict approach to versioning does give you much-needed certainty over the contract but it does tend to undermine a system’s capacity to change . Versioning can become a barrier to improvement as any requirements that lead to version changes are resisted. I have seen APIs with strict versioning policies stuck on the same version for years due to legitimate concerns over the amount of work and risk involved in change.
What’s the alternative to versioning?
A coherent version strategy should address how you will manage change in your API whilst providing a stable contract to clients. This doesn’t have to include issuing new versions in response to changes.
One approach is to build in the possibility of change by making provision for backwards compatibility in API changes. This approach does carry significant risk as you cannot be sure that a change will not break existing clients even with exhaustive regression testing.
You can even take backwards compatibility a step further by adding features such as optional parameters and wildcard properties that anticipate future changes. This kind of “ forwards compatibility ” tends to produce a coarse contract that places a considerable burden of validation onto the client. The end result is often a messy set of switches and codes required for each call.
Bertrand Meyer’s Open\Closed principle suggests that software entities should be “open for extension, but closed for modification”. When applied to APIs the implication is that you can augment your resources but not change them.
This approach could offer the certainty of stricter versioning without the regression risks involved in backwards compatibility. Augmentation is not without its problems though as it can give rise to bloated contracts. Without careful discipline an API can become littered with duplicate methods or resources that provide several slightly different ways of achieving the same thing.
Can you share the responsibility?
You could do more to share the burden of change between API and client. Postel’s law, often referred to as the Robustness principle, states that you should be “liberal in what you accept and conservative in what you send”. In terms of APIs this implies a certain tolerance in consuming services.
For example, strict serialization techniques can be unnecessarily intolerant of change. A more tolerant reader should only be concerned with data that it needs and ignore every other part of the response. This means that the majority of changes are unlikely to break the integration.
Another approach could be for the consumer to declare the data they are interested in as part of a request. This consumer-driven contract pattern does not specify the form that these consumer assertions should take, but an implementation could allow an API to detect when a request is out of date.
Unfortunately, these approaches can only be applied to relatively closed communities of services. Public-facing APIs rarely have the luxury of being able to dictate the style of client integration. The only enforceable contract you have between service and client is made up of the data and protocol.
This is why careful discipline is at the heart of any sensible change strategy. A good API doesn’t come into being by accident. It has to be curated . Whatever approach you take to managing change you will need consistent and active governance over the evolving contract.
I am a London-based technical architect who has spent more than twenty years leading development across start-ups, digital agencies, software houses and corporates. Over the years I have built a lot of stuff including web sites and services, multi-screen applications, systems integrations and middleware.
My current focus is on enabling scalable SaaS delivery and providing architectural leadership in agile environments. I currently work for SaaS provider Fourth leading them to enterprise heaven, one service at a time.
You can follow me on Twitter or check me out on LinkedIn.
The poor man’s Cassandra: scaling Azure Table Storage to maximise throughput.
Azure Table Storage can be tuned for high throughput workloads, but you’ll probably be faced with some difficult trade-offs.
Managing and throttling serverless scaling with Azure Functions.
The serverless promise of unlimited scale-out can be a curse when your downstream processes and data stores have strict limits on throughput. With Azure Functions your options for mitigating this are limited, though the new durable functions may provide an answer…
Entity services: when microservices are worse than monoliths.
Finely-grained, entity-based services seem to be advocated by some pretty authoritative sources. This is unfortunate as they are something of an anti-pattern that can undermine many of the benefits of decomposing an monolith into micoservices.
Forget code coverage – test design should be driven by behaviours.
Test coverage statistics are much loved by management teams and code quality tools. They tend to associate a high level of coverage with robust, well-managed code bases. Wrongly, as it turns out.
Events, sagas and workflows: managing long-running processes between services.
An event-driven architecture can give rise to complex chains of events that are difficult to manage. These problems can be mitigated through careful design rather than resorting to shared state databases or workflow engines.
Technical debt is an overused and lazy metaphor.
Technical debt may be a useful metaphor for describing how bad code design undermines productivity to non-technical audiences, but it does not help in understanding the longer term problems that affect code bases.
How can Domain Driven Design help with large scale agile development?
Agile teams spend time modelling software whether they are prepared to admit it or not. Adopting a technique like Domain Driven Design can help to make this more efficient, particularly at scale.
Running a Core console application as a Windows Service.
Although Core does not directly support creating Windows Services there are several different ways of creating applications that can be registered and run as services.