Pregunta para los entendidos - página 11

 
Urain >> :

Software Acronis True Imidge para crear y restaurar copias de seguridad . Haz una copia de seguridad de tu disco C.

Haga una copia de seguridad y el sistema estará como cuando se creó.

El tiempo de respaldo es de 4 minutos.

Gracias a ti también.

 
rid >> :

>> Gracias también.

Estimado rid, podría ayudarme con una pregunta aquí) https://forum.mql4.com/ru/15972/page145

 
MQLBankir >> :
¡Buenos días!
Sólo he estado escribiendo EAs durante el primer mes.
Los más sencillos los tengo resueltos: recibes una señal - abres una posición. ¿Y si necesito varias señales?
Por ejemplo.
La primera señal de un indicador
La segunda señal viene después, pero la primera condición ya es FALSA. Entiendo que el programa se ejecuta cada tick, pero necesito recordar que la primera condición (señal) es verdadera y no se cancela todavía.
Estaba pensando en escribirlo en un archivo. Pero todavía no lo entiendo bien.
¿Quizás haya otra salida, a través de una función o algo más?
Por favor, avisa.

No soy muy bueno en eso.

Pero supongo que si después de la 1ª señal se "cuelga" la bandera, que se cuelgue.

Incluso si la primera señal ya está agotada.

Entonces la 2ª señal dará una señal de apertura sin ningún problema.

Si entiendo bien la pregunta...

 
Infinity >> :

Querido rid, ¿podría ayudarme con una pregunta) https://forum.mql4.com/ru/15972/page145

¿Es ahí donde se pregunta por el cierre? Mira aquí.

'Cerrando posiciones'. A la señal de un indicador".

//------------------------

Yo, en su momento, me metí en el tema allí.

Pero en el código que has publicado - es difícil de entender allí y no veo ninguna sección de cierre en absoluto.

Aquí tienes un ejemplo de bloque de cierre para ti:

//********* Закрытие позиций ****************************************
if ( AutoClose) { //если выключатель закрытия включен 
//----переменные для закрытия позиций ----
double Stochast_0 =iStochastic(NULL,0, Stochastic_period,3,3,MODE_SMA,0,MODE_MAIN,0);
double Stochast_1 =iStochastic(NULL,0, Stochastic_period,3,3,MODE_SMA,0,MODE_MAIN,1);
//----------------------------------------------------------------------
  for (int v=0; v<OrdersTotal(); v++)                             {       
      if (OrderSelect( v, SELECT_BY_POS, MODE_TRADES))               {           
        if (OrderSymbol()==Symbol()&& OrderMagicNumber()== MagicNum)   { 
//-----------------------------------------------------                  
if (OrderType() == OP_BUY) { 
      if( Stochast_1>75 && Stochast_0<75)     {
           OrderClose(OrderTicket(),OrderLots(),Bid,3,Green); // закрываем позицию
                 //return(0); // выходим
                }       
     }  
 //--------------------------------------------------------
if (OrderType() == OP_SELL) { 
      if( Stochast_1<25 && Stochast_0>25)    {
                 OrderClose(OrderTicket(),OrderLots(),Ask,3,Green); // закрываем позицию
                // return(0); // выходим
                }       
     }  
 //-------------------------------------------------------                       
    }  // Symbol()  
  } // select
 } //total
} //Close_
 
rid >> :

No soy realmente un experto en esto.

Pero se supone que si después de la 1ª señal se "cuelga" la bandera, entonces que se cuelgue.

Incluso si la primera señal ya está agotada.

Entonces la 2ª señal dará una señal de apertura sin ningún problema.

Si entiendo bien la pregunta...



si la segunda señal viene después de la primera, ..... y sólo así, pero... ¡tal vez al comprobar la 2ª señal para abrir la 1ª señal ya pase de falso a verdadero entonces habrá que terminar el cálculo de la 2ª señal, y proceder al paso de la primera señal !

 
rid >> :

¿Es ahí donde se pregunta por el cierre? Mira aquí.

'Cerrando posiciones'. A la señal de un indicador".

//------------------------

Yo, en su momento, me metí en el tema allí.

Pero en ese código, que has publicado - es difícil de entender allí y no veo la sección de cierre en absoluto.

Bueno, no está ahí, .... No puedo obtener el número de una orden abierta para cerrar la orden, me sigue dando un error... aunque el número se encuentre a través de otras funciones.

 

Mira arriba. He añadido un ejemplo allí.

Sólo que en lugar de MagicNum insertas tu mn

En los parámetros externos añada

extern bool AutoClose = true;

 
rid >> :

Sólo que en lugar de MagicNum insertas tu mn

En los parámetros externos añada

extern bool AutoClose = true;

>> Sí, sí, gracias, lo tengo).

 
Infinity >> :

Bueno, no está ahí, .... No puedo obtener el número de una orden abierta para cerrarla, sigue mostrando un error... aunque se encuentre el número a través de otras funciones.

Intente seleccionar la orden por posición: la función da un ticket t posición de la orden en la lista de las órdenes de negociación.

int Select_POS(int t)
{//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
if(OrderSelect( t, SELECT_BY_POS, MODE_TRADES)) TIC[ t]=OrderTicket();
else TIC[ t]=-1;
return( TIC[ t]);
}//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
t = OrdersTotal() y disminuye con cada pedido procesado.
 
Urain >> :

Pruebe a seleccionar una orden por posición: la función da la posición del ticket t de la orden en la lista de órdenes comerciales.

t = OrdersTotal() y disminuye con cada pedido procesado.


Gracias por la ayuda! ¡¡¡Eso probablemente también funcionaría!!! Me aseguraré de comprobarlo.

El código de cierre funcionó.... Ahora todo funciona, el problema estaba realmente en la definición de la orden abierta. Gracias de nuevo a todos.

Razón de la queja: