Y hagamos una "caricatura" de ello (multidivisa) - página 4

 
rid писал(а) >>

tal vez uno de estos servirá, -

La función PriceOpenLastPos().
Esta función devuelve el precio de apertura de la última posición abierta. La selección de las posiciones a tener en cuenta se especifica mediante parámetros externos:
sy - Nombre del instrumento de mercado. Si se establece este parámetro, la función sólo tendrá en cuenta las posiciones del símbolo especificado. El valor por defecto - "" significa cualquier instrumento de mercado. El valor nulo significa el instrumento actual.
op - Operación comercial, tipo de posición. Valores válidos: OP_BUY, OP_SELL o -1. El valor por defecto -1 significa cualquier posición.
mn - Identificador de posición, MagicNumber. El valor por defecto -1 significa cualquier identificador.

https://forum.mql4.com/ru/11287/page24

Gracias, lo probaré, ¿esta función también funciona en el indicador?

 

No puedo decirlo. Al fin y al cabo, el indicador no abre posiciones. ¿Por qué el indicador necesita el precio de las posiciones abiertas o cerradas?

Tiene otras tareas.

Creo que también funcionará en el indicador.

 
rid писал(а) >>

No puedo decirlo. Al fin y al cabo, el indicador no abre posiciones. ¿Por qué el indicador necesita el precio de las posiciones abiertas o cerradas?

Tiene otras tareas.

Creo que también funcionará en el indicador.

¿Sabes cómo insertar esta función en el indicador correctamente?

Al compilar, el editor genera un error en el primer corchete y en las siguientes variables.

double PriceOpenLastPos( string sy="", int op=-1, int mn=-1) {
datetime t;
doble r=0;
int k=Total de pedidos();

if (sy=="0") sy=Símbolo();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==sy || sy==") {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
si (t<OrderOpenTime()) {
t=OrderOpenTime();
r=Precio de apertura del pedido();
}
}
}
}
}
}
}
return(r);
}
}

'(' - definición de la función inesperada D:\MT4\experts\indicators\Astrea.mq4 (627, 24)
'sy' - variable no definida D:MT4\experts\indicators\Astrea.mq4 (632, 7)
etc.

 

Es difícil de decir. No soy especialista en índices.

Y no entiendo por qué el precio de apertura de la orden debe ser considerado en el indicador.

¿Está seguro de que este indicador concreto es necesario para sus fines?

Tal vez, sería más fácil implementar las funciones que necesita en un EA separado que tenga en cuenta las órdenes?

 
rid писал(а) >>

Es difícil de decir. No soy especialista en índices.

Y no entiendo por qué el precio de apertura de la orden debe ser considerado en el indicador.

¿Está seguro de que este indicador concreto es necesario para sus fines?

¿Quizás sería más fácil implementar las funciones necesarias en un EA separado que considere las órdenes?

Implemento la lógica de generación de señales de trading en un indicador y envío la señal generada al EA a través de una variable global para abrir/cerrar órdenes.

Necesito el precio abierto de una orden para tomar algunas decisiones y por eso estoy tratando de resolver este problema. Tengo un indicador dinámico, sólo se puede depurar en una demo o en un probador en modo de visualización.

 

Ahora he insertado esta función en el primer pavo que encontré (ATR) y todo se ha cumplido.

(1 advertencia solamente, como debería).

¿Y en qué parte del código se inserta esta función? Debe insertarse al final del código, fuera de la función START.

Y luego, en la función START llámala para calcular tu

 
rid писал(а) >>
Acabo de pegar esta función en el primer pavo disponible (ATR) y todo se ha cumplido.

¿Cómo se insertó? ¿Todo el texto anterior uno a uno, o como una subfunción vacía?

 
Uno a uno.
 
rid писал(а) >>
>> Uno a uno.

Es extraño, me da errores cuando compilo.

 
rid писал(а) >>

Ahora he insertado esta función en el primer pavo que encontré (ATR) y todo se ha cumplido.

(1 advertencia solamente, como debería).

¿Y en qué parte del código se inserta esta función? Debe insertarse al final del código, fuera de la función START.

Debe llamarlo en la función START para hacer los cálculos.

Lo hice, lo inserté fuera de la función de inicio y la compilación pasó.

>> Gracias.

Razón de la queja: