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

 
Zolotai:

No tiene nada que ver con el código. Sólo necesito la condición adecuada. La pregunta es, ¿hay alguna manera de saber la hora del bar actual? ¿Cómo puedo saber la hora de un bar?
Time[] y iTime().
 
Zolotai:

No tiene nada que ver con el código. Sólo necesito la condición adecuada. La pregunta es, ¿hay alguna manera de saber la hora del bar actual? ¿Cómo puedo saber la hora del bar?
Time[index_need_bar]; le devolverá la hora de apertura de la barra con el número "index_need_bar". Puede utilizar iTime() para otros símbolos y marcos temporales
 

Cómo obtener una señal en un EA a partir de este indicador

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Blue
#define  SH_BUY   1
#define  SH_SELL  -1
extern int     AllBars=0;
extern int     Otstup=30;
extern double  Per=9;
int            SH,NB,i,UD;
double         R,SHMax,SHMin;
double         BufD[];
double         BufU[];

int init()
{
   if (Bars<AllBars+Per || AllBars==0) NB=Bars-Per; else NB=AllBars;
   IndicatorBuffers(2);
   IndicatorShortName("SHI_SilverTrendSig");
   SetIndexStyle(0,DRAW_ARROW,0,1);
   SetIndexStyle(1,DRAW_ARROW,0,1);
   SetIndexArrow(0,159);
   SetIndexArrow(1,159);
   SetIndexBuffer(0,BufU);
   SetIndexBuffer(1,BufD);
   SetIndexDrawBegin(0,Bars-NB);
   SetIndexDrawBegin(1,Bars-NB);
   ArrayInitialize(BufD,0.0);
   ArrayInitialize(BufU,0.0);
   return(0);
}
int start()
{
   int CB=IndicatorCounted();
   if(CB<0) return(-1); else if(NB>Bars-CB) NB=Bars-CB;
   for (SH=1;SH<NB;SH++)
   {
      for (R=0,i=SH;i<SH+10;i++) {R+=(10+SH-i)*(High[i]-Low[i]);}      R/=55;

      SHMax = High[Highest(NULL,0,MODE_HIGH,Per,SH)];
      SHMin = Low[Lowest(NULL,0,MODE_LOW,Per,SH)];
      if (Close[SH]<SHMin+(SHMax-SHMin)*Otstup/100 && UD!=SH_SELL) { BufU[SH]=Low[SH]-R*0.5; UD=SH_SELL; }
      if (Close[SH]>SHMax-(SHMax-SHMin)*Otstup/100 && UD!=SH_BUY) { BufD[SH]=High[SH]+R*0.5; UD=SH_BUY; }
   }
   return(0);
}

Lo he intentado a través de iCustom pero dice que el valor es 2147483647 cuando se especifica cualquier número de línea o barra ...

 
VOLDEMAR:

Cómo obtener una señal en un EA a partir de este indicador

Lo he intentado a través de iCustom pero dice que el valor es 2147483647 cuando se especifica cualquier número de línea o barra ...

Este valor es EMPTY_VALUE. Está en el buffer del indicador por defecto, si no hay señal. Recorre el búfer y recupera los valores no vacíos.
 

Comprueba sus topes así:

if (Bufer0>0) {               // в double Bufer0 через iCustom() ранее получено значение буфера индикатора 0
   if (Bufer0!=EMPTY_VALUE) {
      // поймали значение в буфере
      }
   }
 
artmedia70:

Comprueba sus topes así:


Vale, lo entiendo, pero podría haber un centenar de valores en el buffer ¿cómo encontrar el último y cómo determinar si el último es una señal de compra o de venta?
 
Lo tengo, gracias.
 
VOLDEMAR:

Vale, lo entiendo, pero puede haber cientos de valores en el buffer, ¿cómo encontrar el último y cómo determinar cuál es el último para comprar señal o vender?

No compilé el código y no miré en MT, pero BufD es el primer buffer azul, BufU es el buffer rojo cero. ¿Qué muestran ahí en la pantalla, puntos azules y rojos? Eso es, ver qué punto de qué color señala qué allí. Y los atrapa en los búferes: rojo en el búfer cero, azul en el primero.

Bueno... Y los valores tienen que ser capturados en la primera barra muy probablemente, no lo vio redibujando o no. O tal vez sea necesario un bucle desde la barra de cero hasta que se encuentre el valor. Todo depende de cómo emita sus señales...

 
¡Hola, me pueden decir por qué no puedo configurar ningún EA en Mt4, todos muestran valores negativos al probar la estrategia!
 
serjlarkin:
¡Hola, me pueden decir por qué no puedo configurar ninguno de los Expert Advisors en Mt4, todos muestran valores negativos cuando pruebo la estrategia!
¿Qué valor negativo?