#include "sierrachart.h"

SCDLLName("L_Higher% Ask & Bid Text")

SCSFExport scsf_AskBidText(SCStudyInterfaceRef sc)
{
	SCSubgraphRef Subgraph_DeltaValue = sc.Subgraph[0];
	SCSubgraphRef Subgraph_BidMAsk = sc.Subgraph[1];

	SCFloatArrayRef Array_TextPosition = Subgraph_DeltaValue.Arrays[0];
	SCFloatArrayRef Array_TextPosition1 = Subgraph_BidMAsk.Arrays[1];

	SCInputRef  Input_OffsetInTicks = sc.Input[1];
	SCInputRef Input_DisplayAtBottom = sc.Input[2];
	SCInputRef Input_Limit = sc.Input[3];
	

	if (sc.SetDefaults)
	{
		sc.GraphName = "AskV <> BidV Text";

		sc.GraphRegion = 0;
		sc.ValueFormat = 0;
		sc.DrawZeros = 0;

		// subgraphs
		Subgraph_DeltaValue.Name = "Higher Ask";
		Subgraph_DeltaValue.DrawStyle = DRAWSTYLE_CUSTOM_VALUE_AT_Y;
		Subgraph_DeltaValue.PrimaryColor = RGB(0, 255, 0);
		Subgraph_DeltaValue.SecondaryColor = COLOR_RED;
		Subgraph_DeltaValue.LineWidth = 8;
		Subgraph_DeltaValue.SecondaryColorUsed = 0;
		
		Subgraph_BidMAsk.Name = "Higher Bid";
		Subgraph_BidMAsk.DrawStyle = DRAWSTYLE_CUSTOM_VALUE_AT_Y;
		Subgraph_BidMAsk.PrimaryColor = COLOR_RED;;
		Subgraph_BidMAsk.SecondaryColor = COLOR_RED;
		Subgraph_BidMAsk.LineWidth = 8;
		Subgraph_BidMAsk.SecondaryColorUsed = 0;


		Input_OffsetInTicks.Name = "Offset In Ticks";
		Input_OffsetInTicks.SetInt(22);
		
		Input_Limit.Name = "Show Ratio From";
		Input_Limit.SetFloat(0.50);
		
		Input_DisplayAtBottom.Name = "Display At Bottom";
		Input_DisplayAtBottom.SetYesNo(false);
		
		sc.AutoLoop = 1;

		return;
	}
	
	Subgraph_DeltaValue[sc.Index] = (sc.AskVolume[sc.Index] / sc.BidVolume[sc.Index]) - 1;
	Subgraph_BidMAsk[sc.Index] = (sc.BidVolume[sc.Index] / sc.AskVolume[sc.Index]) - 1;
	
	
	if (Subgraph_DeltaValue[sc.Index] > Input_Limit.GetFloat())
	{
	   if (!Input_DisplayAtBottom.GetYesNo())
	   {
	  	sc.ScaleRangeType = SCALE_AUTO;
	   }
	   else
	   {
		 sc.ScaleRangeType = SCALE_USERDEFINED;
		 sc.ScaleRangeTop = 100;
		 sc.ScaleRangeBottom = 1;
	   }
	
	 if (Subgraph_DeltaValue[sc.Index] > Input_Limit.GetFloat())
	 {
	 float Offset = sc.TickSize * Input_OffsetInTicks.GetInt();

	 float VerticalPositionValue = 0;
	  
	  if (Input_DisplayAtBottom.GetYesNo())
	 	 VerticalPositionValue = 8;
	  else
	 	VerticalPositionValue = sc.High[sc.Index] + Offset;
	
	 Subgraph_DeltaValue.Arrays[0][sc.Index] = VerticalPositionValue;
	 }
	}
	
	
	if (Subgraph_BidMAsk[sc.Index] > Input_Limit.GetFloat())
	{
	   if (!Input_DisplayAtBottom.GetYesNo())
	   {
	  	sc.ScaleRangeType = SCALE_AUTO;
	   }
	   else
	   {
		 sc.ScaleRangeType = SCALE_USERDEFINED;
		 sc.ScaleRangeTop = 100;
		 sc.ScaleRangeBottom = 1;
	   }
	
	 
	 float Offset1 = sc.TickSize * Input_OffsetInTicks.GetInt();

	 float VerticalPositionValue1 = 0;
	  
	  if (Input_DisplayAtBottom.GetYesNo())
	 	 VerticalPositionValue1 = 8;
	  else
	 	VerticalPositionValue1 = sc.Low[sc.Index] - Offset1;
	
	 Subgraph_BidMAsk.Arrays[0][sc.Index] = VerticalPositionValue1;
	}
	
	

}