Crear y probar estrategias de arbitraje - página 7

 
pronych:
Muy bien. Ya hablaremos de ello cuando vayas a por las órdenes a límite con estas piernas).
Estoy de acuerdo, será un poco difícil controlar un enjambre de órdenes limitadas ))
 

Voy a iniciar un nuevo tema.

Esta cuestión puede surgir cuando definimos la liquidez para la posición de arbitraje.
¿Cómo recalcular correctamente la liquidez de un par cruzado en unidades de USD en una banda óptima (y por qué)?

1) directamente a través de la mayor en la moneda base
2) a través de la mayor en la moneda cotizada

Ejemplo: El volumen del EURCHF Best Bund es de 2 millones de unidades. Hay que comprobar este volumen en USD. ¿Qué debemos hacer? Miramos el ticker del EURUSD y estimamos cuánto son 2 millones de euros. ¿O bien estimamos el volumen en CHF al tipo de cambio actual y luego utilizamos el tenge en USD/DCHF para determinar el volumen en USD?

 
GaryKa:

Voy a iniciar un nuevo tema.

Esta cuestión puede surgir cuando definimos la liquidez para la posición de arbitraje.
¿Cómo recalcular correctamente la liquidez de un par cruzado en unidades de USD en una banda óptima (y por qué)?

1) directamente a través de la mayor en la moneda base
2) a través de la mayor en la moneda cotizada

Ejemplo: El volumen del EURCHF Best Bund es de 2 millones de unidades. Hay que comprobar este volumen en USD. ¿Qué debemos hacer? Miramos el ticker del EURUSD y estimamos cuánto son 2 millones de euros. ¿O bien estimamos el volumen en CHF al tipo de cambio actual y luego utilizamos el tenge en USD/DCHF para determinar el volumen en USD?

Y a través del valor de la garrapata, ¿no?
 

He visto la solución a través de TickValue. Pero el caso es general (no MT) y además, voy a ser sincero, manipular TickValue me da dolor de cabeza. Me gustaría una explicación sencilla, que fuera fácil de recordar.

Hasta ahora es así:

En las bandas de Ask, tenemos una oferta de venta, por lo que el vendedor tiene la mercancía(moneda base) en stock. Simplemente lo convertimos en otra moneda de cotización (USD). En el lado opuesto del banco de ofertas no tenemos ningún producto disponible para comprar, pero tenemos fondos (en la moneda cotizada). A través de la correspondiente división, vuelva a calcular estos fondos.

Total:

  • para las bandas Ask cuenta (1) manera
  • Para las bandas de licitación calculamos de la siguiente manera (2)
 
Estás bromeando... O no entiendo lo que dices. Entonces, ¿crees que el volumen de 1 lote, por ejemplo, en el EURUSD es igual al volumen de 1 lote en cualquier otro símbolo?
 
GaryKa: ... Entonces, ¿crees que el volumen de 1 lote, por ejemplo, en el EURUSD es igual a 1 lote en cualquier otro símbolo?

Para los pares con la misma moneda base, la comparación por lotes es aceptable, porque las unidades son las mismas. Por ejemplo, los volúmenes para el EURCHF y el EURUSD.


papaklass:

Algunos vendedores EURUSD ASK-band = 2,0 millones, es decir, los vendedores quieren vender 2 000 000 / 100000 = 20 lotes de EUR y comprar 2 000 000 / 136345 = 14,67 lotes de USD.

Otros vendedores de GBPUSD ASK-band = 3,5 millones, es decir, los vendedores quieren vender 3 500 000 / 100000 = 35 lotes de GBP y comprar 3 500 000 / 164349 = 21,3 lotes de USD.

Como resultado tenemos que en este momento quieren comprar 14,67 + 21,3 = 35,97 lotes de USD para el euro y la libra. Se puede calcular cualquier moneda de esta manera.

En este ejemplo tiene pares principales que tienen la misma moneda de cotización. No es aceptable comparar sólo por lotes: 20 lotes de eur y 35 lotes de libra, por lo que hay que convertir y obtener los volúmenes en lotes de USD: 14,67 y 21,3, que ya se pueden comparar.


La pregunta era un poco diferente... ¿Cómo se calcula el volumen de un par cruzado? Muéstrame con o sin lotes. Por ejemplo, ¿cómo comparar el volumen de EURCHF y AUDNZD?

GaryKa: ... ¿Cómo recalcular correctamente la liquidez en la mejor banda de un par cruzado en unidades de USD (y por qué)?
 

Aquí hay otra opción para la posición de arbitraje, para calcular los lotes de cada símbolo para negociar la mayor liquidez posible sin convertir a unidades comunes.

Supongamos que tenemos un arbitraje triangular del tipo A/B, B/C, C/A

1) Empieza desde el primer símbolo hasta el último. Tome el volumen A en el primer par (recuerde como tamaño de orden de A/B) y calcule el volumen B (convierta A en B). Si el volumen obtenido es mayor que el de B/C, pasamos al punto 2. Si es menor, memorizamos este volumen (como tamaño del pedido para B/C), calculamos C, lo comparamos, etc. Hemos llegado con éxito al final de la cadena -> ya tenemos volúmenes para pedidos, salida.

2) Hacer un cambio cíclico (era A/B, B/C, C/A se convirtió en B/C, C/A, A/B ), y volver al punto 1)

 
papaklass: ... Exprese los volúmenes de estas monedas a través de la garantía requerida en la apertura de la posición. Así, obtenga los volúmenes de estas monedas en USD y compárelos.
Buena sugerencia.

Calculemos por nuestra cuenta cuánto margen se nos descontará (debe descontarse) en la moneda de depósito USD si:

- Queremos comprar 1 lote de EURCHF.
Comprar EURCHF es comprar EUR por CHF. No tenemos FEC. Los tomamos prestados o los compramos nosotros mismos (con un apalancamiento de 1:1). En otras palabras, tenemos USD (depósito) y tenemos que comprar CHF (o no comprar si el crédito está disponible en CHF) para comprar EUR. Significa que para comprar EURCHF, tenemos que vender realmente (apalancamiento 1:1) o virtualmente USDCHF (vender USD del depósito, comprar CHF), a un precio de mercado (en el peor de los casos).

- Queremos vender 1 lote de EURCHF.
Vender EURCHF es vender EUR por CHF. No tenemos EUR (no tenemos nada que vender). Los tomamos prestados o los compramos nosotros mismos (con un apalancamiento de 1:1). En otras palabras, tenemos USD (depósito) y tenemos que comprar EUR (o no comprar, si el crédito se nos proporciona en EUR) para comprar CHF. Significa que para vender EURCHF, debemos comprar real (apalancamiento 1:1) o virtualmente EURUSD (vender USD del depósito, comprar EUR), al precio del mercado (en el peor de los casos).

El resultado final:
  • al comprar EURCHF, el margen de crédito en USD debe calcularse utilizando los precios del USDCHF
  • en la venta de EURCHF, el margen de crédito en USD debe calcularse utilizando los precios del EURUSD


Ahora vamos a repasar tu código. En mi opinión, la función carece de un argumento que sea responsable de la dirección de la operación. Tiene la variable marginCurrency, que siempre se define como moneda base. Así que, en consecuencia, el margen tanto para vender como para comprar EURCHF se calcula siempre a través del EURUSD.

   string marginCurrency = StringSubstr( StringTrimLeft( smb ), 0, 3 );

...


   if( calcCurrency == "" ){
      calcCurrency = GetSymbolByCurrencies( marginCurrency, accCurrency );
      mode = true;
     
      if( calcCurrency == "NULL" ){
         calcCurrency = GetSymbolByCurrencies( accCurrency, marginCurrency );
         mode = false;
      }
   }


P.D. Tengo curiosidad por saber hasta qué punto sus cálculos de márgenes coinciden ahora con los cálculos de la MT, sobre todo porque antes se han hecho afirmaciones similares.

 
papaklass:

A juzgar por el silencio, no todo está claro.

Responde con cifras a la pregunta: "¿Cómo se calcula el volumen de un par cruzado? Muéstrame con o sin lotes. Por ejemplo, ¿cómo se comparan los volúmenes en el EURCHF y el AUDNZD?"

Para averiguar la diferencia de lotes, divido los tipos de las principales divisas en el numerador. La moneda de compromiso es la que está en el numerador.

EURUSD / AUDUSD -> 1,36368 / 0,90639 = 1,50451, es decir, el volumen de la posición AUDNZD a abrir debe ser 1,50 veces más que el EURCHF.

¿Por qué dividir las especialidades?

No entiendo este post. Así, contando de esta manera se concluye que el volumen en AUDNZD (en USD) es aproximadamente 1,5 veces mayor que el volumen en EURCHF (en USD). ¿Verdad?

 
papaklass: ... Ahora sobre mi código para el cálculo del margen. Lo he comentado en detalle. ¿No es difícil de leer y entender? El margen se calcula con otra función... Mira el código después del comentario "//recibir el precio actual para la dirección especificada".

papaklass cálmate o vamos a entrar en una discusión. He mirado tu código antes de comentar, ¿has mirado mi comentario? ¿Con cuidado?


Mi queja a su método de cálculo (por el ejemplo del cálculo del EURCHF) .

GaryKa: ... Siempre se calcula la seguridad tanto para vender como para comprar EURCHF a través de EURUSD.

Después del comentario "//fetch the current price for the specified direction" siempre calcula los precios en el mismo símbolo tanto cuando compra como cuando vende , mientras que creo que debe calcularlos en símbolos diferentes (justificación anterior).

   prc = Dbl_If( dir == OP_BUY, MarketInfo( calcCurrency, MODE_ASK ),
                                MarketInfo( calcCurrency, MODE_BID ) );

En el ejemplo del EURCHF, siempre tienes el EURUSD.


P.D. eso era innecesario, lo siento

GaryKa: ... En mi opinión, a la función le falta el argumento que sería responsable de la dirección del comercio ...