Preço por pipa - página 5

 

@Gordon

"O que você quer dizer com'Execução Instantânea'? (está implícito que não é o mesmo que 'Execução no Mercado')"...

O servidor MT4 parece se referir (você verá isto em sua lista de ordens abertas para baixo) à capacidade de definir as paradas na ordem aberta como "Execução Instantânea"; e "Execução de Mercado" quando elas precisam ser definidas em 0 e modificadas.

@SDC e 1005philip

"não seria mais fácil usar apenas Symbol() em todas as referências ao símbolo, então mesmo que o servidor do corretor tenha o EURUSD inserido como mooncheese, não importará desde que o EA também saiba que o EURUSD é chamado de mooncheese".

Quando o nome do símbolo é alterado pelo corretor, isto requer a abertura de um novo gráfico ao qual você adicionará sua EA.

CB

 
cloudbreaker:

O MT4 Server parece se referir (você verá isto em sua lista de ordem aberta para baixo) à capacidade de definir as paradas na ordem aberta como "Instant Execution"; e "Market Execution" quando elas precisarem ser definidas em 0 e modificadas.

Diabos me levem, o menu suspenso na verdade muda quando o login é feito em uma conta que só aceita paradas a 0. Nunca notei isso. Obrigado.
 
SDC:

não seria mais fácil usar apenas Symbol() em todas as referências ao símbolo, então mesmo que o servidor do corretor tenha o EURUSD inserido como mooncheese, não importará desde que o EA também saiba que o EURUSD é chamado de mooncheese

Uau! o tema cresceu para 42 postos e contando, é um recorde...

Se todos não se importam.... de pegar onde eu tinha parado...

SDC, se não me engano, Phillip estava definindo sua função personalizada para produzir TickValue, independentemente, ao invés de simplesmente chamar o MarketInfo pré-definido. É claro que chamar MODE_TICKVALUE on Symbol() é a coisa lógica mais fácil de se fazer. Mas, além de demonstrar/prover onde/como o TickValue obteve seu valor. Eu poderia estar errado, mas acho que isto tem a vantagem de sintetizar um ou alguns pares exóticos que qualquer corretor em particular pode não oferecer. Podemos permutar toda a base/contador que está disponível. Eu não tenho um exemplo à mão. Mas tenho certeza de que o que os corretores têm a oferecer não é uma permutação completa de base/contador-s disponível. Estou apenas explorando o que Phillip tinha postado. Pode não ser útil a menos que seja necessário cobrir/arbitrage ou algo assim...

 

cameo, eu ficaria feliz em compartilhar mais do código que tenho aqui se você encontrar valor nele. Honestamente, eu assumi que era apenas um caminho mundano/rotineiro que a maioria das pessoas já havia percorrido no decorrer de suas próprias aventuras de codificação, então eu não queria insultar a inteligência de ninguém, presumindo que fosse algo novo para a comunidade. (também meu código não é exatamente o que eu considero digno de publicação na forma em que se encontra no meu disco rígido, potencialmente fazendo mais mal do que bem nas mãos erradas e eu realmente não quero que ninguém perca dinheiro por causa do meu estilo de comentário sem brilho, etc.)

O benefício (eu o vejo mais como "a necessidade") de ser capaz de calcular o valor do tick a partir dos fundamentos não é tanto para hedging/arbitrage (embora certamente pudesse ser alavancado lá também), mas sim para algo muito mais simplista. No meu caso, acho que é necessário para calcular o patrimônio em risco, a colocação de stoploss, etc.

(nota: o valor do marketinfo para MODE_TICKVALUE é baseado estritamente no preço de compra do par de moedas, não no preço de venda, como tal o valor do marketinfo só é tecnicamente correto para uso com cálculos que dependem do preço de compra, como o valor de takeprofit de uma posição longa ou o stoploss de uma posição curta... mais uma vez a discrepância é pequena, e naturalmente não faz diferença para pares de moedas nos quais a moeda da conta é a moeda de contrapartida, como EURUSD e assim por diante)

A questão com o uso da informação de mercado Tickvalue é que ela é válida apenas para os preços atuais do mercado. O Tickvalue depende do preço de mercado para todos, exceto para aqueles pares de moedas que têm a moeda da conta como moeda cotada. (o valor de USDJPY é diferente em USDJPY = 99,00 versus 98,00, etc.)

A razão para a criação de pares "sintéticos" como você se refere a eles é que para pares de moedas cruzadas, o valor do tick depende do preço de dois pares de moedas. Tanto o símbolo sendo negociado quanto o par de moedas que é formado pela moeda da conta e o do par de moedas da contra-corrente no símbolo sendo negociado.

Um exemplo. Digamos que a denominação de sua conta é USD e você quer negociar o EURGBP. O valor da posição do EURGBP uma vez aberta vai depender do preço de mercado do EURGBP, bem como do preço de mercado do GBPUSD.

Você poderia abrir uma posição longa sobre o EURGP a 0,8500 e este poderia sentar-se ali pelo mesmo preço durante todo o dia e, no entanto, sua negociação estará submersa se o GBPUSD tiver uma tendência decrescente nesse ínterim. (esta é também a razão pela qual você pode ter lido um ou dois posts meus antes, nos quais eu afirmei que a cobertura é necessária, mas impraticável, ao negociar pares de moedas cruzadas, se você pretende gerenciar seu risco).

No meu caso, gosto de programar os pares de moedas que fazem a ponte entre a moeda da conta e o par de moedas cruzadas, daí o uso da formação de pares "sintéticos".

 
1005phillip:

cameo teria prazer em compartilhar mais do código que tenho aqui sentado se você encontrar valor nele.

Sim. Isso seria ótimo! Por favor, anexe ou me peguem se você se inclinar. Obrigado Phillip...

O benefício (eu o vejo mais como "a necessidade") de ser capaz de calcular o valor do tick a partir dos fundamentos não é tanto para hedging/arbitrage (embora certamente pudesse ser alavancado lá também), mas sim para algo muito mais simplista. No meu caso, considero necessário para o cálculo do patrimônio em risco, colocação de stoploss, etc.

(também, nota: o valor do marketinfo para MODE_TICKVALUE é baseado estritamente no preço de compra do par de moedas, não no preço de venda, como tal o valor do marketinfo só é tecnicamente correto para uso com cálculos que dependem do preço de compra, como o valor de takeprofit de uma posição longa ou o stoploss de uma posição curta... mais uma vez a discrepância é menor, e naturalmente não faz diferença para pares de moedas em que a moeda da conta é a moeda de contrapartida, como o EURUSD e assim por diante)

Isto implica que o outro lado do comércio, isto é, a informação de mercado (Ask price), terá discrepância se calculada de forma independente?

A questão com o uso da informação de mercado Tickvalue é que ela é válida apenas para os preços atuais do mercado. O Tickvalue depende do preço de mercado para todos, exceto para aqueles pares de moedas que têm a moeda da conta como moeda cotada. (o valor de USDJPY é diferente em USDJPY = 99,00 versus 98,00, etc.)

A razão para a criação de pares "sintéticos" como você se refere a eles é que para pares de moedas cruzadas, o valor do tick depende do preço de dois pares de moedas. Tanto o símbolo sendo negociado quanto o par de moedas que é formado pela moeda da conta e o do par de moedas da moeda cotada no símbolo sendo negociado.

Sim. Isto está claramente descrito no livro mql4 Book. Desde então, tenho sempre visto ospares de moedas cruzadas TickValues' como 'flutuantes'.

Um exemplo. Digamos que a denominação de sua conta é USD e você quer negociar o EURGBP. O valor da posição do EURGBP uma vez aberta vai depender do preço de mercado do EURGBP, bem como do preço de mercado do GBPUSD.

Você poderia abrir uma posição longa no EURGP a 0,8500 e ele poderia ficar ali sentado por esse mesmo preço durante todo o dia e, no entanto, sua negociação estará submersa se o GBPUSD tiver uma tendência decrescente nesse ínterim. (esta é também a razão pela qual você pode ter lido um ou dois posts meus antes, nos quais eu afirmei que a cobertura é necessária, mas impraticável, ao negociar pares de moedas cruzadas, se você pretende gerenciar seu risco).

Eu nunca olhei para isso dessa maneira! Preciso refletir sobre isto é mais.... :)

No meu caso, gosto de determinar programticamente os pares de moedas que fazem a ponte entre a moeda da conta e o par de moedas cruzadas, daí o uso da formação de pares "sintéticos".

Uma pergunta (talvez uma pergunta estúpida): Você já encontrou algum par que não tenha USD como base/contador, mas que exista como uma cruz?


 
gordon:

Infelizmente, a nomenclatura de MODE_TICKSIZE e MODE_TICKVALUE acrescenta uma segunda definição ao Tick (que presumo ser a fonte da confusão...). A definição de Tick neste contexto é: um Tick é a menor mudança de preço possível para o símbolo em questão:

  • MODE_TICKSIZE - o tamanho desta mudança em termos de preço (a documentação afirma "Tamanho do ponto em pontos", mas isso é obviamente impreciso).
  • MODE_TICKVALUE - o valor desta mudança na moeda de depósito da conta (este é calculado pelo corretor do lado do servidor).
Comentários:
  1. Um 'Ponto' (MODE_POINT) é a menor alteração de preço possível no tamanho esquerdo do ponto decimal para o símbolo em questão. Isto NÃO é o mesmo que MODE_TICKSIZE. Tecnicamente: MODE_TICKSIZE>=MODE_POINT, embora quase sempre eles sejam iguais.
  2. Um 'Pip' é uma convenção, algo com o qual todos nós concordamos. Não é uma propriedade matemática do símbolo ou uma propriedade do servidor MT4. Assim, por exemplo - com um corretor de 4 dígitos para EURUSD um Pip é 1 Ponto, mas para um corretor de 5 dígitos um Pip é 10 Pontos...
  3. Há uma boa discussão sobre como determinar automaticamente o tamanho de um Pip em Pontos aqui -> https://www.mql5.com/en/forum/124692.
  4. MODE_TICKSIZE pode variar, embora extremamente raro (o ponto é fixo por outro lado). A CB tem um método para lidar com estas mudanças aqui -> https://www.mql5.com/en/forum/109552/page3#195878.

Se eu puder oferecer o que tem sido minha interpretação até o momento - acrescentando ao que Gordon tinha exposto muito bem acima.

  • Ponto : Sempre termina em 1. É um fator de conversão para a razão que chamamos de 'preço'.
  • MODE_TICKSIZE : A menor unidade de movimento de preço em Pontos.
  • MODE_TICKVALUE : O valor atual da moeda cotada na conversão para sua relação de base.
 

cameofx:

Ponto : Sempre termina em 1. É um fator de conversão para a relação que chamamos de "preço".
Acrescentando um esclarecimento ao "quase sempre" de Gordon, não consigo pensar imediatamente em um instrumento forex onde isto não é verdade, mas raramente é verdade quando os corretores oferecem metais, índices, etc. Por exemplo, no contrato de ouro da Alpari, TICKSIZE é 0,05 (e Ponto é 0,01). Tanto quanto sei, MarketInfo(Symbol(),MODE_POINT) = MathPow(10, -MarketInfo(Symbol(), MODE_DIGITS))
 
cameofx:

Sim. Isso seria ótimo! Por favor, anexe ou me peguem se você se inclinar. Obrigado Phillip...


Incluído no arquivo raro anexo. Tenho certeza de que você terá perguntas de uso, atire fora.


cameofx:

Isso implica que o outro lado do comércio, ou seja, a informação de mercado (Ask price), terá discrepância se calculada de forma independente?



Isso é correto. Mas o erro percentual é simplesmente o spread em pontos dividido pelo preço pedido (~0,02%-0,05%, dependendo do par de moedas)... só importa se você quiser contabilizar até o último centavo.


cameofx:

Eu nunca vi as coisas dessa maneira! Preciso refletir sobre isto é mais.... :)


Incluí um arquivo excel no arquivo raro anexo, na esperança de promovê-lo enquanto você pondera.

cameofx:

Uma pergunta (talvez uma pergunta estúpida): Você já encontrou algum par que não tenha USD como base/contador, mas que exista como uma cruz?



Como sua pergunta está escrita atualmente, a resposta fácil é sim - cada cruz sem USD atende ao seu critério. Mas eu acho que você quis fazer uma pergunta diferente - ou seja, eu encontrei um corretor que oferece um par de moedas cruzadas e ao mesmo tempo não oferece o par de moedas necessário que contém a moeda cotada do par de moedas cruzadas e a moeda de denominação da conta?

A resposta a essa pergunta é não, e por uma boa razão, porque um corretor simplesmente não pode. A razão pela qual um corretor não pode fazer isso é porque eles estão vinculados pelas mesmas conexões fundamentais de preço das equações aqui detalhadas... em outras palavras, eles precisam ter acesso às mesmas informações de preço para calcular e relatar suas avaliações de posição de moeda cruzada.

Por exemplo, digamos que você tenha uma conta denominada em euros e compre 1 lote de GBPUSD. A moeda de balcão em GBPUSD é o USD. Portanto, para calcular seu lucro/perda em sua posição GBPUSD, seu corretor (e você) também precisa saber o preço do EURUSD. (o EUR é a moeda de sua conta, o USD é a moeda cotada do par cruzado em que você abriu uma posição)

Se o corretor não tivesse EURUSD como par oferecido, então o terminal MT4 não poderia calcular o lucro/perda flutuante de sua posição com base em tick-by-tick. Portanto, você nunca encontrará um corretor que lhe ofereça a possibilidade de negociar um par cruzado (relativo à denominação de sua conta) sem oferecer também o par de moedas principal que contém a moeda de sua conta.
 
jjc:
Acrescentando um esclarecimento ao "quase sempre" de Gordon, não consigo pensar imediatamente em um instrumento forex onde isso não seja verdade, mas raramente é verdade quando os corretores oferecem metais, índices, etc. Por exemplo, no contrato de ouro da Alpari, TICKSIZE é 0,05 (e Ponto é 0,01). Tanto quanto sei, MarketInfo(Symbol(),MODE_POINT) = MathPow(10, -MarketInfo(Symbol(), MODE_DIGITS))
Concordaram em ambos. Nunca vi um caso em que MODE_POINT e MODE_DIGITS não confirmassem esta fórmula.
 
cameofx:
Ponto : Sempre termina em 1.
"Um 'Ponto' (MODE_POINT) é a menor mudança de preço possível" , portanto, obviamente deve terminar em 1.
MODE_TICKSIZE : A menor unidade de movimento de preços em pontos.

Como eu disse antes, embora a documentação afirme "Tamanho do carrapato em pontos", isto é obviamente impreciso. É também em termos de preço.

MODE_TICKVALUE : Valor atual da moeda cotada na conversão para sua relação de base.

Esta definição não é clara... (talvez o inglês não seja sua língua nativa?).