Indicadores: Thrust_Bar

 

Thrust_Bar:

Indicador Thrust Bar

Thrust_Bar

Autor: Scriptor

 
Buenos días ¿ Se puede calcular por máximos y mínimos, no por cuerpo de vela ?
 
Auma #:
Buenos días. ¿Puede calcular por el máximo y el mínimo, y no por el cuerpo de la vela?

Cambialo tu mismo.


 
Vitaly Muzichenko #:

Cámbiate a ti mismo


Lo cambie, pero muestra solo una barra, barras verdes, pero no barras rojas. Cambiado la configuración de ATR, muestra lo mismo.

Archivos adjuntos:
 
Auma #:

Lo cambie, pero muestra solo una barra, barras verdes, pero no barras rojas. Cambiado la configuración de ATR, muestra lo mismo.

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[])
  {
//--- Establecer matrices de búfer como series temporales
   ArraySetAsSeries(open,true);
   ArraySetAsSeries(high,true);
   ArraySetAsSeries(low,true);
   ArraySetAsSeries(close,true);
   ArraySetAsSeries(time,true);
//--- Comprobar el número de barras disponibles
   if(rates_total<period_max) return 0;
//--- Comprobación y cálculo del número de compases a calcular
   int limit=rates_total-prev_calculated;
   if(limit>1)
     {
      limit=rates_total-1;
      ArrayInitialize(BufferUP,EMPTY_VALUE);
      ArrayInitialize(BufferDN,EMPTY_VALUE);
      ArrayInitialize(BufferCandleOpen,EMPTY_VALUE);
      ArrayInitialize(BufferCandleHigh,EMPTY_VALUE);
      ArrayInitialize(BufferCandleLow,EMPTY_VALUE);
      ArrayInitialize(BufferCandleClose,EMPTY_VALUE);
      ArrayInitialize(BufferColors,2);
      ArrayInitialize(BufferATR,0);
     }
//--- Preparación de datos
   int count=(limit>1 ? rates_total : 1),copied=0;
   copied=CopyBuffer(handle_atr,MAIN_LINE,0,count,BufferATR);
   if(copied!=count) return 0;

//--- Cálculo del indicador
   static datetime last_time=0;
   for(int i=limit; i>=0 && !IsStopped(); i--)
     {
      BufferCandleOpen[i]=BufferCandleHigh[i]=BufferCandleLow[i]=BufferCandleClose[i]=EMPTY_VALUE;
      BufferColors[i]=2;
      double x=(InpMethod==IND_METHOD_ATR ? multiplier*BufferATR[i]/Point() : multiplier);
      double y=(high[i]-low[i])/Point();
      double c=(close[i]-open[i])/Point();
      if(y>x && c>=0 && InpUseLong)
        {
         BufferUP[i]=low[i];
         BufferCandleOpen[i]=open[i];
         BufferCandleHigh[i]=high[i];
         BufferCandleLow[i]=low[i];
         BufferCandleClose[i]=close[i];
         BufferColors[i]=0;
         if(i==0 && last_time!=time[0])
           {
            string message=Symbol()+", "+TimeframeToString(Period())+": Thrust Bullish Bar at "+TimeToString(TimeCurrent());
            if(InpUseAlerts) Alert(message);
            if(InpSendMail  && TerminalInfoInteger(TERMINAL_EMAIL_ENABLED)) SendMail("Thrust Bar Signal",message);
            if(InpSendPush && TerminalInfoInteger(TERMINAL_NOTIFICATIONS_ENABLED)) SendNotification(message);
            last_time=time[0];
           }
        }
      if(y>x && c<0 && InpUseShort)
        {
         BufferDN[i]=high[i];
         BufferCandleOpen[i]=open[i];
         BufferCandleHigh[i]=high[i];
         BufferCandleLow[i]=low[i];
         BufferCandleClose[i]=close[i];
         BufferColors[i]=1;
         if(i==0 && last_time!=time[0])
           {
            string message=Symbol()+", "+TimeframeToString(Period())+": Thrust Bearish Bar at "+TimeToString(TimeCurrent());
            if(InpUseAlerts) Alert(message);
            if(InpSendMail  && TerminalInfoInteger(TERMINAL_EMAIL_ENABLED)) SendMail("Thrust Bar Signal",message);
            if(InpSendPush && TerminalInfoInteger(TERMINAL_NOTIFICATIONS_ENABLED)) SendNotification(message);
            last_time=time[0];
           }
        }
     }

//--- valor de retorno de prev_calculado para la siguiente llamada
   return(rates_total);
  }
 
Parece haber funcionado , nunca cambiado o escrito indicadores , funcionó desde la décima vez .tal vez se puede añadir aquí , que lo encontrará útil también ? Gracias por su atención.
Archivos adjuntos:
Thrust_Bar1.mq5  18 kb