[¡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 603

 
41ckm39fi:
He eliminado todo lo relacionado con PrevSignal pero el mensaje no aparece.

No vi el elefante en la habitación...

hacer una inicialización del buffer ya que es un indicador...

#propiedad ventana_del_gráfica_del_indicador

int init(){

IndicatorBuffers(2);

SetIndexBuffer(0,DeMarker_buffer0);

SetIndexBuffer(1,MA_buffer1);

SetIndexStyle(0,DRAW_NONE);

SetIndexStyle(1,DRAW_NONE);

}

eliminar la llamada ArraySetAsSeries... y en

DeMarker_buffer0[i]=iDeMarker(NULL,0,14,1);

poner el último parámetro en lugar de 1 i

 
keekkenen:

No vi el elefante en la habitación...

hacer una inicialización del buffer ya que es un indicador...

#propiedad ventana_del_gráfica_del_indicador

int init(){

IndicatorBuffers(2);

SetIndexBuffer(0,DeMarker_buffer0);

SetIndexBuffer(1,MA_buffer1);

SetIndexStyle(0,DRAW_NONE);

SetIndexStyle(1,DRAW_NONE);

}

eliminar la llamada ArraySetAsSeries... y en

poner el último parámetro en lugar de 1 i


Esto es lo que obtienes:

#property  indicator_level1 0.3
#property  indicator_level2 0.7
#property indicator_chart_window
//---- 
extern int        period_MA            = 5,
                  period_DeMarker      = 14;
//---- 
double            DeMarker_buffer0[],
                  MA_buffer1[],
                  Signal_Buffer2[];       
#define SIGNAL_BAR 1
 //+------------------------------------------------------------------+
int init()
{

IndicatorBuffers(2);

SetIndexBuffer(0,DeMarker_buffer0);

SetIndexBuffer(1,MA_buffer1);

SetIndexStyle(0,DRAW_NONE);

SetIndexStyle(1,DRAW_NONE);

return(0);
  }
  //+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//|   
//+------------------------------------------------------------------+
int start()
  {
  int    i,limit=ArraySize(DeMarker_buffer0);
        
  int    counted_bars=IndicatorCounted();
//----
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
//----
  for(i=limit; i>=0; i--)
  DeMarker_buffer0[i]=iDeMarker(NULL,0,14,i);
//---- 
  for(i=limit; i>=0; i--)
  
  MA_buffer1[i]=iMAOnArray(DeMarker_buffer0,limit,5,0,MODE_LWMA,i);
//----  
                if(MA_buffer1[SIGNAL_BAR] - 0.3 > 0 && 0.3 - MA_buffer1[SIGNAL_BAR+1] >= 0)  
//---- 
                                Alert( "sMA(", Symbol(), ", ", Period(), ")  -  BUY!!!" );
//----
                if(0.7 - MA_buffer1[SIGNAL_BAR] > 0 && MA_buffer1[SIGNAL_BAR+1] - 0.7 >= 0)
//----               
                                Alert("sMA(", Symbol(), ", ", Period(), ")  -  SELL!!!");
                        
   return(0);
  }

Pero me confunde esta línea

MA_buffer1[i]=iMAOnArray(DeMarker_buffer0,limit,5,0,MODE_LWMA,i);

Otros indicadores compuestos escriben Bares en lugar de límite.

 
41ckm39fi:


Esto es lo que salió:

Pero me confunde esta línea

Otros indicadores compuestos escriben Bares en lugar de límite.




Yo también estoy confundido... esta función iMAOnArray(), no estoy seguro de que pueda calcular correctamente el promedio si el segundo parámetro es distinto de 0, es decir, el cálculo sobre todo el array DeMarker_buffer0, mejor poner 0...
 
keekkenen:
Yo también estoy confundido... esta función iMAOnArray(), no estoy seguro de que pueda calcular correctamente el promedio si el segundo parámetro es distinto de 0, es decir, el cálculo sobre todo el array DeMarker_buffer0, mejor poner 0...
¡¡¡Puse Bares en lugar de límite y el programa empezó a dar mensajes!!! Parece que funciona como yo quería. Sólo los mensajes van muchas veces hasta que la barra de señal se cierra.
 
Buenas tardes. Descargué el EA, lo guardé, lo compilé y volví a cargar el terminal. Puedes decirme por qué el EA añadido a MT4 no se adjunta al gráfico. ¿He hecho algo mal?
 
41ckm39fi:

Le receté Bares en lugar de ...

Sólo los mensajes van muchas veces hasta que la barra de señal se cierra.

El 0 sigue siendo correcto...

y traer de vuelta el control del tiempo...

static int  PrevTime = Time[0];
//---- 
if(PrevTime >= Time[0] ) return(0);
//---- 
PrevTime = Time[0];

// а здесь проверяйте условия на алерт
 

Olvidé mencionar que la línea

int    i,limit=ArraySize(DeMarker_buffer0);

He sustituido por

int    i,limit;

y se ha sustituido límite por Bares en la línea

MA_buffer1[i]=iMAOnArray(DeMarker_buffer0,Bars,5,0,MODE_LWMA,i);

Ahora intentaré hacer como dices devolver PrevTime y sustituir el segundo parámetro Bars por 0.

 

Por ejemplo, tengo un Asesor Experto que se ejecuta en mql4.

Cuando lo ejecuto a través de variables externas, establezco algunos valores.

Pregunta: ¿Puedo cambiar en cualquier momento

algunas variables del Asesor Experto durante su funcionamiento (por ejemplo, desde el teclado) y en tal caso, no provocaría un reinicio del Asesor Experto?

 
Jazzz:

Por ejemplo, tengo un Asesor Experto que se ejecuta en mql4.

Cuando lo ejecuto a través de variables externas, establezco algunos valores.

Pregunta: ¿Puedo cambiar en cualquier momento

algunas variables del Asesor Experto durante su funcionamiento (por ejemplo, desde el teclado) y en tal caso, no provocaría un reinicio del Asesor Experto?


Puede hacerlo si utiliza variables de nivel global. Para cambiar sus valores desde el teclado sin apagar el EA, pulse F3 en el terminal.
 
Gracias.