[¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti. - página 149

 

Aquí respondí recientemente a una pregunta análoga.

https://www.mql5.com/ru/forum/109048/page11

-Busca.

En tu caso, probablemente podrías hacer lo siguiente:

if ( AutoClose) { //если выключатель закрытия включен 

//----------------------------------------------------------------------
  for (int v=0; v<OrdersTotal(); v++)                             {       
      if (OrderSelect( v, SELECT_BY_POS, MODE_TRADES))               {           
        if (OrderSymbol()==Symbol()&& OrderMagicNumber()== MagicNum)   { 
//-----------------------------------------------------                  
if (OrderType() == OP_BUY) { 
      
           OrderClose(OrderTicket(),OrderLots(),Bid,3,Green); // закрываем позицию
                 //return(0); // выходим
                }       
      
 //--------------------------------------------------------
if (OrderType() == OP_SELL) { 
     
                 OrderClose(OrderTicket(),OrderLots(),Ask,3,Green); // закрываем позицию
                // return(0); // выходим
                }       
   
 //-------------------------------------------------------                       
    }  // Symbol()  
  } // select
 } //total
} //Close_
 

Señores, por favor, expliquen la diferencia entre

NormalizeDouble(High[iHighest(NULL,0,MODE_HIGH,10,0)],4)
de
NormalizeDouble(High[iHighest(NULL,0,MODE_HIGH,iBarShift(NULL,0,Time[1],FALSE),1)] + 10 * Point,4)

No entiendo qué es y qué hace iBarShift

 
rid >> :

Aquí respondí recientemente a una pregunta análoga.

Una pregunta para los entendidos".

-Ver esto.

En tu caso, probablemente podrías hacer lo siguiente:


¡Gracias, rid!

A mí me funcionó, lo hice así.

   if (( Close_P)&& TimeCurrent()>=StrToTime( CloseHour+":00")){  // даже по времени сделал
   int slippage=3;
   for (int i=OrdersTotal()-1; i>=0; i--)
   {
    if (!OrderSelect( i, SELECT_BY_POS, MODE_TRADES)) break;
    if (OrderType()==OP_BUY ) OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID), slippage);
    if (OrderType()==OP_SELL) OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK), slippage);
    }
    }


 
Dimoncheg >> :

Señores, ¿podrían explicar la diferencia entre

de

No entiendo qué es y qué hace iBarShift

int iBarShift( string symbol, int timeframe, datetime time, bool exact=false)
Buscar un bar por tiempo. La función devuelve el desplazamiento de la barra a la que pertenece la hora especificada. Si no hay ninguna barra para el tiempo especificado (un "agujero" en el historial), la función devuelve, dependiendo del parámetro exacto, -1 o el desplazamiento de la barra más cercana.
Parámetros:
símbolo - Nombre del símbolo del instrumento. NULL significa símbolo actual.
marco temporal - Período. Puede ser uno de los marcos temporales de un gráfico. 0 significa el período del gráfico actual.
tiempo - Valor del tiempo a buscar.
exacto - Valor devuelto si no se encuentra ninguna barra. FALSE - iBarShift devuelve lo más cercano. TRUE - iBarShift devuelve -1.
 
1Rakso >> :
int iBarShift(string symbol, int timeframe, datetime time, bool exact=false)
Búsqueda de barras por tiempo. La función devuelve el desplazamiento de la barra a la que pertenece la hora especificada. Si no hay ninguna barra para el tiempo especificado (un "agujero" en el historial), la función devuelve -1 o el desplazamiento de la barra más cercana, dependiendo del parámetro exacto.
Parámetros:
símbolo - Nombre del símbolo del instrumento. NULL significa símbolo actual.
marco temporal - Período. Puede ser uno de los marcos temporales de un gráfico. 0 significa el período del gráfico actual.
tiempo - Valor del tiempo para la búsqueda.
exacto - Valor devuelto si no se encuentra ninguna barra. FALSE - iBarShift devuelve lo más cercano. TRUE - iBarShift devuelve -1.

He leído la referencia, pero no entiendo lo que dice: "La función devuelve el desplazamiento de la barra", ¿qué significa? Si he leído la primera, significa simplemente el número de velas y la segunda significa algún desplazamiento. Creo que necesito el máximo más cercano después de algunas condiciones, el primer caso no funcionará porque puede que no vea un máximo de 10 barras (y puede que tampoco vea un máximo de 20 o 30), ¿cómo debería describirlo correctamente (el máximo más cercano por ejemplo después de cruzar 2 Mascos)?

 
Dimoncheg >> :

He leído la ayuda, pero no entiendo lo que dice: "La función devuelve el desplazamiento de la barra", ¿qué significa? Si he leído la primera, significa simplemente el número de velas, y la segunda significa algún desplazamiento. Creo que necesito el máximo más cercano después de algunas condiciones, el primer caso no funcionará porque puede que no vea un máximo de 10 barras (y puede que tampoco vea un máximo de 20 o 30), ¿cuál es la forma correcta de hacerlo (el máximo más cercano después de cruzar 2 Mascos)?

ibarshift muestra en qué barra desde el principio del gráfico la n-ésima vez

 
Dimoncheg >> :

Lo he leído, pero no entiendo lo que dice: "La función devuelve el desplazamiento de la barra", ¿qué significa? Si he leído la primera, significa simplemente el número de velas, pero la segunda significa algún desplazamiento. Creo que necesito el máximo más cercano después de algunas condiciones, el primer caso no funcionará porque puede que no vea un máximo de 10 barras (y puede que tampoco vea un máximo de 20 o 30), ¿cuál será la forma correcta de hacerlo (el máximo más cercano por ejemplo después de cruzar 2 Mascos)?

Si le das tiempo, recibes un regalo.

Supongamos que se conoce el tiempo de la barra cero.

Algunos eventos han pasado,

La situación ha cambiado, y quiere comprobar la posición de la barra con este tiempo en comparación con la barra cero.

Aquí es donde necesitas esta función.

 

Dimoncheg

Yo mismo soy cliente de esta sección)

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

Tengo otra pregunta, ¿cómo dividir la viga ZZ por la mitad para calcular su nivel y hacer una fijación en este nivel?


   double ind1. up = iCustom(Symbol(), PERIOD_H1, "ZigZag_NK", ZZ_Depth1, 5, 3, 0, 0);
   double ind1. dn = iCustom(Symbol(), PERIOD_H1, "ZigZag_NK", ZZ_Depth1, 5, 3, 1, 0);
   if ( ind1. up != EMPTY_VALUE  ) ind1. arr_1 =- 1;
	else if ( ind1. dn != EMPTY_VALUE )   ind1. arr_1 = 1;  
   

   if (( Close_P)&& ind. arr_1 /2*Point){   // как вписать формулу что я не так делаю? 
   
   int slippage=3;
   for (int i=OrdersTotal()-1; i>=0; i--)
   {
    if (!OrderSelect( i, SELECT_BY_POS, MODE_TRADES)) break;
    if (OrderType()==OP_BUY ) OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID), slippage);
    if (OrderType()==OP_SELL) OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK), slippage);
    }
    }
 
Mi indicador dentro del código se reinicia, necesito saber el estado antes y después para poder comparar. ¿Cuál es la mejor manera de aplicar este proceso?
 
1Rakso >> :

Dimoncheg

Yo mismo soy cliente de esta sección)

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

Tengo otra pregunta, ¿cómo dividir la viga ZZ por la mitad para calcular su nivel y hacer una fijación en este nivel?


El zigzag no se calcula en el último punto. Por regla general, tampoco se puede arreglar a este nivel.