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

 
atztek:
¿Cómo encontrar objetos que están en una subventana separada?
Parece (aún no lo he probado) que una opción es usar ObjectFind, recorriendo todos los objetos de todas las ventanas.
¿Es posible limitarse a los objetos de una determinada subventana a la vez?


No sólo puedes, tienes que hacerlo.
 
evillive:

no sólo puedes hacerlo, sino que debes hacerlo.
Pues bien, se limitará a los objetos de todas las subventanas de la ventana del gráfico principal seleccionada en chart_id.
 

Estimados programadores, he recibido este aviso, ¿qué cambios debo introducir en la configuración del EA o qué significa? (He borrado el nombre del corredor por razones obvias):

Estimado cliente


Le
informamos de que, debido a la infraestructura tecnológica prevista y a la modernización de los EQUIPOS, las conexiones a los centros de datos .............-El directo 3 desde la dirección IP............... se terminará el sábado 30 de agosto de 2014 sus terminales de negociación se conectarán automáticamente a uno de los dos centros de datos en las siguientes direcciones:

dc1.mt4..........com:443 (USA)
dc2.mt4..........com:443 (Alemania).


Por favor, haga los cambios apropiados en la configuración de los asesores comerciales, si es necesario.

 

¡Hola!

¿Cómo puedo calcular los valores máximos y mínimos de 20 barras para cada barra e imponerlos en la línea?

#property indicator_chart_window              //Свойство:индикатор рисуется в основном окне
#property indicator_buffers 2                 // Количество буферов
#property indicator_plots   2                 // Кол-во графиков
//--- График  Max цены за период
#property indicator_label1  "Max"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- График Min цены за период
#property indicator_label2  "Min"
#property indicator_type2   DRAW_LINE
#property indicator_color2  clrRed
#property indicator_style2  STYLE_SOLID
#property indicator_width2  1
//--- Объявление массивов
double         MaxBuffer[];
double         MinBuffer[];

extern int Quant_Bars=20;                       //Количество баров
                                                //Переменные для горизонтальной линии по максимуму и мин

int pos; 
   double dMaximum;                          // Максимальная цена
   double dMinimum;       
//+------------------------------------------------------------------+
//| Специальная функция OnInit                     |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- Отображение данных из буфера
   SetIndexBuffer(0,MaxBuffer);
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(1,MinBuffer);
   SetIndexStyle(1,DRAW_LINE);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   int counted_bars=IndicatorCounted(); // переменная для хранения кол-ва баров
//---- Проверка есть,ли ошибки
   if(counted_bars<0) return(-1);

//---- Доп проверка учета неучтенных баров
 if(counted_bars>0) counted_bars--;

   pos = Bars-counted_bars;

//---- Основной расчетный цикл
   while(pos>=0)
     { 
                           // Текущая минималная цена
      dMinimum = GetMinPrice();
      dMaximum = GetMaxPrice();
   
      MaxBuffer[pos] = dMaximum;
      MinBuffer[pos] = dMinimum;
      pos--;
     }

   Comment("Кол-во баров ",Bars,"Кол-во непосчитанных свечей\n"
   ,pos,dMinimum,dMaximum);

//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

//--------------------Функция минимальной цены за выбранный промежуток времени-----------------

double GetMinPrice()
  {
      double dLow= 1000000;                        // Минимальный уровень
      double dPriceLow; 
   for(int i=1;i<= Quant_Bars;i++) // От 1 (!) до..
     {
      dPriceLow=iLow(Symbol(),0,i);          // узнаем текущую минимальную цену i-бара
      if(dPriceLow<dLow)                     // Если текущий Low бара < известного dLow
         dLow=dPriceLow;                     // то оно и будет минимумом

     }
   return(dLow);
  }
//--------------------Функция минимальной цены за выбранный промежуток времени-----------------

double GetMaxPrice()
  {
   double dHigh=0;                        // Цена макс уровня
   double dPriceHigh;                     // Текущая максимальная цена i-бара
   for(int i=1;i<=Quant_Bars;i++)         // От 1 (!) до..
     {
      dPriceHigh=iHigh(Symbol(),0,i);     // узнаем текущую максимальную цену i-бара
      if(dPriceHigh>dHigh)                // Если текущий Low бара < известного dLow
         dHigh=dPriceHigh;                       // то оно и будет минимумом

     }
   return(dHigh);
  }

Sólo puedo usarlo para la barra 0.

 
AndrianoS:

¡Hola!

¿Cómo puedo calcular los valores máximos y mínimos de 20 barras para cada barra e imponerlos en la línea?

Sólo puedo usarlo para la barra 0.

Me gustaría saber qué les pasa. :

//+------------------------------------------------------------------+
double GetMinPrice(string sy, int timeframe, int count=WHOLE_ARRAY, int begin=0) {
   return(iLow(sy,timeframe,iLowest(sy,timeframe,MODE_LOW,count,begin)));
   }
//+------------------------------------------------------------------+
double GetMaxPrice(string sy, int timeframe, int count=WHOLE_ARRAY, int begin=0) {
   return(iHigh(sy,timeframe,iHighest(sy,timeframe,MODE_HIGH,count,begin)));
   }
//+------------------------------------------------------------------+

No he buscado más...

Esto es: "...para cada barra el valor del máximo y el mínimo de 20 barras..." - no está nada claro.

 
AndrianoS:

¡Hola!

¿Cómo puedo calcular los valores máximos y mínimos de 20 barras para cada barra e imponerlos en la línea?

Sólo puedo usarlo para la barra 0.

Todo es mucho más sencillo. También intenté hacer diferentes indicadores de canal una vez. Este es el código

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Magenta
#property indicator_color2 Aqua
//--- input parameters
extern int       min=20;
extern int       max=20;
//--- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,ExtMapBuffer2);
   IndicatorDigits(Digits+1);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
    int counted_bars=IndicatorCounted(),                      
    limit;
    double minimum,maximum;
   if(counted_bars>0)
      counted_bars--;  
   limit=Bars-counted_bars;
   for(int i=0;i<limit;i++)
   {
      minimum=Low[iLowest(NULL,0,MODE_LOW,min,i)];
      maximum=High[iHighest(NULL,0,MODE_HIGH,max,i)];
      ExtMapBuffer1[i]=minimum;
      ExtMapBuffer2[i]=maximum;
   }
   return(0);
  }
//+------------------------------------------------------------------+
 
Forexman77:

Es mucho más sencillo que eso. Yo también intenté hacer varios indicadores de canal una vez. Este es el código


Gracias a todos los que han respondido, aprenderé más.
 
¿Qué te ayuda más una media móvil simple o una exponencial, si no te ayuda en nada por qué la usas?
 

Gente, díganme cómo mostrar la configuración del período para el indicador. Lo he intentado de esta manera, no funciona:

cadena externa Per= H1;

double prodaem1=iCustom(Symbol(),PERIOD_ Per, "super-signals-channel",2,500,2,sdvig);

 
woin2110:

Gente, díganme cómo mostrar la configuración del período para el indicador. Lo he intentado de esta manera, no funciona:

cadena externa Per= H1;

double prodaem1=iCustom(Symbol(),PERIOD_ Per, "super-signals-channel",2,500,2,sdvig);


Puede hacer esto: extern int Per= 60; //string H1;

double prodaem1=iCustom(Symbol(),Per, "super-signals-channel",2,500,2,sdvig); //PERIOD_

De hecho, ¡vea la documentación!