Una pregunta para los conocedores de MQL - página 10

 
Rita:

Oh, todavía estaba pensando :)

Si

if (NumberOfPositions(NULL, OP_BUY,Magic)>=2 && NumberOfPositions(NULL,OP_SELL,Magic)>=2) {
 for{
// а сюда счетчик, по которому 2 раза пройдет
                    ClosePosFirstProfit(NULL,OP_BUY, Magic);
                    ClosePosFirstProfit(NULL,OP_SELL, Magic);
}
}
¿No?

 
Gracias Abzasc, lo probaré.
 
Hola! Hace poco que empecé a aprender a escribir en MQL4 y no entiendo cómo (con qué comando) se puede conectar no un indicador incorporado, sino uno tomado de Code Base a un Expert Advisor? ¿Puede decírmelo, por favor?
 
savage_pinguin:
Hola! Hace poco que empecé a aprender a escribir en MQL4 y no entiendo cómo (con qué comando) se puede conectar no un indicador incorporado, sino uno tomado de Code Base a un Expert Advisor? ¿Puede decírmelo, por favor?

iCustom() para ayudar
 

Por la tarde.

 if  ( Accumulation2MA_1<=MA_1  &&    Accumulation2MA_0>MA_0 )   {
// если линии пересеклись - открываем позицию
   ticket=OrderSend(Symbol(),0,Lot,Ask,Slippage,Bid-SL*Point,Ask+TP*Point,
                                             "Хи-Хи",MagicNum,0,CLR_NONE);
     if(ticket < 0) { Print("Ошибка открытия ордера BUY #", GetLastError()); 
               Sleep(10000);   return (0); }
   }

El Asesor Experto utiliza un indicador personalizado Accumulation2MA, en el que se adjunta el indicador MA en modo iMAOnArray.

Las señales de entrada/salida son el cruce de líneas.

No entiendo cuál es el problema. Pero la mitad de las señales de entrada/salida se ignoran "descaradamente". No hay razón.

Lo mismo al cerrar:

 for (int v=0; v<OrdersTotal(); v++)                             {//сортируем       
      if (OrderSelect(v, SELECT_BY_POS, MODE_TRADES))               {//перебираем           
        if (OrderSymbol()==Symbol()&& OrderMagicNumber()==MagicNum)   {//выбираем 
//-----------------------------------------------------                  
if (OrderType() == OP_SELL) {//если линии пересеклись, то закрываем: 
      if( Accumulation2MA_1<=MA_1  &&    Accumulation2MA_0>MA_0 )   {
                 OrderClose(OrderTicket(),OrderLots(),Ask,3,Green); // закрываем позицию
                 return(0); // выходим
                }   
......

Casi la mitad de las operaciones se pierden de esta manera. ¿Puede decirme qué pasa?

Las condiciones son las más sencillas. ¡Las líneas se mueven claramente! Pero los puestos no siempre están abiertos/cerrados. El diario es "silencioso".

Les mostré con flechas.

//------заполняем массив значениями Accumulation2MA -----------------
double Accumulation2MA[50];
int    i=0;  while (i<50)  {
Accumulation2MA[i]= iCustom(NULL, 0,"Accumulation2MA_v03",SMA,FMA,0, i);
                  i++;     }
//------Вешаем на Accumulation2MA - линию МА ---------------
ArraySetAsSeries(Accumulation2MA,true);
double MA_0 = iMAOnArray(Accumulation2MA,0,MA_Period,0,MODE_SMA,0);
double MA_1 = iMAOnArray(Accumulation2MA,0,MA_Period,0,MODE_SMA,1);
double Accumulation2MA_0=iCustom(NULL, 0,"Accumulation2MA_v03",SMA,FMA,0,0);
double Accumulation2MA_1=iCustom(NULL, 0,"Accumulation2MA_v03",SMA,FMA,0,1);
 
Rita:

Por la tarde.

El Asesor Experto utiliza un indicador personalizado Accumulation2MA, en el que se adjunta el indicador MA en modo iMAOnArray.

Las señales de entrada/salida son el cruce de líneas.

No entiendo cuál es el problema. ¡Pero la mitad de las señales de entrada/salida están "descaradamente" inhabilitadas! No hay razón.

Lo mismo al cerrar:

Casi la mitad de las operaciones se pierden de esta manera. ¿Puede decirme qué pasa?

Las condiciones son las más sencillas. ¡Las líneas se mueven claramente! Pero los puestos no siempre están abiertos/cerrados. El diario es "silencioso".

Los mostró con flechas.

Tal vez esto ocurra al saltarse las garrapatas. Significa que, mientras se ejecuta Start(), llega un nuevo tick (en el que se cumplirían las condiciones), pero se ignora mientras se ejecuta Start().

En el siguiente tic las condiciones no se cumplen: se van.

De hecho, cruzar las líneas indicadoras es una señal muy incómoda, hace mucho tiempo que no la uso. Es mejor restar un indicador de otro y trazar un cruce de cero. Sin embargo, es cuestión de gustos.

 
Rita:

Por la tarde.

El Asesor Experto utiliza un indicador personalizado Accumulation2MA, en el que se adjunta el indicador MA en modo iMAOnArray.

Las señales de entrada/salida son el cruce de líneas.

No entiendo cuál es el problema. ¡Pero la mitad de las señales de entrada/salida están "descaradamente" inhabilitadas! No hay razón.

Lo mismo al cerrar:

Casi la mitad de las operaciones se pierden de esta manera. ¿Puede decirme qué pasa?

Las condiciones son las más sencillas. ¡Las líneas se mueven claramente! Pero los puestos no siempre están abiertos/cerrados. El diario es "silencioso".

Tal vez sea más fácil calcular la segunda línea del indicador. Entonces los problemas deberían desaparecer

 
MetaDriver:

Esto puede ocurrir cuando se saltan las garrapatas. Es decir, mientras se ejecuta Start(), llega un nuevo tick (en el que se habrían cumplido las condiciones), pero se ignora mientras se ejecuta Start().

En el siguiente tick no se cumplen las condiciones - está hecho.

De hecho, cruzar las líneas indicadoras es una señal muy incómoda, hace mucho tiempo que no la uso. Es mejor restar un indicador de otro y controlar el cruce del cero. Es una cuestión de gustos.

¿No es la sustracción y el trazado del paso por cero prácticamente lo mismo que en el ejemplo anterior?

//если линии пересеклись, то закрываем: 
      if( Accumulation2MA_1<=MA_1  &&    Accumulation2MA_0>MA_0 )   {

A primera vista, parece una bofetada en la cara.

¿Qué te hace pensar que el "paso por cero" funcionará mejor?

 
VINAR:

Puede ser más fácil calcular la segunda línea del indicador. Entonces los problemas deberían desaparecer

No entiendo muy bien qué significa "calcular la segunda línea del indicador". ¿Puede explicarlo?

============================

¡Ahora estoy probando de nuevo el Asesor Experto (por cierto, funciona abriendo precios) y me sorprende ver que de momento funciona perfectamente! La omisión de la señal casi ha desaparecido.

¡Y ayer se perdió la mitad de las señales en el mismo mt4! Algún tipo de milagro....

 
Rita:

¿Acaso no es la sustracción y el trazado de un paso por cero prácticamente lo mismo que

A primera vista, ¡está de frente, así como de cabeza!

¿Qué te hace pensar que "cruzar el cero" funcionaría mejor?

En teoría, lo que sea. En la práctica:

1) podemos comprobar fácilmente la diferencia entre la posición de mercado recomendada por el indicador y la posición real en las órdenes. Es decir, el indicador resultante mostrará una curva preparada que puede interpretarse como "positivo/negativo"=="subir/bajar". Es muy conveniente para los sistemas invertidos.

2) Existe la posibilidad de afinar convenientemente la señal (multiplicación por coeficientes, intersecciones con otras líneas de criterio, etc.).

Así que, como he dicho, es cuestión de gustos. :)

Razón de la queja: