Consulta de fórmula para programadores

Foro dedicado a todo lo relacionado con la versión 4 de la plataforma de Metaquotes.
Responder
isp00rt
Mensajes: 24
Registrado: 17 Ene 2015 16:17

Consulta de fórmula para programadores

Mensaje 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.
Avatar de Usuario
X-Trader
Administrador
Mensajes: 12800
Registrado: 06 Sep 2004 10:18
Contactar:

Re: Consulta de fórmula para programadores

Mensaje 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
"Los sistemas de trading pueden funcionar en ciertas condiciones de mercado todo el tiempo, en todas las condiciones de mercado en algún momento del tiempo, pero nunca en todas las condiciones de mercado todo el tiempo."
isp00rt
Mensajes: 24
Registrado: 17 Ene 2015 16:17

Re: Consulta de fórmula para programadores

Mensaje 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.
Última edición por isp00rt el 10 Ago 2023 17:37, editado 1 vez en total.
Avatar de Usuario
cdtrader
Mensajes: 588
Registrado: 28 Dic 2016 17:04

Re: Consulta de fórmula para programadores

Mensaje 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
Imagen
Avatar de Usuario
cdtrader
Mensajes: 588
Registrado: 28 Dic 2016 17:04

Re: Consulta de fórmula para programadores

Mensaje 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);

}
Imagen

isp00rt
Mensajes: 24
Registrado: 17 Ene 2015 16:17

Re: Consulta de fórmula para programadores

Mensaje 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.
Avatar de Usuario
cdtrader
Mensajes: 588
Registrado: 28 Dic 2016 17:04

Re: Consulta de fórmula para programadores

Mensaje 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.
Imagen
isp00rt
Mensajes: 24
Registrado: 17 Ene 2015 16:17

Re: Consulta de fórmula para programadores

Mensaje por isp00rt »

De acuerdo. Lo probaré. Muchas gracias.
isp00rt
Mensajes: 24
Registrado: 17 Ene 2015 16:17

Re: Consulta de fórmula para programadores

Mensaje 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:
Avatar de Usuario
cdtrader
Mensajes: 588
Registrado: 28 Dic 2016 17:04

Re: Consulta de fórmula para programadores

Mensaje 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);

}
Imagen
isp00rt
Mensajes: 24
Registrado: 17 Ene 2015 16:17

Re: Consulta de fórmula para programadores

Mensaje 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:
Avatar de Usuario
cdtrader
Mensajes: 588
Registrado: 28 Dic 2016 17:04

Re: Consulta de fórmula para programadores

Mensaje por cdtrader »

piensa como seria la ecuacion para calcular lo que quieres y lo veo
Imagen
isp00rt
Mensajes: 24
Registrado: 17 Ene 2015 16:17

Re: Consulta de fórmula para programadores

Mensaje 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.
isp00rt
Mensajes: 24
Registrado: 17 Ene 2015 16:17

Re: Consulta de fórmula para programadores

Mensaje por isp00rt »

¿Alguna sugerencia?
Si te ha gustado este hilo del Foro, ¡compártelo en redes!


Responder

Volver a “Metatrader 4”