Si es de un gráfico diferente, que utilice una variante de la función con un identificador de gráfico.
tampoco hay problema.
Totalmente cierto, pero aún no he necesitado usar un identificador de gráfico y sólo estoy familiarizado teóricamente con él, por eso sugerí la opción de mapear objetos al gráfico actual.
chart_id = 0 no es el TF, es el gráfico actual. Es necesario encontrar el chart_id del gráfico que tiene el objeto deseado. Eso es lo que no hice por falta temporal de necesidad.
¿qué tienen que ver los periodos de TF con el ID del gráfico?
No tengo ni idea de cómo. Por eso intento hacerlo yo y preguntar, ya que he fracasado.
sargazo: describa su tarea, no se oscurezca y ande a tientas. ¿qué necesita exactamente? obtener datos de un objeto? - ObjectGet ¿Qué tiene de malo?
¿Lo preguntas en serio? Ya he escrito 3 veces que necesito obtener los datos de los rectángulos (2 coordenadas de precio y dos coordenadas de tiempo utilizadas para construir los rectángulos) de otros dos timeframes(H4 y D), estando en el tercero(H1).
ObjectGet no es adecuado porque no puede recibir nada de otro marco temporal.
El indicador dibuja rectángulos en todos los timeframes y le he añadido código, transmitirá las coordenadas de los rectángulos de otros timeframes sin cambiar a ellos. No sé cómo explicarlo de otra manera.
No tengo ni idea de cómo. Por eso estoy intentando hacerlo por intuición y preguntando, porque no ha funcionado.
¿Lo preguntas en serio? Ya he escrito 3 veces que necesito obtener los datos del rectángulo (2 coordenadas de precio y dos coordenadas de tiempo para construir los rectángulos) de otros dos timeframes(H4 y D), estando en el tercero(H1).
ObjectGet no es adecuado porque no puedo obtener nada de otro marco temporal con él.
Dibuja rectángulos en todos los timeframes y le estoy añadiendo un código por el que pasará las coordenadas de los rectángulos de otros timeframes sin cambiar a ellos, no sé explicarlo de otra manera.
Sólo hay que entender que otro marco temporal y otro gráfico o cuadro son conceptos diferentes y, por lo tanto, enfoques diferentes para resolver los problemas.
AlexeyVik: Comprender que una TF diferente y un gráfico o carta diferente son conceptos diferentes y, por tanto, enfoques diferentes para resolver problemas.
Por lo tanto, sólo estoy feliz de entender y aceptar cualquier solución, si tengo ideas. Por eso pido consejo sobre cómo aplicarlo.
Gracias. Entendido. Excepto que con el error de OrderSelect, no está claro cómo parar excepto paracontinuar.
Borrado el mensaje de última hora, hizo casi lo mismo que se describe.
A veces se puede combinar el valor de retorno y el signo de error. Cuando tiene sentido tomar algún valor como señal de error. Por ejemplo, un precio medio igual a 0.
Entonces, tan pronto como OrderSelect() devuelve un signo de error, nuestra función devuelve un signo de error a la vez:
#property strict/******************************************************************************/double CenaUsrednenija(constint type,constint Magic){
double nn = 0, bb = 0;
for(int i = OrdersTotal() - 1; i >= 0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if(OrderSymbol() == Symbol() && OrderType() == type && OrderMagicNumber() == Magic)
{
double op = OrderOpenPrice();
double llot = OrderLots();
bb += op * llot;
nn += llot;
Print(" type = ", type, " Цена открытия = ", op, " Лот = ", llot, " itog = op * llot = ", op * llot, " factb = bb / nn = ", bb / nn);
}
} else {
return0; // Цена == 0 - признак ошибки (OrderSelect() не смогла выбрать ордер)
}
}
return nn != 0 ? NormalizeDouble(bb / nn, _Digits) : 0; // Делить на 0 не следует
}
/******************************************************************************/voidOnStart() {
Print("CenaUsrednenija(OP_BUY, 536525) = ", CenaUsrednenija(OP_BUY, 536525));
}
Hazlo por mi cuenta, lo tengo:
23:32:03 Script 1 EURUSD,H1: loaded successfully
23:32:031 EURUSD,H1: initialized
23:32:031 EURUSD,H1: type = 0 Цена открытия = 1.36626 Лот = 0.1 itog = op * llot = 0.136626 factb = bb / nn = 1.3662623:32:031 EURUSD,H1: type = 0 Цена открытия = 1.36931 Лот = 0.1 itog = op * llot = 0.136931 factb = bb / nn = 1.36778523:32:031 EURUSD,H1: CenaUsrednenija(OP_BUY, 536525) = 1.3677923:32:031 EURUSD,H1: uninit reason 023:32:03 Script 1 EURUSD,H1: removed
Parece que es cierto...
Sí, no he utilizado una expresión condicional en Print() para evitar la hipotética división por 0 porque este Print() es de depuración...
Tengo entendido que necesita obtener los parámetros de los objetos de otro gráfico.
Si es de otro gráfico, que utilice la variante de la función con el identificador del gráfico.
tampoco hay problema.
Si es de un gráfico diferente, que utilice una variante de la función con un identificador de gráfico.
tampoco hay problema.
¡Eso es genial! Esa era exactamente la cuestión. ¡Gracias, querido camarada!
Si es de un gráfico diferente, que utilice una variante de la función con un identificador de gráfico.
Tampoco hay problema.
Según entiendo, las únicas opciones son ObjectGetDouble() para el precio y ObjectGetInteger() para la fecha en mi caso.
Intento obtener el precio en el TF actual con chart_id = 0
- valor como debe ser. He probado con ambos ID y valores de aquí https://docs.mql4.com/ru/constants/chartconstants/enum_timeframes en lugar de 0, pero devuelve 0. ¿Cómo debería ser un chart_id "correcto"?
Según entiendo, las únicas opciones son ObjectGetDouble() para el precio y ObjectGetInteger() para la fecha en mi caso.
Estoy tratando de obtener el precio en el TF actual con chart_id = 0
- valor como debe ser. He probado con ambos ID y valores de aquí https://docs.mql4.com/ru/constants/chartconstants/enum_timeframes en lugar de 0, pero devuelve 0. ¿Cómo debería ser un chart_id "correcto"?
Según entiendo, las únicas opciones son ObjectGetDouble() para el precio y ObjectGetInteger() para la fecha en mi caso.
Intentando obtener el precio en la TF actual con chart_id = 0
¿Qué es el 3?
- El valor es como debe ser. He probado con ambos ID y valores de aquí https://docs.mql4.com/ru/constants/chartconstants/enum_timeframes en lugar de 0, pero devuelve 0. ¿Cómo debería ser un chart_id "correcto"?
tienes un agujero irreal en tu comprensión de lo que hay que usar
Describe tu problema, no te pongas demasiado oscuro y rodea la tripa.
¿Qué necesito para recuperar los datos de un objeto?
- ObjectGet ¿Por qué no te ha gustado?
¿Qué es el 3?
El valor del precio del límite inferior del rectángulo. https://docs.mql4.com/constants/objectconstants/enum_object_property
No tengo ni idea de cómo. Por eso intento hacerlo yo y preguntar, ya que he fracasado.
describa su tarea, no se oscurezca y ande a tientas. ¿qué necesita exactamente? obtener datos de un objeto? - ObjectGet ¿Qué tiene de malo?
¿Lo preguntas en serio? Ya he escrito 3 veces que necesito obtener los datos de los rectángulos (2 coordenadas de precio y dos coordenadas de tiempo utilizadas para construir los rectángulos) de otros dos timeframes(H4 y D), estando en el tercero(H1).
ObjectGet no es adecuado porque no puede recibir nada de otro marco temporal.
El indicador dibuja rectángulos en todos los timeframes y le he añadido código, transmitirá las coordenadas de los rectángulos de otros timeframes sin cambiar a ellos. No sé cómo explicarlo de otra manera.
El valor del precio del límite inferior del rectángulo. https://docs.mql4.com/constants/objectconstants/enum_object_property
No tengo ni idea de cómo. Por eso estoy intentando hacerlo por intuición y preguntando, porque no ha funcionado.
¿Lo preguntas en serio? Ya he escrito 3 veces que necesito obtener los datos del rectángulo (2 coordenadas de precio y dos coordenadas de tiempo para construir los rectángulos) de otros dos timeframes(H4 y D), estando en el tercero(H1).
ObjectGet no es adecuado porque no puedo obtener nada de otro marco temporal con él.
Dibuja rectángulos en todos los timeframes y le estoy añadiendo un código por el que pasará las coordenadas de los rectángulos de otros timeframes sin cambiar a ellos, no sé explicarlo de otra manera.
Comprender que una TF diferente y un gráfico o carta diferente son conceptos diferentes y, por tanto, enfoques diferentes para resolver problemas.
Gracias. Entendido. Excepto que con el error de OrderSelect, no está claro cómo parar excepto paracontinuar.
Borrado el mensaje de última hora, hizo casi lo mismo que se describe.
A veces se puede combinar el valor de retorno y el signo de error. Cuando tiene sentido tomar algún valor como señal de error. Por ejemplo, un precio medio igual a 0.
Entonces, tan pronto como OrderSelect() devuelve un signo de error, nuestra función devuelve un signo de error a la vez:
Hazlo por mi cuenta, lo tengo:
Parece que es cierto...
Sí, no he utilizado una expresión condicional en Print() para evitar la hipotética división por 0 porque este Print() es de depuración...