[¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti. - página 826

 

¿No podríamos calcular por separado cada posición abierta posteriormente y luego sumarla? Hay una razón por la que

AccountFreeMarginCheck(sy, op, lot); 

Se le pasa el símbolo, la operación comercial y el lote... Puede calcular el margen de cada posición por separado, decidir las posiciones superpuestas e imprimir el resultado.

Escriba una secuencia de comandos que imprima tanto su cálculo como lo que le devuelve su empresa de corretaje. Y compáralo...

MODE_MARGINHEDGED 31 Margen cobrado en posiciones solapadas por 1 lote


Así que calcula tus lotes. Cuenta el número de lotes solapados por el valor devuelto por MODE_MARGINHEDGED
Cuenta restante no solapada por el valor devuelto por MODE_MARGINREQUIRED

 

He encontrado un problema con MRC. Por ejemplo, cuando quiero ejecutar este código :

double OpPriceF5B = OrderClosePrice()- OrderOpenPrice();

Quiero saber la diferencia entre el precio de apertura y el precio de intercambio.

¿Cómo lo hago?

Estoy tratando de entenderlo así:

for (i=1; i <=OrdersTotal();i++){
    if (OrderSelect(i-1,SELECT_BY_POS)==true){
       if (OrderType()== OP_BUY ){
          if (OrderMagicNumber() == Magic_N_F5){
             double OpPriceF5B = OrderClosePrice()- OrderOpenPrice();
          }
       }      
    }   
}
 

Experimentar con AccountFreeMarginCheck():

- Orden de compra abierta en el terminal

- Saldo: 94919,36 Fondos: 94921,16 Colaterales: 1273,39 Libre: 93647,07 Nivel: 7454,15%

- Pregunto: AccountFreeMarginCheck(Symbol(),OP_BUY,0.1) - da el resto del nivel Libre

- Pregunto: AccountFreeMarginCheck(Symbol(),OP_SELL,0.1) - da el saldo del nivel de Fondos


En general, mi problema no se puede resolver así.

Pero mi pregunta (tarea) es la siguiente: se deben abrir varias órdenes simultáneamente, y deben permanecer abiertas así

el primero - vender con el lote 0.10

el segundo - comprar con el lote 0.26

tercero - vender lote 0,43
cuarto - comprar lote 0,72

El quinto - vender por lote 1,19, etc.

Precio 1,2737, apalancamiento 100, lote mínimo 0,1

Existe la posibilidad de que en algún ciclo de la siguiente colocación de la orden, llegue el Stop Out.

Significa que debemos calcular este peor escenario utilizando la metodología de la DC, por supuesto. Y sacar una conclusión: ¿hasta qué cantidad total de lotes en las órdenes abiertas en el orden especificado podemos llegar sin tener miedo a entrar en un Stop Out? Es decir, "al principio del principio" :) Calcule el margen total de las órdenes que puedan abrirse. De nuevo, el orden de apertura se muestra arriba y el orden de los lotes para cada orden se conoce de antemano.

 
ikatsko:

Experimentar con AccountFreeMarginCheck():

- Orden de compra abierta en el terminal

- Saldo: 94919,36 Fondos: 94921,16 Colaterales: 1273,39 Libre: 93647,07 Nivel: 7454,15%

- Pregunto: AccountFreeMarginCheck(Symbol(),OP_BUY,0.1) - da el resto del nivel Libre

- Pregunto: AccountFreeMarginCheck(Symbol(),OP_SELL,0.1) - da el saldo del nivel de fondos


En general, mi problema no se puede resolver así.

Pero mi pregunta (tarea) es la siguiente: se deben abrir varias órdenes simultáneamente, y deben permanecer abiertas así

el primero - vender con el lote 0.10

el segundo - comprar con el lote 0.26

tercero - vender lote 0,43
cuarto - comprar lote 0,72

El quinto - vender por lote 1,19, etc.

Precio 1,2737, apalancamiento 100, lote mínimo 0,1

Existe la posibilidad de que en algún ciclo de la siguiente colocación de la orden, llegue el Stop Out.

Significa que debemos calcular este peor escenario utilizando la metodología de la DC, por supuesto. Y sacar una conclusión: ¿hasta qué cantidad total de lotes en las órdenes abiertas en el orden especificado podemos llegar sin tener miedo a entrar en un Stop Out? Es decir, "al principio del principio" :) Calcule el margen total de las órdenes que puedan abrirse. Debo repetir que el orden de apertura se muestra arriba y que los tamaños de los lotes de cada orden se conocen de antemano.

Pensemos en ello.

Todo Bai: 0,26 + 0,72 = 0,98.

Todas las ofertas: 0,1+0,43+1,19 = 1,72

Solapado: el número de lotes de Bai es menor que el número de lotes de Venta, por lo que el número de lotes solapado es igual al número de lotes de Bai = 0,98

Lotes de venta unidireccionales restantes: 1,72-0,98 = 0,74

¿Y qué hacemos? Suma Bai's y resta Sell's: -0,1+0,26-0,43+0,72-1,19= -0,74 Si es negativo, entonces tenemos una Venta unidireccional

Para los solapados, tome el valor de MODE_MARGINHEDGED y multiplíquelo por el número de lotes solapados.

Y para los unidireccionales, tomar el valor de MODE_MARGINREQUIRED y multiplicar por MathAbs(cantidad de lotes unidireccionales);

Bueno, y todo lo demás, también, tratar de tener en cuenta ...

ZS. No he pensado mucho aquí - sólo garabateado entre casos - admito omisiones, así que tómalo como un posible curso de acción... :)

 

Así que... la lógica se hace evidente. Gracias. Intentemos comprobarlo ahora.

Por cierto, he hecho un experimento en la DEMO:

primera COMPRA con precio de lote 0,1 1,27339 - mostró Bail=1273,39. Es decir, 0,1 * 1000000 * 1,27339/100.

La segunda VENTA por el lote 0,26 precio 1,27039 - mostró el total de la Fianza=3305,18. Y es muy parecido a esto 0.26*1000000*1.27039/100=3303.01 ??? ¿Raro?

Resulta que el depósito se toma del número máximo de lotes que se solapan con las órdenes abiertas en sentido contrario?

A la espera de que se abra la siguiente compra

 
eugggy:
Buenas tardes a todos. ¿Existe una definición clara del término operador o es como "cuál es el sentido de la vida" (no se puede explicar)?

:) Un operario como tal es un término elástico: también puede ser el operario de una máquina de hacer whisky... :)

Se pregunta en el contexto en el que se quiere conocer el significado de la palabra. Espero que no sea una frase demasiado larga :)

 
eugggy:
Buenas tardes a todos. ¿Existe una definición clara del término operador o es como "cuál es el sentido de la vida" (no se puede explicar)?

=Comando. Ver wikipedia.

https://ru.wikipedia.org/wiki/%D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)

 
ikatsko:

Así que... la lógica tiene sentido. Gracias. Intentemos comprobarlo ahora.

Por cierto, he hecho un experimento en la DEMO:

primera COMPRA con precio de lote 0,1 1,27339 - mostró Bail=1273,39. Es decir, 0,1 * 1000000 * 1,27339/100.

el segundo lote de VENTA 0,26 precio 1,27039 - mostró un total de Fianza=3305,18. Y es muy parecido a esto 0.26*1000000*1.27039/100=3303.01 ??? ¿Raro?

Resulta que el depósito se toma del número máximo de lotes que se superponen a las órdenes abiertas en sentido contrario?

A la espera de que se abra la siguiente compra

Eh... Me gustaría tener tiempo para pensarlo... :) Es una tarea interesante, pero tengo poco tiempo.

Creo que si hay un parecido, pero no una similitud, no es cierto. Es sólo una rareza... :) Intenta calcular la diferencia para el lote máximo...

Por semejante "extrañeza", a los Dezlas les arrancarán las piernas los clientes serios... :)

Tienes que pensar en una dirección diferente...

A la espera de su próximo pedido :)

 
eugggy:
(riendo): (riendo): (como el operador de la máquina de whisky...) Si he entendido bien, el operador (en MQL4 también) es la expresión más pequeña y significativa en el código del programa.... algo así.

О ... madre-mi-abuela... ¿No puedes vivir sin él? ¿De pie en una hamaca? ¿Por qué complicarse la vida?

Léalo aquí... y eso es todo...

 

Sin embargo, cómo a veces las preguntas simples desconciertan :) (Me refiero al operador).

Encontré la definición más accesible (sencilla) en la EEB:

"En informática, una receta... destinado a especificar alguna acción completada..."

Y aquí en la documentación:

"Un operador es una parte de un programa... prescribiendo un determinado orden de conversión de la información".

Así que la función se comporta de la misma manera...

Interesante.