Disliked- without dividing the change in price by points, you are left with some decimal number of the ask/bid change, say 0.003, this is being typecasted into an integer via int(0.003), which turns it to 0, and 0 is plotted, without typecasting the decimal will still be cut into in an integer and a compiler warning telling u its happening will show up - if you want 0.003 instead of 3points, you can turn the variable delta_ask/bid into a double insteadIgnored
Thanks jeanlouie

Inserted Code
//+------------------------------------------------------------------+ #property copyright "2022 Bo Danerius" #property link "work.danerius.se" #property version "1.00" #property strict #property indicator_separate_window //----------+ | #property strict #property indicator_separate_window #property indicator_minimum -10 #property indicator_maximum 10 #property indicator_buffers 2 input int tick_count = 1000; //Show last x ticks double b_close[]; #property indicator_type1 DRAW_LINE #property indicator_color1 clrWhiteSmoke #property indicator_width1 1 #property indicator_style1 STYLE_SOLID //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ double arr_close[]; int OnInit() { //set draw buffers SetIndexBuffer(0,b_close); SetIndexEmptyValue(0,EMPTY_VALUE); //size the dynamic arrays to tickcount ArrayResize(arr_close,tick_count); //start them off with 0's ArrayInitialize(arr_close,0); IndicatorDigits(_Digits); 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[]) { if(prev_calculated<0)return(-1); if(IsStopped())return(-1); //save the last close prices static double prev_close; //cur_Close = Current Close Price double cur_close = Close[0]; //get the current ask/bid change from the previous int delta_close = int ((cur_close - prev_close)/_Point); //if the previous ask/bid is non existent if(prev_close==0)delta_close = 0; //set values of prev ask/bid for next call prev_close = cur_close; //update display display_update(delta_close); return(rates_total); } //+------------------------------------------------------------------+ bool display_update(int d_close) { //move array elements back 1 position, stop at index 1. i50=i49 ... i1=i0 //array is array indexing, but treated as timeseries by filling new from index 0 for(int i=tick_count-1; i>=1; i--){ arr_close[i] = arr_close[i-1]; } //insert new 0 element arr_close[0] = d_close; //udpate buffer display for(int i=0; i<tick_count; i++){ b_close[i] = arr_close[i]; } //set the previous left buffer val outside the tick count to empty or 0 b_close[tick_count-1+1] = EMPTY_VALUE; return(true); } //+------------------------------------------------------------------+ void OnDeinit(const int reason) { }