/***********************************************************************/
extern "C" __declspec( dllexport ) void jPrice(struct s_sg &sg)
{
sg.GraphName="JPrices";
sg.Subgraph[0].Name="O";
sg.Subgraph[1].Name="H";
sg.Subgraph[2].Name="L";
sg.Subgraph[3].Name="C";
sg.FreeDLL=0; if(sg.SetDefaults) {return;}
if(sg.ArraySize<100) return;
sg.UsePriceGraphStyle=1;
sg.Input[2].Name="Print Up & Down Bars (0), Up (1), Dn (-1)";
int pos, updn=0;
float jO=0, jH, jL, jC=0;
sg.DataStartIndex=15;
for (pos=15; pos < sg.ArraySize; pos++)
{
jO=(jO+jC)/2;
jC=(sg.BaseDataIn[0][pos]+sg.BaseDataIn[1][pos]+sg.BaseDataIn[2][pos]+sg.BaseDataIn[3][pos])/4;
if(jO>sg.BaseDataIn[1][pos] && jO>jC) jH=jO; else if(jC>sg.BaseDataIn[1][pos]) jH=jC; else jH=sg.BaseDataIn[1][pos];
if(jO<sg.BaseDataIn[2][pos] && jO<jC) jL=jO; else if(jC<sg.BaseDataIn[2][pos]) jL=jC; else jL=sg.BaseDataIn[2][pos];
sg.Subgraph[5].Data[pos]=jH;
sg.Subgraph[6].Data[pos]=jL;
if(jH>sg.Subgraph[5].Data[pos-1] && jL>=sg.Subgraph[6].Data[pos-1]) {updn=1;} else
if(jL < sg.Subgraph[6].Data[pos-1] && jH<=sg.Subgraph[5].Data[pos-1]) {updn=-1;};
if((sg.Input[2].FloatValue!=1 && sg.Input[2].FloatValue!=-1) || (sg.Input[2].FloatValue==1 && updn==1) || (sg.Input[2].FloatValue==-1 && updn==-1))
{
sg.Subgraph[0].Data[pos]=jO;
sg.Subgraph[1].Data[pos]=jH;
sg.Subgraph[2].Data[pos]=jL;
sg.Subgraph[3].Data[pos]=jC;
};
}
};