Buenos días ¿ Se puede calcular por máximos y mínimos, no por cuerpo de vela ?
Lo cambie, pero muestra solo una barra, barras verdes, pero no barras rojas. Cambiado la configuración de ATR, muestra lo mismo.
Archivos adjuntos:
5rqabh_uxtlqa_f567n.png
12 kb
mdhb0c_v5l0ng_x569m.png
54 kb
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
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese

Thrust_Bar:
Indicador Thrust Bar
Autor: Scriptor