Página 1 de 1

Consulta de fórmula para programadores

Publicado: 02 Ago 2023 07:40
por isp00rt
Tras un largo tiempo sin aparecer por aquí, estoy de vuelta suplicando ayuda. :oops: Me gustaría que algún programador me proporcionase el pedazo de código que permita el siguiente cálculo:

Variables involucradas que ya sé cómo obtener:
1. La suma de los lotes de todas las operaciones abiertas en ese momento. Variable 'lotes'.
2. Objetivo de profit a obtener, ya sea en pips o en dinero. Variable 'profit' seleccionada manualmente por el usuario.

Objetivo:
Si tengo diversas operaciones abiertas (compras y ventas), así como si se abren de nuevas en el futuro, ¿cómo puedo obtener el precio de cierre de todas ellas en el que se alcanza el objetivo de 'profit'? Me basta con que el valor se almacene en otra variable 'precio'. Obviamente, agradecería la doble versión de la fórmula, una para pips y otra para dinero.

Gracias por adelantado.

Re: Consulta de fórmula para programadores

Publicado: 05 Ago 2023 16:52
por X-Trader
Hola isp00rt,

Aunque creo que más o menos entiendo lo que necesitas, ¿puedes poner un par de ejemplos (uno en pips y otro en dinero)? para poder ver los cálculos que quieres hacer?

Saludos,
X-Trader

Re: Consulta de fórmula para programadores

Publicado: 06 Ago 2023 14:05
por isp00rt
Por supuesto. Tengo en este momento tres operaciones abiertas, dos compras y una venta. La suma de los lotes de las tres (algo que ya sé calcular y almacenar en la variable 'lotes') es 0.75.

Escenario 1. ¿Cuál es el precio del instrumento al que deben cerrar las tres operaciones si el objetivo a conseguir en profit en pips es de 150 (parámetro de entrada 'profit en pips'= 150)?

Escenario 2. Lo mismo pero para un objetivo de 500 € en profit (parámetro de entrada 'profit en pasta'= 500).

Hay que tener en cuenta que se irán abriendo más operaciones en el futuro, con lo que la variables lotes será distinta.

Espero que ahora sea más claro.

Re: Consulta de fórmula para programadores

Publicado: 06 Ago 2023 15:27
por cdtrader
Estoy con el cel ahora , pero básicamente tienes que usar orderselect para elegir cada una de las ordenes abiertas, ahí ver el precio de apertura y la cantidad de lotes , y de ahí recién hacer el calculo.

debes tener en cuenta que existen deslizamientos con lo que por más que sepas el número el valor final puede diferir mucho, sobre todo si son pocos pips de recorrido o muchas ordenes abiertas


Enviado desde mi iPhone utilizando Tapatalk

Re: Consulta de fórmula para programadores

Publicado: 07 Ago 2023 16:22
por cdtrader
aqui esta:
void OnStart()
{
//---
double precio_medio=0;
double lotes=0;
int i=0;
for(i=0;i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
lotes=lotes+OrderLots();
if(OrderType()==OP_BUY) precio_medio=precio_medio+OrderOpenPrice()+(pips*Point);
if(OrderType()==OP_SELL) precio_medio=precio_medio+OrderOpenPrice()-(pips*Point);

}
precio_medio=precio_medio/i;
Alert("lotes= "+lotes+ " precio objetivo = "+precio_medio);

}

Re: Consulta de fórmula para programadores

Publicado: 08 Ago 2023 08:21
por isp00rt
Hasta donde entiendo, lo que calculas es el precio medio de las operaciones abiertas, ¿verdad? En realidad lo que necesito es el precio objetivo en función de los parámetros de entrada que especifiqué más arriba.

Re: Consulta de fórmula para programadores

Publicado: 08 Ago 2023 14:24
por cdtrader
isp00rt escribió: 02 Ago 2023 07:40
Objetivo:
Si tengo diversas operaciones abiertas (compras y ventas), así como si se abren de nuevas en el futuro, ¿cómo puedo obtener el precio de cierre de todas ellas en el que se alcanza el objetivo de 'profit'? Me basta con que el valor se almacene en otra variable 'precio'. Obviamente, agradecería la doble versión de la fórmula, una para pips y otra para dinero.

Gracias por adelantado.
lo que hace el codigo es tomar el precio de apertura de cada orden, sumarle o restarle (depende si es buy o sell) los pips que uno decida (por defecto esta 150 pips) y te va a decir a que precio tienes que cerrar todas las ordenes para que te de 150 pips de promedio por orden.

es decir, quiza haya una orden a 200 pips que se compence con otra que esta a 100, o una a 300 pips que se compense con una que esta con el sentido opuesto.

Re: Consulta de fórmula para programadores

Publicado: 10 Ago 2023 08:36
por isp00rt
De acuerdo. Lo probaré. Muchas gracias.

Re: Consulta de fórmula para programadores

Publicado: 10 Ago 2023 17:26
por isp00rt
Ya la he probado y confirmo que funciona perfecto para el escenario 1. Muchas gracias. ¿Serías tan amable de ayudarme ahora con el escenario 2, por favor? :roll:

Re: Consulta de fórmula para programadores

Publicado: 10 Ago 2023 18:41
por cdtrader
fijate asi:
void OnStart()
{
//---
double precio_medio=0;
double lotes=0;
int i=0;
double ganancia_por_operacion=ganancia/OrdersTotal();

for(i=0;i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
int pips_para_ganancia=ganancia_por_operacion/(OrderLots()*MarketInfo(Symbol(),MODE_TICKVALUE));
Alert(OrderOpenPrice()+(pips_para_ganancia*Point));
lotes=lotes+OrderLots();
if(OrderType()==OP_BUY) precio_medio=precio_medio+OrderOpenPrice()+(pips_para_ganancia*Point);
if(OrderType()==OP_SELL) precio_medio=precio_medio+OrderOpenPrice()-(pips_para_ganancia*Point);

}
precio_medio=precio_medio/i;
Alert("lotes= "+lotes+ " precio objetivo = "+precio_medio);

}

Re: Consulta de fórmula para programadores

Publicado: 15 Ago 2023 11:34
por isp00rt
Lo he probado y me temo que no funciona correctamente. Cuando todas las operaciones abiertas son sólo compras o sólo ventas va bien. También cuando sólo hay dos operaciones abiertas en sentido contrario va bien. En cambio cuando hay 3 más abiertas y en ambos sentidos, el cálculo final obtenido es erróneo. ¿Serías tan amable de echarle otro vistazo, porfa? :oops: :roll:

Re: Consulta de fórmula para programadores

Publicado: 15 Ago 2023 14:29
por cdtrader
piensa como seria la ecuacion para calcular lo que quieres y lo veo

Re: Consulta de fórmula para programadores

Publicado: 17 Ago 2023 22:21
por isp00rt
Pues la idea que tengo en mente es la siguiente:

1. Sé el target en dinero que quiero conseguir en dinero porque es un parámetro de entrada (Profit).
2. Un primer cálculo a base de loop es saber el valor en dinero de cada pip en este momento. Como puedo tener varias operaciones abiertas a la vez de compra y venta con lotes distintos, se puede saber lo que proporciona en dinero un pip en estas condiciones.
3. Sabiendo el valor de ese pip, el segundo cálculo sería obtener cuántos pips son necesarios para conseguir el profit desde el precio actual.
4. Habiendo obtenido esa distancia en pips, se la suma al nivel del precio actual y así se obtiene el nivel de precio objetivo para el profit deseado.

El loop del punto dos calcularía de forma automática cualquier nueva apertura o cierre de operaciones, con lo que el valor del pip estaría actualizado en tiempo real.

Espero haberme explicado bien.

Re: Consulta de fórmula para programadores

Publicado: 31 Ago 2023 11:09
por isp00rt
¿Alguna sugerencia?