Hola, AntiVi, además de lo que John compartió, también quieres adquirir el hábito de usar los datos pasados ??????como args en la función OnCalculate en lugar de confiar en los datos de los vars incorporados. Además, debes asegurarte de que estás haciendo tus retrospectivas correctamente. No necesita procesar todo el ciclo (todos los datos del gráfico) en cada tic. Solo necesita procesar la parte de los datos del indicador que necesita actualización. Aquí hay un ejemplo de cómo hacer un mejor uso de la función OnCalculate. Inserted Code #property strict #property indior_chart_window/START ADDED JvW #property indior_buffers 2/END ADDED JvW double Highs # ??????91; # 93 ;; double Lows # 91; # 93 ;;/ ----------------------------------------------- ------------------- /| Función de inicialización del indicador personalizado |/ ----------------------------------------------- ------------------- int OnInit () {//--- estilo de dibujo SetIndexStyle (0, DRAW_ARROW, EMPTY, 1, clrGreen); SetIndexArrow (0,234); SetIndexStyle (1, DRAW_ARROW, VACÍO, 1, clrRed); SetIndexArrow (1,233);/--- buffer de indicador SetIndexBuffer (0, Highs); SetIndexBuffer (1, Lows); return (INIT_SUCCEEDED); }/ ---------------------------------------------- -------------------- /| Función de iteración del indicador personalizado |/ ----------------------------------------------- ------------------- int OnCalculate (const int rates_total, const int prev_calculated, const datetime time # 91; # 93 ;, const double open # 91; # 93; , const double high # 91; # 93 ;, const double down # 91; # 93 ;, const double close # 91; # 93 ;, const long tick_volume # 91; # 93 ;, const long volume # 91; # 93; , const int spread # 91; # 93 {//--- int limit = rates_total - prev_calculated - 2; límite = límite lt; 1? 1: límite; for (int i = limit; i gt; 0; i--) {if (alto # 91; i # 93; gt; alto # 91; i 1 # 93; alto # 91; i # 93; gt; alto # 91; i-1 # 93 Highs # ??????91; i # 93; = alto # 91; i # 93 ;; si (bajo # 91; i # 93; lt; bajo # 91; i 1 # 93; bajo # 91; i # 93; lt; bajo # 91; i-1 # 93 Bajas # 91; i # 93 ; = bajo # 91; i # 93 ;; }/--- devuelve el valor de prev_calculated para la devolución de la próxima llamada (rates_total); }Iniciado por ;