Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 962

 
rapid_minus:

Por favor, aclárense, estoy totalmente confundido:

He encontrado un script que cierra las órdenes con beneficio o con menos, pero no entiendo la lógica - en las variables externas se establece el bool close_only_profit_orders=false, y luego en el inicio de f-i se comprueba por negación: if(OrderType()==OP_BUY && (!close_only_profit_orders || order_prof>0). Es decir, si no es falso o hay órdenes con beneficio, entonces sigue la función OrderClose(). Pero en ninguna parte del código, no hay condiciones bajo las cuales la variable close_only_profit_orders se convierte en verdadera. Entonces, ¿para qué sirve?


No hay nada que encontrar con esta variable. Esto es un producto de la imaginación del programador; sólo el desarrollador sabe lo que hay en su EA. Sólo puedo especular por qué razón puede ocurrir esto y cómo comprobarlo. Acabo de conocer un EA que estúpidamente cerró todas las órdenes en todos los pares antes de empezar a trabajar. Bueno, eso es un producto de la imaginación del programador. Por lo tanto, si su Asesor Experto funciona como debería, tenemos que buscar dónde se escribió para cerrar las órdenes y por qué razón. Tal vez, diferentes magos ayuden.
 

Por favor, ayude a resolver el problema.

int n1=.....;

int n2=.....;

M1[i]=iMA(NULL,0,n1,n2,MODE_SMA,PRICE_CLOSE,i);

Muestro los valores de n1 y n2 en el comentario, los valores son correctos, pero el ratón no se dibuja correctamente, no en todo el gráfico. Pero si escribo a mano los valores de n1 y n2 en lugar de estas variables, todo se dibuja como debe ser. No entiendo cómo es posible si los valores de las variables son correctos. ¿Cómo puedo hacer que el gráfico se dibuje con un desplazamiento hacia la derecha? Ahora se dibuja sólo hasta la barra cero, es decir, la actual.

 
Alexandr24:

Por favor, ayude a resolver el problema.

int n1=.....;

int n2=.....;

M1[i]=iMA(NULL,0,n1,n2,MODE_SMA,PRICE_CLOSE,i);

Muestro los valores de n1 y n2 en el comentario, los valores son correctos, pero el ratón no se dibuja correctamente, no en todo el gráfico. Pero si introduzco a mano los valores de n1 y n2 en lugar de estas variables, todo se dibuja como debe ser. No entiendo cómo es posible si los valores de las variables son correctos. ¿Cómo puedo hacer que el gráfico se dibuje con un desplazamiento hacia la derecha? Ahora se dibuja sólo hasta la barra cero, es decir, la actual.

Si n1 no es igual al valor del TF, entonces entiendo por qué no se dibuja correctamente. ¡Pero un desplazamiento a la derecha hará que n2 sea más! ¡Comprobado!
 
borilunad:
Si n1 no es igual al valor de TF, entonces entiendo por qué no se dibuja correctamente. Y el desplazamiento a la derecha hará que n2 tenga menos.

No entiendo qué tiene que ver TF con esto, n1 es el periodo de media para calcular el indicador. La idea es que se haga una buena idea de lo que hay que hacer con ella, pero no estoy seguro de lo que hay que hacer con ella.

UPD. he puesto 0 en lugar de n2 y shift se renderiza bien, pero n1 es un poco raro :(

 
double  iMA(
   string       symbol,           // имя символа
   int          timeframe,        // таймфрейм
   int          ma_period,        // период - n1    
   int          ma_shift,         // сдвиг средней - n2
   int          ma_method,        // метод усреднения
   int          applied_price,    // тип цены
   int          shift             // сдвиг
   );

¡Eso es! Yo soy el que se equivocó, pero ¿por qué no iba a funcionar si lo haces bien?

 
borilunad:

¡Eso es! Yo soy el que se equivoca, pero ¿por qué no puede funcionar si lo haces bien?

Sí, a mí también me desconcierta esta paradoja. Si reinicio el terminal, el vagón se renderiza como debería, pero reiniciar cada vez es un inconveniente.

UPD He solucionado el problema pulsando el botón derecho y seleccionando "Refrescar" en el menú, pero si pulso compilar en el código, el dibujo no es perfecto... pero eso es una nimiedad, simplemente refrescaré :))

 
Alexandr24:

A mí también me desconcierta esta paradoja. Si reinicio el terminal, el vagón se dibuja como debería, pero es un inconveniente reiniciar cada vez.

UPD El problema se solucionó haciendo clic con el botón derecho del ratón y seleccionando "Actualizar" en el menú, pero si pulso compilar en el código, el vagón se dibuja incorrectamente... pero eso es un problema menor, simplemente actualizaré :))

Muéstrame el código, no sólo trozos
 

Lo he solucionado yo mismo, gracias por tu aportación :)

 
¡Saludos a todos!
He buscado en el foro y en Internet, pero no lo he encontrado. Por eso tengo una pregunta para ti:

1. Un EA abre (basado en el cruce con la MA) múltiples (3) órdenes de mercado al mismo precio (por ejemplo, COMPRA a 1,1180).

Antes de cruzar la MA, las órdenes eran de Buy Stop.

2. A continuación, el Asesor Experto debe establecer esas tres órdenes Takeprofit a diferentes niveles (se determinan sólo cuando se cruzan con la MA, de acuerdo con el indicador estándar Fibo)

Supongamos que estos niveles son los siguientes:
Ur1 = 1.1200
Ur2 = 1,1220
Ur3 = 1,1240

Y ahora una pregunta:
¿Cómo establecer estos niveles definidos para las órdenes abiertas?

He encontrado una construcción de este tipo en el foro (ver más abajo), pero no se me ocurre nada más. Si no estoy seguro de lo que busco, prefiero tener algunos consejos sobre cómo hacerlo.
¿Necesito otro contador? ¿Pero cómo? O tendré que usar arrays, majicies, o... ????

double Ur1 = 1.1200
double Ur2 = 1.1220  
double Ur3 = 1.1240
for(int i=OrdersTotal()-1;i>=0;i--) 
{
   if(OrderSelect(i, SELECT_BY_TICKET, MODE_TRADES)==false) continue;
   if(OrderSymbol()!=Symbol()) continue;
      if(OrderType()!=0) continue;
                   
   // вот тут мы можем работать с нашим ордером
   
   if (OrderTicket() = ???? );
 
 bool mod_Buy1 = OrderModify ( OrderTicket(???),OrderOpenPrice (), NULL,Ur1,0,clrNONE);
 bool mod_Buy2 = OrderModify ( OrderTicket(???),OrderOpenPrice (), NULL,Ur2,0,clrNONE);
 bool mod_Buy3 = OrderModify (OrderTicket(???),OrderOpenPrice (), NULL,Ur3,0,clrNONE);


}  

 
vadimvborisov:
¿Cómo se colocan las Tres Órdenes abiertas en estos niveles dados?

1. ¿Qué le impide establecer los TP adecuados para las órdenes a medida que se abren?
2. ¿Qué es este mod_Buy1/2/3? - ¿Comprende el propósito del ciclo for anterior?
Razón de la queja: