Preço por pipa - página 6

 
jjc:
Adicionando um esclarecimento ao "quase sempre" do 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))

jjc, obrigado por sua resposta :

Acho que é porque usamos o decimal como nossa convenção matemática no cálculo e na percepção de números. Se, em vez disso, usarmos Hexadecimal, por exemplo, não teríamos a conveniência de Ponto terminar em um só. Um exemplo seria converter quantos metros são 5cm, simplesmente o multiplicaríamos com o fator de conversão de um centésimo. ( 5 cm * 0,01 --> 0,05 m ) -- atravessando uma contagem completa de 10[unidades de cm] -- dez vezes. Mas se usarmos um Hexadecimal. Teríamos que atravessar uma contagem completa de 6 a 16 vezes com um módulo de 4.

Portanto, um ponto é um fator de conversão decimal. Se a convenção de mercado sugere, por exemplo, que a relação de preço atual de GBPUSD é 1,3535, é apenas porque nós/eles consideramos o valor de conversão decimal da 5ª casa decimal de compra de 1 GBP com USD 1,3535 é insignificante para a economia comercial. Mas se o comércio for maior (talvez no valor em jardas) e freqüente. Então nós/eles a perseguiremos até o centavo menos significativo que a relação preço deveria ser. Como 1,3535665, por exemplo.

Portanto, concordo que o Ponto será sempre = MathPow(10, -MarketInfo(Symbol(), MODE_DIGITS)) como você o equaciona.

EDIT : Desculpem, pessoal, o primeiro rascunho foi aprovado. Foi e ainda é muito ADD para postar. Espero que isto seja melhor...

 
1005phillip:

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

Phillip, não sei como lhe agradecer! Isto é demais! Preciso de algum tempo para descobrir isso. Mas, à primeira vista, os comentários são todos claros e não tenho problemas para entender o excelente arquivo também. Isto é uma adição valiosa ao meu arsenal. É muito generoso da sua parte compartilhar este trabalho com a comunidade Phillip. Mais uma vez, obrigado!

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.

Isso é muito interessante!

Como sua pergunta está escrita atualmente, a resposta fácil é sim - cada cruz sem USD atende a seu critério. Mas eu acho que o senhor 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 requerido 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 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 à mesma informação 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 Euro 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 em 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ê abre a 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 no parâmetro "pau por pau". 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 primário que contém a moeda da sua conta.

Sim, sua última interpretação de minha pergunta é a correta. Má interpretação de minha parte. Isto acrescentará um pouco mais de esclarecimento à característica dos pares de moedas. Obrigado...

cameo

 
gordon:
" Um 'Ponto' (MODE_POINT) é a menor mudança de preço possível", portanto, obviamente deve terminar em um 1.

Sim, é um pouco bobo uma explicação. Mas eu estava apenas tentando sublinhar que o Ponto será caracteristicamente diferente com TICK_SIZE uma vez que TICK_SIZE nem sempre terminará em 1. A corretora irá redimensioná-lo para o qual eles vêem o seu valor adequado à flutuação do valor / valor econômico.

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

Não entendo a parte em negrito Gordon... Se você se importa em explicar...

"MODE_TICKVALUE : Valor atual da moeda de balcão 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?).

Sim, é a minha segunda língua. Embora isso não tenha provado ser um obstáculo quando se trata de produzir cordas de balbuciar sem sentido no passado ou no futuro :))))

Vou tentar explicar isso no próximo post. Peço desculpas, pois tenho pouco tempo. Muito obrigado, como sempre, Gordon!
 
cameofx:
"Como eu disse antes, embora a documentação afirme "Tamanho do carrapato em pontos", isto é obviamente impreciso. É também em termos de preço".

Não entendo a parte em negrito Gordon... Se você se importa em explicar...

Digamos Ponto = 0,00001. Se MODE_TICKSIZE estivesse em pontos, então, por exemplo, teríamos MarketInfo(Symbol(),MODE_TICKSIZE) return 1, que seria interpretado como 1*Point=1*0,00001=0,00001. Mas não é isso que MarketInfo(Symbol(),MODE_TICKSIZE) retorna, ele retorna (por exemplo) 0,00001, portanto retorna um valor que representa preço e não Pontos. A documentação alega "Tamanho do Tick em pontos", isto é obviamente impreciso (provavelmente um erro na tradução do russo).
 
SDC:

eu li esse tópico antes de estar cheio de informações contraditórias.

BarrowBoy - uma mudança na proposta e/ou pedido

Rosh - um evento de "novo preço

kminler - cada carrapato representa um comércio fechado

puncher - um carrapato é uma pipa

Após ler outros tópicos e discussões sobre carrapatos, cheguei à conclusão de que um carrapato não tem valor específico, pois tudo o que ele contém é um novo lance e uma nova solicitação, que poderia ser 1 pip diferente do último carrapato, sem pips diferentes ou vários pips diferentes, portanto, em si mesmo o carrapato não carrega nenhuma diferença de preço, apenas um novo preço.

Mas agora eu tenho investigado como calcular o valor de um pip que eu encontro no MarketInfo MODE_TICKVALUE que parece ser um valor estático, isto por si só contradiz o que a maioria das pessoas parece dizer sobre um tick, que ele simplesmente transmite uma mudança no preço, nenhuma quantidade específica, então como pode haver algo como MODE_TICKVALUE que não faz sentido a menos que a maioria das pessoas estejam erradas e 1 tick tenha de fato um valor específico igual a 1 pip, meu problema é a falta de documentação adequada como é suposto descobrir o que está certo e o que está errado, os tópicos do fórum contêm algumas informações, muitas delas baseadas em opiniões ou suposições em vez de fatos que na maioria das circunstâncias não importa, mas quando se está tentando escrever um programa baseado em informações tão esquemáticas e contraditórias, isso torna a vida muito difícil


Sim, esta também é a minha preocupação.

Só voltando aqui para dar seguimento à minha pesquisa, amanhã terei que ler isto novamente. Já estou tendo problemas de leitura devido ao pouco sono e muito tempo na frente do computador.

 

Uau, eu acabei de pegar toda a leitura aqui. Estou realmente exausto e ainda não tenho certeza de como resolver o problema.

Portanto, vou simplesmente dizer, agora que parece que estamos entendendo minhas preocupações, a oferta ainda permanece que eu gostaria de um método para calcular com precisão o valor do movimento de preços de 1 dos menores valores para o próximo (aka de x.0001 a x.0002) de acordo com o que sempre simbolizou a EA, ela deve calcular a alavancagem envolvida também. (ou seja, se em contrato de 100.000 e alavancagem de 400:1, eu poderia esperar que EURUSD custasse 10 ou o que você tem.


Em troca, tenho 2 gurus comerciais manuais de gerenciamento de dinheiro que posso aplicar usando sua função para obter o valor do pip e criar 2 conjuntos de funções de gerenciamento de dinheiro. Estou pesquisando outros métodos também. A idéia que tenho em mente é criar um pacote de gerenciamento de dinheiro contendo escolhas baseadas em vários gurus e o usuário pode escolher aquele que funciona para eles.

Portanto, eu ficaria muito grato se alguém pudesse criar uma função que pudesse me dar o valor do pip. Honestamente, estou surpreso que ainda não seja uma função padrão no MT4.

Se o ponto é o valor de, digamos, 1.1234 - 1.1233 e você pode obter o valor monetário desse resultado, então é isto que eu estou procurando. Para mim, o termo ponto aqui é tão bom quanto o termo pip.

Gostaria de ser capaz de mudar o valor de alavancagem, portanto este deve ser um parâmetro.

Ok, já estou acordado há cerca de 53 horas, então preciso descansar um pouco. Temos estado ocupados martelando para nossos novos lançamentos e eu estou totalmente exausto.

 
LEHayes:

Portanto, vou simplesmente dizer, agora que parece que estamos entendendo minhas preocupações, a oferta ainda permanece que eu gostaria de um método para calcular com precisão o valor do movimento de preços de 1 dos menores valores para o próximo (aka de x.0001 a x.0002) de acordo com o que sempre simbolizou a EA pode estar em

Bem, resumindo parcialmente o que foi dito ao longo de 6 páginas, o menor movimento possível no preço é dado por MODE_TICKSIZE, e seu valor em dinheiro por lote inteiro é dado por MODE_TICKVALUE. Com três advertências:

  • MODE_TICKSIZE e MODE_TICKVALUE podem variar entre corretores, dependendo do número de casas decimais utilizadas. Por exemplo, Alpari (5DP) reporta TS como 0,00001 e TV como 1,00 em EURUSD. FXDD reporta TS como 0,0001, e TV como 10,00 correspondente. Tentativas de padronizar MODE_TICKSIZE entre corretores são uma questão à parte, por exemplo, como discutido em https://www.mql5.com/en/forum/124692.
  • MODE_TICKVALUE varia ao longo do tempo se a moeda de cotação do símbolo for diferente da moeda de seu depósito (por exemplo, em uma conta USD EURUSD tem um TICKVALUE fixo, mas USDJPY é flutuante).
  • O quebra-nuvem registrou instâncias de TICKSIZE variando (por exemplo, TICKSIZE sendo reportado como 0,0002 e 0,0001 em chamadas sucessivas, com variação correspondente em TICKVALUE). Eu nunca vi isto pessoalmente, em 15 corretores diferentes.
 
gordon:
Digamos Ponto = 0,00001. Se MODE_TICKSIZE estiver em pontos, então por exemplo, podemos ter MarketInfo(Symbol(),MODE_TICKSIZE) return 1, que seria interpretado como 1*Point=1*0,00001=0,00001. Mas não é isso que MarketInfo(Symbol(),MODE_TICKSIZE) retorna, ele retorna (por exemplo) 0,00001, portanto retorna um valor que representa preço e não Pontos,. Isto é obviamente um erro na documentação (provavelmente um erro na tradução do russo).
Permito-me diferenciar Gordon, MODE_TICKSIZE está em pontos -- Ponto(s) para ser exato(s). MODE_TICKSIZE será sempre um X múltiplo de Ponto. Seja ele 1, 2, 5, 35 etc. O ponto IMHO é um fator de conversão do tipo duplo para nos levar à última casa decimal significativa da relação de preços. Se um corretor considerar adequado oferecer a sexta casa decimal como uma pechincha a ser oferecida ao cliente, então ele fará Ponto como 0,000001 e Dígitos = 6.
Os dígitos nesta questão representarão Ponto em inteiro.
 
LEHayes:

Portanto, vou simplesmente dizer, agora que parece que estamos entendendo minhas preocupações, a oferta ainda permanece que eu gostaria de um método para calcular com precisão o valor do movimento de preços de 1 dos menores valores para o próximo (aka de x.0001 a x.0002) de acordo com o que sempre simbolizou a EA, ela deve calcular a alavancagem envolvida também. (ou seja, se em contrato de 100.000 e alavancagem de 400:1, eu poderia esperar que EURUSD custasse 10 ou o que você tem.

Verifique os arquivos de inclusão contidos no arquivo raro que anexei na página 5...ele faz ambos, a menos que eu esteja entendendo mal sua pergunta.

editar: especificamente os seguintes trechos de código.

Para o tickvalue usando o arquivo include intitulado "Analyze Currency Symbol 2010.06.07.mqh" você faria:

1. chame a função int SymbolType()

int CalculatedSymbolType=SymbolType();

2. Chame a função CounterPairForCross()

string CalculatedCounterPairForCross=CounterPairForCross();


3. então você computaria o valor do tick a preço de mercado atual para o símbolo:

   switch(CalculatedSymbolType) // Determine the tickvalue for the financial instrument based on the instrument's SymbolType (major, cross, etc)
      {
      case 1   :  Print("Calculated TICKVALUE = ",DoubleToStr(MarketInfo(Symbol(),MODE_POINT)*MarketInfo(Symbol(),MODE_LOTSIZE)/MarketInfo(Symbol(),MODE_BID),6)," (Tick value in the deposit currency - base)"); break;
      case 2   :  Print("Calculated TICKVALUE = ",DoubleToStr(MarketInfo(Symbol(),MODE_POINT)*MarketInfo(Symbol(),MODE_LOTSIZE),6)," (Tick value in the deposit currency - counter)"); break;
      case 3   :  Print("Calculated TICKVALUE = ",DoubleToStr(MarketInfo(Symbol(),MODE_POINT)*MarketInfo(Symbol(),MODE_LOTSIZE)/MarketInfo(CalculatedCounterPairForCross,MODE_BID),6)," (Tick value in the deposit currency - ",AccountCurrency()," is Base to Counter)"); break;
      case 4   :  Print("Calculated TICKVALUE = ",DoubleToStr(MarketInfo(Symbol(),MODE_POINT)*MarketInfo(Symbol(),MODE_LOTSIZE)/MarketInfo(CalculatedCounterPairForCross,MODE_BID),6)," (Tick value in the deposit currency - ",AccountCurrency()," is Base to Counter)"); break;
      case 5   :  Print("Calculated TICKVALUE = ",DoubleToStr(MarketInfo(CalculatedCounterPairForCross,MODE_BID)*MarketInfo(Symbol(),MODE_POINT)*MarketInfo(Symbol(),MODE_LOTSIZE),6)," (Tick value in the deposit currency - ",AccountCurrency()," is Counter to Counter)"); break;
      default  :  Print("Error encountered in the SWITCH routine for calculating tickvalue of financial instrument ",Symbol()); // The expression did not generate a case value
      }


Para alavancagem, utilize o arquivo "Analyze Currency Symbol 2010.06.07.mqh" que você faria:

1. chamar a função int SymbolType()
int CalculatedSymbolType=SymbolType();

2. Chamar a função BasePairForCross()

string CalculatedBasePairForCross=BasePairForCross();


3. em seguida, você calcularia a alavancagem específica do símbolo ao preço atual de mercado para o símbolo, chamando SymbolLeverage():

int   CalculatedLeverage=SymbolLeverage();   // Leverage for USDJPY is set to 100:1
Print("Leverage for ",Symbol()," is set at ",CalculatedLeverage,":1");
 
cameofx:
Permito-me diferenciar Gordon, MODE_TICKSIZE está em pontos -- Ponto(s) para ser exato(s). MODE_TICKSIZE será sempre um X múltiplo de Ponto. Seja ele 1, 2, 5, 35 etc. [...]
Isto parece uma questão de semântica... A convenção comum afirma que quando dizemos que um "valor está em x", queremos dizer que x é a "unidade" utilizada. Neste caso, o Ponto não é a unidade usada, portanto o MODE_TICKSIZE não está em Pontos. Concordo que é um múltiplo de Ponto, mas isso é apenas porque o Ponto é a menor mudança de preço possível, portanto, por definição, deve ser um múltiplo de Ponto.
Razão: