[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. No puedo ir a ningún sitio sin ti - 4. - página 155

 
Chicos, ¿podéis darme una pista? Este sitio tiene un script llamado "SendOrderMultiLock". Me interesa saber si se puede hacer que se encienda a una hora determinada?
 
dzhini:

Ya que has tomado la iniciativa, vamos a intentar idear un código que nos señale cada minuto con información sobre el precio de apertura de una vela de un minuto en un gráfico de cinco minutos (con posibilidad de funcionar en un tester). Propongo mi propia variante:

Esta opción es mejor.
 
Gracias también por eso.
 
dzhini:
Gracias.
// функция записывает в массив result[] цены открытия минутных баров 
// внутри бара с индексом shift текущего таймфрейма. Возвращаемое значение - количество соответствующих минутных баров
// 

int M1_OpenPrices(int shift, double &result[])
{
   int n=0;
   ArrayResize(result,n);
   
   int sh, sh1 = iBarShift(0, PERIOD_M1, Time[shift]);
   
   for(sh=sh1;sh>=0;sh--)
   {
      if(iBarShift(0, 0, iTime(0,PERIOD_M1,sh))!=shift) break;
      n++;
      ArrayResize(result,n);
      result[n-1] = iOpen(Symbol(),PERIOD_M1,sh1);
   }

   return(n);
}
Creo que sí, comprueba...
 
¿Quién sabe cómo hacer que el color de las líneas de take profit difiera en el gráfico del color del stop loss automáticamente? y ¿cómo hacer que aparezca un icono en el gráfico en el lugar donde se coloca la orden?
 

Ayúdame a entender. Construyo el MACD en la barra anterior (i+1). Encuentro los valores máximos y mínimos visibles en la ventana del gráfico MACD. Pongo en Comentario los valores máximos, mínimos y actuales de las líneas principales y de señal. ¿Puede alguien ayudarme a resolverlo?

#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Lime
#property indicator_color2 Red
#property  indicator_width1  2
//--- buffers
double Macd1Buffer[];
double Signal1Buffer[];

//--- for one bar
datetime last; 

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   //---- indicators
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,Macd1Buffer);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,Signal1Buffer);
   
   IndicatorDigits(Digits+1);

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
  Comment(""); 
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
    if(last>=Time[0]) return;
    
   double max_M1=-0.01,min_M1=0.01,
          max_S1=-0.01,min_S1=0.01,
          max1=-0.01,min1=0.01;
   
   int bars_counted=WindowBarsPerChart()-1,
       limit;  
       limit=bars_counted;
       
//---- macd counted in the 1-st buffer        
   for( int i=0; i<limit; i++)
              
   { 
      Macd1Buffer[i]=iMA(NULL,0,6,0,MODE_EMA,PRICE_CLOSE,i+1)-iMA(NULL,0,12,0,MODE_EMA,PRICE_CLOSE,i+1);
     
       max_M1=MathMax(Macd1Buffer[i],max_M1);
       min_M1=MathMin(Macd1Buffer[i],min_M1);
     
   }  
     
//---- macd counted in the 2-nd buffer       
   for( i=0; i<limit; i++)
           
   {
      Signal1Buffer[i]=iMAOnArray(Macd1Buffer,Bars,5,0,MODE_SMA,i);
      
       max_S1=MathMax(Signal1Buffer[i],max_S1);
       min_S1=MathMin(Signal1Buffer[i],min_S1);
            
   } 
   
       max1=MathMax(max_M1,max_S1);
       min1=MathMin(min_M1,min_S1);
   
   
   Comment( "\n"," Баров = ",WindowBarsPerChart()-1,
            "\n"," max1 = ",max1,
            "\n"," min1 = ",min1, 
            "\n"," Macd1Buffer = ",Macd1Buffer[i],
            "\n"," Signal1Buffer = ",Signal1Buffer[i]);
       
    last=Time[0];
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
MK07:

Ayúdame a entender. Construyo el MACD en la barra anterior (i+1). Encuentro los valores máximos y mínimos visibles en la ventana del gráfico MACD. Pongo en Comentario los valores máximos, mínimos y actuales de las líneas principales y de señal. ¿Puede alguien ayudarme a resolverlo?

El tipo de datos double se imprime con 4 dígitos decimales después del punto. Para obtener números con mayor precisión, debe utilizar la función DoubleToStr().

Ejemplo:

   Comment( "\n"," Баров = ",WindowBarsPerChart()-1,
            "\n"," max1 = ",max1,
            "\n"," min1 = ",min1, 
            "\n"," Macd1Buffer = ",DoubleToStr(Macd1Buffer[i],5),
            "\n"," Signal1Buffer = ",DoubleToStr(Signal1Buffer[i],5));
 
r772ra:

Los datos de tipo double se emiten con 4 dígitos decimales después del punto. Para obtener números con mayor precisión, utilice la función DoubleToStr().

... y en tu caso, MK07, IndicatorDigits() significa el número de dígitos en la ventana de datos y en el propio gráfico.
 
r772ra:

Los datos de tipo double se emiten con 4 dígitos decimales después del punto. Para obtener números con mayor precisión, utilice la función DoubleToStr().

ejemplo:

Gracias por el consejo¿Por qué no se muestran correctamente los valores de la línea MACD en el comentario?
 
MK07:
Gracias por el consejo.¿Por qué los valores de la línea MACD actual se muestran incorrectamente en el comentario?

Lee de nuevo, con atención: para Comment(), Alert() y Print()

Los datos de tipo double se imprimen con 4 dígitos decimales después del punto. Para obtener números con mayor precisión, utilice la función DoubleToStr().