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

 
No.
 

Esta pregunta: el indicador OA estándar utiliza 2 buffers de índice adicionales, que no intervienen en la representación del indicador:

//+------------------------------------------------------------------+
//|                                                  Accelerator.mq4 |
//|                      Copyright © 2005, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property  copyright "Copyright © 2005, MetaQuotes Software Corp."
#property  link      "http://www.metaquotes.net/"
//---- indicator settings
#property  indicator_separate_window
#property  indicator_buffers 3
#property  indicator_color1  Black
#property  indicator_color2  Green
#property  indicator_color3  Red
//---- indicator buffers
double     ExtBuffer0[];
double     ExtBuffer1[];
double     ExtBuffer2[];
double     ExtBuffer3[];
double     ExtBuffer4[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- 2 additional buffers are used for counting.
   IndicatorBuffers(5);
//---- drawing settings
   SetIndexStyle(0,DRAW_NONE);
   SetIndexStyle(1,DRAW_HISTOGRAM);
   SetIndexStyle(2,DRAW_HISTOGRAM);
   IndicatorDigits(Digits+2);
   SetIndexDrawBegin(0,38);
   SetIndexDrawBegin(1,38);
   SetIndexDrawBegin(2,38);
//---- 4 indicator buffers mapping
   SetIndexBuffer(0, ExtBuffer0);
   SetIndexBuffer(1, ExtBuffer1);
   SetIndexBuffer(2, ExtBuffer2);
   SetIndexBuffer(3, ExtBuffer3);
   SetIndexBuffer(4, ExtBuffer4);
//---- name for DataWindow and indicator subwindow label
   IndicatorShortName("AC");
   SetIndexLabel(1,NULL);
   SetIndexLabel(2,NULL);
//---- initialization done
   return(0);
  }
//+------------------------------------------------------------------+
//| Accelerator/Decelerator Oscillator                               |
//+------------------------------------------------------------------+
int start()
  {
   int    limit;
   int    counted_bars=IndicatorCounted();
   double prev, current;
//---- last counted bar will be recounted
   if( counted_bars>0) counted_bars--;
   limit=Bars- counted_bars;
//---- macd counted in the 1-st additional buffer
   for(int i=0; i& lt; limit; i++)
      ExtBuffer3[ i]=iMA(NULL,0,5,0,MODE_SMA,PRICE_MEDIAN, i)-
                    iMA(NULL,0,34,0,MODE_SMA,PRICE_MEDIAN, i);
//---- signal line counted in the 2-nd additional buffer
   for( i=0; i< limit; i++)
      ExtBuffer4[ i]=iMAOnArray( ExtBuffer3,Bars,5,0,MODE_SMA, i);
//---- dispatch values between 2 buffers
   bool up=true;
   for( i= limit-1; i>=0; i--)
     {
      current=ExtBuffer3[ i]- ExtBuffer4[ i];
      prev=ExtBuffer3[ i+1]- ExtBuffer4[ i+1];
      if( current> prev) up=true;
      if( current& lt; prev) up=false;
      if(! up)
        {
         ExtBuffer2[ i]= current;
         ExtBuffer1[ i]=0.0;
        }
      else
        {
         ExtBuffer1[ i]= current;
         ExtBuffer2[ i]=0.0;
        }
       ExtBuffer0[ i]= current;
     }
//---- done
   return(0);
  }
//+------------------------------------------------------------------+

Como puede ver, en estas matrices sólo se realizan cálculos. No entiendo por qué hay que asignar a estas matrices el estatus de buffer de índice.

 
neoclassic писал(а) >>

Esta pregunta: el indicador OA estándar utiliza 2 buffers de índice adicionales, que no intervienen en la representación del indicador:

Como puede ver, en estas matrices sólo se realizan cálculos. No entiendo, ¿por qué hay que asignar a estas matrices la condición de topes de índice?

para establecer el tamaño de la matriz.

 

¡Hola usuarios del foro!

Soy un programador total de MQL. Pero me gustaría tener un EA sencillo como este. Abre la pose con algún lote. Inmediatamente establecí un stop fijo (20-30 pips). Después de alcanzar un determinado beneficio (20-30 pips) cerramos parte de la posición (50%), y para las posiciones restantes el stop se mueve al Breakeven. Para el resto de la posición se coloca una orden de beneficios o se controla manualmente. He aquí una idea. Estaría muy agradecido por las respuestas.

 
vvavva >> :

para establecer el tamaño de la matriz.

pero ¿qué hacer si se necesita utilizar un gran número de matrices? >> (más de 8)

 

Utilizar matrices regulares en lugar de matrices de búfer.

en lugar de

SetIndexBuffer(3,ExtBuffer3);SetIndexBuffer(4,ExtBuffer4);

utilice

ArrayResize(ExtBuffer3,Bars); ArrayResize(ExtBuffer4,Bars);

 
keekkenen >> :

Utilizar matrices regulares en lugar de matrices de búfer.

en lugar de

SetIndexBuffer(3,ExtBuffer3);SetIndexBuffer(4,ExtBuffer4);

utilice

ArrayResize(ExtBuffer3,Bars); ArrayResize(ExtBuffer4,Bars);


¡¡¡Gracias!!!

 
neoclassic писал(а) >>

¿Y si hay que utilizar un gran número de matrices? (más de 8)

Las matrices para dibujar en el indicador no pueden superar el límite especificado (creo que es 8).

Las matrices para los cálculos también tienen límites, ¡pero el número es mayor!

para evitar los límites de las matrices, es necesario utilizar las bibliotecas.

 
Tengo una pregunta. ¿Es posible hacer un camarero de noticias. Digamos que hoy será la noticia hora exacta no se sabe texto aproximado una palabra, necesito un pitido más largo y más fuerte puede hacerlo.
 
Hola, plz dime como posibles razones por las que la variable k=Bars puede cambiar cuando una nueva barra aún no ha comenzado a formarse (cualquier situación posible), digamos que cambió el par de divisas, el marco de tiempo, alguna actualización de mt4 o en dc.
Razón de la queja: