Errores, fallos, preguntas - página 276

 

Muchas gracias por su rapidez)

 

Sobre el tema. Casi lo tengo, pero COUNTER no se inicia en el registro de la terminal dice


eliminado

cargado con éxito


¡¡¡Funcionó!!!
 

tienes un error aquí.

   v161_handle=iCustom(NULL,0,"ErolМТ5");                            
   v162_handle=iCustom(NULL,0,"ErolМТ5");
   Sum_handle=iCustom(NULL,0,"ErolМТ5");
En este caso, las tres variables tendrán el mismo manejador. ya que está llamando al mismo indicador tres veces.
 
sergey1294:

tiene un error aquí

En este caso, las tres variables tendrán el mismo manejador, porque estás llamando al mismo indicador tres veces.

Sí, pero según entiendo, los valores de las líneas de índice del indicador (los valores de las 3 líneas)

lo conseguimos:

CopyBuffer(v161_handle,1,0,3,Spr1Buffer)
CopyBuffer(v162_handle,2,0,3,Spr2Buffer)
CopyBuffer(Sum_handle,4,0,3,SumBuffer)

aquí 1, 2 y 4 son los valores de índice de las líneas indicadoras, que se almacenan en el buffer,

que luego comparamos entre sí.

Pero eso no es un problema, no se calcula correctamente con estos índices de líneas indicadoras

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Линии индикаторов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Линии индикаторов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Линии индикаторов - Документация по MQL5
 

¿Algún consejo sobre dónde ir o qué hacer aquí?


void OnTick()
{  
   ArraySetAsSeries(Spr1Buffer,true);
   ArraySetAsSeries(Spr2Buffer,true);
   ArraySetAsSeries(SumBuffer,true);

   if(CopyBuffer(v161_handle,1,0,3,Spr1Buffer)<0 || CopyBuffer(v162_handle,2,0,3,Spr2Buffer)<0 || CopyBuffer(Sum_handle,4,0,3,SumBuffer)<0)
      {
      Alert("Ошибка копирования буферов индикатора номер ошибки:",GetLastError());
      }
   bool SellSpr1 =(Spr1Buffer[1] > Spr2Buffer[1]);
   bool SellSum1 =(SumBuffer[1]>=Sp);
   if(SellSpr1 && SellSum1 && !PositionSelect(_Symbol))     
      {
        PositionOpenSell1();
      }
   bool BuySpr1 =(Spr1Buffer[1] < Spr2Buffer[1]);
   bool BuySum1 =(SumBuffer[1]>=Sp);
   if(BuySpr1 && BuySum1 && !PositionSelect(_Symbol))     
      {
        PositionOpenBuy1();
      }
 
alexluek:

Sí, pero según entiendo, los valores de las líneas de índice del indicador (valores de las 3 líneas)

lo conseguimos:

aquí 1, 2 y 4 son los valores de índice de las líneas indicadoras, que se almacenan en el buffer,

que luego comparamos entre sí.

Pero no es un problema, no calcula correctamente según estos índices de líneas indicadoras

Basta con cargar una copia del indicador y direccionar los índices del buffer necesarios a través del buffer de copia
 
sergey1294:
Basta con cargar una copia del indicador, y dirigir el índice del buffer deseado a través del copybuffer

no, no puedo obtener los valores de la segunda línea

ya que se comparan los valores de 2 índices de línea almacenados en diferentes buffers.


   bool SellSpr1 =(Spr1Buffer[1] > Spr2Buffer[1]);
 
alexluek:

Error, no es posible obtener los valores de la 2ª línea

ya que se comparan los valores de 2 índices de línea almacenados en diferentes buffers.


puede haber un error en el propio indicador
 
sergey1294:
puede haber errores en el propio indicador

el indicador lee correctamente

 

Salvar al ahogado es tarea del ahogado.

Puede ser útil para el futuro:

Para llamar a 2 o más líneas de indicadores en un EA para la barra actual

elegir 1 asa y llamar al indicador, luego utilizar el copybuffer para guardar los valores de los índices

y luego trabajar con estos buffers. sergey1294 ¡gracias por la ayuda!

int OnInit()
  {
   v161_handle=iCustom(NULL,0,"LeroyMТ5");                            
   if(v161_handle<0)
     {
      Alert("Ошибка при создании индикаторов: ",GetLastError());
      return(-1);
     }
   return(0);
  }


void OnTick()
{  
   ArraySetAsSeries(Sp1Buffer,true);
   ArraySetAsSeries(Sp2Buffer,true);
   ArraySetAsSeries(Sp3Buffer,true);
   if(CopyBuffer(v161_handle,1,0,1,Sp1Buffer)<0 || CopyBuffer(v161_handle,2,0,1,Sp2Buffer)<0 || CopyBuffer(v161_handle,4,0,1,Sp3Buffer)<0)
      {
      Alert("Ошибка копирования буферов индикатора номер ошибки:",GetLastError());
      return;
      }    
   bool SellSpr1 =( Sp1Buffer[0]> Sp2Buffer[0] && Sp3Buffer[0]>=Sp );
   if(SellSpr1  && !PositionSelect(_Symbol))     
      {
        PositionOpenSell1();
      }
   bool BuySpr1 =( Sp1Buffer[0]< Sp2Buffer[0] && Sp3Buffer[0]>=Sp );
   if(BuySpr1 && !PositionSelect(_Symbol));   
      {
        PositionOpenBuy1();
      }
}     
Razón de la queja: