Precio por punto - página 6

 
jjc:
Añadiendo una aclaración al "casi siempre" de gordon, no puedo pensar inmediatamente en un instrumento de forex donde esto no sea cierto, pero rara vez es cierto cuando los corredores ofrecen metales, índices, etc. Por ejemplo, en el contrato de oro de Alpari, el TICKSIZE es 0,05 (y el Point es 0,01). Hasta donde yo sé, MarketInfo(Symbol(),MODE_POINT) = MathPow(10, -MarketInfo(Symbol(), MODE_DIGITS))

jjc, gracias por su respuesta:

Creo que es porque usamos el decimal como nuestra convención matemática en el cálculo y la percepción de los números. Si en lugar de ello utilizáramos el hexadecimal por ejemplo no tendríamos la conveniencia de que el punto acabara en uno. Un ejemplo sería convertir cuántos metros son 5cm, simplemente lo multiplicaríamos por el factor de conversión de una centésima. ( 5 cm * 0,01 --> 0,05 m ) -- recorriendo una cuenta completa de 10[unidades de cm] -- diez veces. Pero si usamos un Hexadecimal. Tendríamos que recorrer una cuenta completa de 6 - 16 veces con un módulo de 4.

Así que un Punto es un factor de conversión decimal. Si la convención del mercado sugiere que, por ejemplo, la relación de precios actual de la GBPUSD es de 1,3535 es sólo porque nosotros/ellos consideramos que el valor de conversión decimal de 5º lugar de comprar 1 GBP con 1,3535 USD es insignificante para la economía del comercio. Pero si el comercio fuera más grande (en valor de yardas tal vez) y frecuente. Entonces nosotros/ellos lo perseguiríamos hasta el centavo menos significativo que debería tener la relación de precios. Como 1,3535665, por ejemplo.

Así que estoy de acuerdo en que Point siempre será = MathPow(10, -MarketInfo(Symbol(), MODE_DIGITS)) como lo equipara.

EDIT : Lo siento chicos, el primer borrador pasó. Fue y sigue siendo demasiado ADD para publicar. Espero que esto sea mejor...

 
1005phillip:

Incluido en el archivo rar adjunto. Estoy seguro de que usted tendrá preguntas de uso, disparar.

Phillip, ¡no puedo agradecerte lo suficiente! ¡Esto es demasiado impresionante! Necesito algo de tiempo para entenderlo. Pero a primera vista los comentarios son claros y no tengo problemas para entender el archivo de Excel también. Esta es una valiosa adición a mi arsenal. Es muy generoso de tu parte compartir este trabajo con la comunidad Phillip. Gracias de nuevo.

Eso es correcto. Pero el porcentaje de error es simplemente el diferencial en puntos dividido por el precio de compra (~0,02%-0,05% según el par de divisas)... sólo importa si se quiere contabilizar hasta el último céntimo.

¡Es muy interesante!

Tal y como está redactada tu pregunta, la respuesta fácil es que sí: todos los cruces sin USD cumplen tu criterio. Pero creo que usted se refería a una pregunta diferente - a saber, ¿me he encontrado con un corredor que ofrece un par de divisas cruzadas y al mismo tiempo no ofrece el par de divisas requerido que contiene la moneda contraria del par cruzado y la moneda de la denominación de la cuenta?

La respuesta a esta pregunta es no, y por una buena razón, porque un corredor simplemente no puede. La razón por la que un corredor no puede hacer eso es porque están obligados por las mismas conexiones de precios fundamentales de las ecuaciones detalladas aquí ... en otras palabras, necesitan tener acceso a la misma información de precios con el fin de calcular y reportar sus valoraciones de posición de divisas cruzadas.

Por ejemplo, digamos que usted tiene una cuenta denominada en euros y compra 1 lote de GBPUSD. La moneda de contrapartida en el GBPUSD es el USD. Así que para calcular su beneficio/pérdida en su posición de GBPUSD su corredor (y usted) también necesitan saber el precio del EURUSD. (el EUR es la moneda de su cuenta, el USD es la moneda de contrapartida del par cruzado en el que abrió una posición)

Si el broker no tiene el EURUSD como par ofrecido, entonces el terminal MT4 no podría calcular la ganancia/pérdida flotante de su posición sobre una base de tick a tick. Por lo tanto, nunca encontrará un broker que le ofrezca la posibilidad de operar con un par cruzado (relativo a la denominación de su cuenta) sin ofrecer también el par de divisas principal que contiene la divisa de su cuenta.

Sí, su última interpretación de mi pregunta es la correcta. Mala redacción por mi parte. Esto añadirá algo más de luz a la característica de los pares de divisas. Gracias...

cameo

 
gordon:
" Un 'Punto' (MODE_POINT) es el cambio de precio más pequeño posible ", por lo que obviamente debe terminar en un 1.

Sí, es una explicación un poco tonta. Pero yo sólo estaba tratando de subrayar que el punto será característicamente diferente con TICK_SIZE ya que TICK_SIZE no siempre terminará en 1. Broker lo redimensionará a lo que ven que es el valor de ajuste de la fluctuación / valor económico.

"Como he dicho antes, aunque la documentación afirma "Tamaño de la garrapata en puntos", esto es obviamente inexacto. Está en términos de precio también".

No entiendo la parte en negrita Gordon... Si te importa explicarlo...

"MODE_TICKVALUE : Valor actual de la moneda del contador en conversión a su ratio base".

Esta definición no es clara... (¿quizás el inglés no es tu lengua materna?).

Sí, es mi segunda lengua. Aunque eso no ha demostrado ser un obstáculo a la hora de producir cadenas de balbuceos sin sentido en el pasado o en el futuro :))))

Intentaré explicarlo en el próximo post. Disculpas ya que estoy corto de tiempo. ¡Muchas gracias como siempre Gordon!
 
cameofx:
"Como he dicho antes, aunque la documentación afirma "Tamaño de la garrapata en puntos", esto es obviamente inexacto. Está en términos de precio también".

No entiendo la parte en negrita Gordon... Si te importa explicarlo...

Digamos que Punto = 0,00001. Si MODE_TICKSIZE estuviera en puntos, entonces, por ejemplo, haríamos que MarketInfo(Symbol(),MODE_TICKSIZE) devolviera 1, que se interpretaría como 1*Punto=1*0,00001=0,00001. Pero eso no es lo que devuelve MarketInfo(Symbol(),MODE_TICKSIZE), sino que devuelve (por ejemplo) 0.00001, por lo que devuelve un valor que representa el precio y no los Puntos. La documentación dice "Tick size in points", esto es obviamente inexacto (probablemente un error en la traducción del ruso).
 
SDC:

He leído ese hilo antes de que su lleno de información condradictory.

BarrowBoy - un cambio en la oferta y/o la demanda

Rosh - un evento de "nuevo precio".

kminler - cada tick representa una operación cerrada

puncher - un tick es un pip

Después de leer otros hilos y discusiones sobre los ticks había llegado a la conclusión de que un tick no tiene ningún valor específico ya que todo lo que contiene es una nueva oferta y una nueva demanda, que podría ser 1 pip diferente al último tick, ningún pip diferente o varios pips de diferencia por lo que en sí mismo el tick no lleva ninguna diferencia de precio, sólo un nuevo precio.

Pero ahora he estado investigando cómo calcular el valor de un pip me encuentro con MarketInfo MODE_TICKVALUE que parece ser un valor estático, esto en sí mismo contradice lo que la mayoría de la gente parece decir acerca de una garrapata, que simplemente transmite un cambio en el precio, ninguna cantidad específica, así que ¿cómo puede haber tal cosa como MODE_TICKVALUE no tiene ningún sentido a menos que la mayoría de la gente está equivocada y 1 garrapata, de hecho, tiene un valor específico igual a 1 pip, mi problema es la falta de documentación adecuada, ¿cómo se supone que uno debe averiguar lo que es correcto y lo que es incorrecto, los hilos del foro contienen algo de información, gran parte de ella basada en la opinión o la suposición en lugar de hecho que en la mayoría de las circunstancias no importa, pero cuando uno está tratando de escribir un programa basado en tal información incompleta y contradictoria que hace la vida muy difícil


Sí, esto también me preocupa.

Solo vuelvo a entrar aquí para seguir con mi investigación, tendré que volver a leer esto mañana. Ya estoy teniendo problemas de lectura debido a que he dormido poco y he pasado demasiado tiempo frente al pc.

 

Vaya, acabo de ponerme al día con toda la lectura aquí. Estoy realmente agotado y todavía no estoy seguro de cómo abordar el problema.

Por lo tanto, voy a decir simplemente, ahora que parece que estamos entendiendo mis preocupaciones, la oferta sigue siendo que me gustaría un método para calcular con precisión el valor del movimiento del precio de 1 de los valores más pequeños a la siguiente (aka de x.0001 a x.0002) de acuerdo con lo que sea símbolo de la EA puede ser en, debe calcular el apalancamiento involucrados también. (es decir, si en el contrato de 100.000 y el apalancamiento de 400:1, podría esperar EURUSD a costar 10 o lo que tiene.


A cambio, tengo 2 gurús de comercio manual fórmula de gestión de dinero que puedo aplicar utilizando su función para obtener el valor de pip y crear 2 conjuntos de funciones de gestión de dinero. También estoy investigando otros métodos. La idea que tengo en mente es crear un paquete de gestión de dinero que contenga opciones basadas en varios gurús y que el usuario pueda elegir la que le funcione.

Así que estaría muy agradecido si alguien pudiera llegar a una función que me pueda dar el valor del pip. Sinceramente, me sorprende que no sea ya una función estándar en la MT4.

Si el punto es el valor de, por ejemplo, 1,1234 - 1,1233 y se puede obtener el valor monetario de ese resultado, entonces esto es lo que estoy buscando. Para mí el término punto aquí es tan bueno como el término pip.

Me gustaría ser capaz de cambiar el valor de apalancamiento por lo que este debe ser un parámetro.

Ok, ahora he estado despierto por cerca de 53 horas, así que necesito descansar un poco. Hemos estado muy ocupados trabajando para nuestros nuevos lanzamientos y estoy totalmente agotado.

 
LEHayes:

Así que, simplemente diré, ahora que parece que estamos entendiendo mis preocupaciones, la oferta sigue en pie que me gustaría un método para calcular con precisión el valor del movimiento del precio de 1 de los valores más pequeños a la siguiente (aka de x.0001 a x.0002) de acuerdo con lo que sea el símbolo que el EA puede estar en

Bien, resumiendo en parte lo que se ha dicho a lo largo de 6 páginas, el menor movimiento posible del precio viene dado por MODE_TICKSIZE, y su valor efectivo por lote completo viene dado por MODE_TICKVALUE. Con tres salvedades:

  • MODE_TICKSIZE y MODE_TICKVALUE pueden variar entre brokers dependiendo del número de decimales utilizados. Por ejemplo, Alpari (5DP) reporta TS como 0.00001 y TV como 1.00 en EURUSD. FXDD reporta TS como 0.0001, y TV correspondientemente como 10.00. Los intentos de estandarizar MODE_TICKSIZE entre los corredores son un tema aparte, por ejemplo, como se discute en https://www.mql5.com/en/forum/124692
  • MODE_TICKVALUE varía a lo largo del tiempo si la moneda de cotización del símbolo es diferente a la moneda de su depósito (por ejemplo, en una cuenta de USD EURUSD tiene un TICKVALUE fijo pero USDJPY es flotante).
  • Cloudbreaker ha registrado casos en los que el TICKSIZE varía (por ejemplo, el TICKSIZE se reporta como 0.0002 y 0.0001 en llamadas sucesivas, con la correspondiente variación en el TICKVALUE). Nunca he visto esto personalmente, a través de 15 corredores diferentes.
 
gordon:
Digamos que Point = 0.00001. Si MODE_TICKSIZE está en puntos, entonces por ejemplo podemos hacer que MarketInfo(Symbol(),MODE_TICKSIZE) devuelva 1, lo que se interpretaría como 1*Punto=1*0.00001=0.00001. Pero eso no es lo que devuelve MarketInfo(Symbol(),MODE_TICKSIZE), sino que devuelve (por ejemplo) 0.00001, por lo que devuelve un valor que representa el precio y no los Puntos,. Esto es obviamente un error en la documentación (probablemente un error en la traducción del ruso).
Siento discrepar Gordon, MODE_TICKSIZE está en puntos -- Punto(s) para ser precisos. MODE_TICKSIZE siempre será un múltiplo X de Punto. Ya sea 1, 2, 5, 35, etc. Point IMHO es un tipo de factor de conversión doble para llevarnos al último decimal significativo de la relación de precios. Si un corredor considera oportuno ofrecer el sexto decimal como una ganga para el cliente, entonces hará que el punto sea 0,000001 y los dígitos sean 6.
En este caso, los dígitos representan el punto en números enteros.
 
LEHayes:

Así que, simplemente diré, ahora que parece que estamos entendiendo mis preocupaciones, la oferta sigue siendo que me gustaría un método para calcular con precisión el valor del movimiento del precio de 1 de los valores más pequeños a la siguiente (aka de x.0001 a x.0002) de acuerdo con lo que sea el símbolo de la EA puede ser en, debe calcular el apalancamiento involucrados también. (es decir, si en el contrato de 100.000 y el apalancamiento de 400:1, podría esperar que EURUSD costara 10 o lo que sea.

Revisa los archivos de inclusión contenidos en el archivo rar que adjunté en la página 5... hace ambas cosas a menos que esté entendiendo mal tu pregunta.

edit: específicamente los siguientes fragmentos de código.

Para el tickvalue usando el archivo de inclusión titulado "Analizar el símbolo de la moneda 2010.06.07.mqh" usted debería

1. llamar a la función int SymbolType()

int CalculatedSymbolType=SymbolType();

2. llamar a la función CounterPairForCross()

string CalculatedCounterPairForCross=CounterPairForCross();


3. entonces calcularía el tickvalue a precio de mercado actual para el 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 el apalancamiento utilizando el archivo de inclusión titulado "Analizar el símbolo de la moneda 2010.06.07.mqh" usted debería

1. llamar a la función int SymbolType()
int CalculatedSymbolType=SymbolType();

2. llamar a la función BasePairForCross()

string CalculatedBasePairForCross=BasePairForCross();


3. luego calcularía el apalancamiento específico del símbolo al precio actual del mercado para el símbolo llamando a SymbolLeverage():

int   CalculatedLeverage=SymbolLeverage();   // Leverage for USDJPY is set to 100:1
Print("Leverage for ",Symbol()," is set at ",CalculatedLeverage,":1");
 
cameofx:
Siento discrepar Gordon, MODE_TICKSIZE está en puntos -- Punto(s) para ser precisos. MODE_TICKSIZE siempre será un múltiplo X de Punto. Ya sea 1, 2, 5, 35 etc. [...]
Esto parece una cuestión de semántica... La convención común establece que cuando decimos que un 'valor está en x', queremos decir que x es la 'unidad' utilizada. En este caso Punto no es la unidad utilizada, por lo que MODE_TICKSIZE no está en Puntos. Estoy de acuerdo en que es un múltiplo de Point, pero eso es sólo porque Point es el cambio de precio más pequeño posible, así que por definición debe ser un múltiplo de Point.
Razón de la queja: