//+------------------------------------------------------------------+ //| VolumeAshiv1.02.mq5 | //| VolumeAshi v1.02 Copyright 2015, fxborg | //| http://blog.livedoor.jp/fxborg/ | //+------------------------------------------------------------------+ #property copyright "Copyright 2015, fxborg" #property link "http://blog.livedoor.jp/fxborg/" #property version "1.00" #property indicator_separate_window #property indicator_buffers 8 #property indicator_plots 1 #property indicator_type1 DRAW_COLOR_CANDLES #property indicator_color1 Gray,DodgerBlue,Red #property indicator_width1 1 //--- input ENUM_TIMEFRAMES CalcTF=PERIOD_M10; // Calclation TimeFrame input int SummaryBars=4; //--- //--- int Scale=PeriodSeconds(PERIOD_CURRENT)/PeriodSeconds(CalcTF); //--- //--- #define DIR_UP 1.0 #define DIR_DOWN 2.0 #define DIR_NONE 0.0 //--- double OpenBuffer[]; double HighBuffer[]; double LowBuffer[]; double CloseBuffer[]; double DirBuffer[]; //--- double UpVolBuffer[]; double DnVolBuffer[]; double TimeBuffer[]; //--- //---- declaration of global variables int min_rates_total; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { if(PeriodSeconds(PERIOD_CURRENT)0) first=prev_calculated-2; else { for(i=0; i(time[i]-10)) { //--- up_vol+= ((double)tf_rates[pos].tick_volume) * dir; dn_vol+= ((double)tf_rates[pos].tick_volume) * (1.0-dir); } //--- } //--- UpVolBuffer[i]=(double)up_vol; DnVolBuffer[i]=(double)dn_vol*-1; double op=0.0; if(i<=SummaryBars+min_rates_total+2)continue; for(int j=SummaryBars-1;j>0;j--) { op += (UpVolBuffer[i-j]+DnVolBuffer[i-j]); } OpenBuffer[i] = op; HighBuffer[i] = OpenBuffer[i] + UpVolBuffer[i]; LowBuffer[i] = OpenBuffer[i] + DnVolBuffer[i]; CloseBuffer[i] = OpenBuffer[i] + (UpVolBuffer[i]+DnVolBuffer[i]); DirBuffer[i] =(OpenBuffer[i]0) return 1.0; if(dn>0 && up==0) return 0.0; if(dn==0 && up==0) return 0.5; //double dir=(up/total); double dir=(up/(up+dn)); return dir; } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int getWeekNumber(const int day_of_year,const int day_of_week) { int iDay=(day_of_week)%7+1; // convert day to standard index (1=Mon,...,7=Sun) return(int)MathFloor(((day_of_year-iDay)+10)/7); // calculate standard week number } //+------------------------------------------------------------------+