//+------------------------------------------------------------------+ //| On Balance Volume.mq4 | //| Copyright © 2005, MetaQuotes Software Corp. | //| http://www.metaquotes.net/ | //+------------------------------------------------------------------+ #property copyright "Copyright © 2005, MetaQuotes Software Corp." #property link "http://www.metaquotes.net/" #property indicator_separate_window #property indicator_buffers 1 #property indicator_color1 DodgerBlue //---- input parameters extern int ExtOBVAppliedPrice=0; //---- buffers double ExtOBVBuffer[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { string sShortName; //---- indicator buffer mapping SetIndexBuffer(0,ExtOBVBuffer); //---- indicator line SetIndexStyle(0,DRAW_LINE); //---- sets default precision format for indicators visualization IndicatorDigits(0); //---- name for DataWindow and indicator subwindow label sShortName="OBV"; IndicatorShortName(sShortName); SetIndexLabel(0,sShortName); //---- return(0); } //+------------------------------------------------------------------+ //| On Balance Volume | //+------------------------------------------------------------------+ int start() { int i,nLimit,nCountedBars; //---- bars count that does not changed after last indicator launch. nCountedBars=IndicatorCounted(); //---- last counted bar will be recounted if(nCountedBars>0) nCountedBars--; nLimit=Bars-nCountedBars-1; //---- for(i=nLimit; i>=0; i--) { if(i==Bars-1) ExtOBVBuffer[i]=Volume[i]; else { double dCurrentPrice=GetAppliedPrice(ExtOBVAppliedPrice, i); double dPreviousPrice=GetAppliedPrice(ExtOBVAppliedPrice, i+1); if(dCurrentPrice==dPreviousPrice) ExtOBVBuffer[i]=ExtOBVBuffer[i+1]; else { if(dCurrentPrice