?? sar.java
字號:
// Decompiled by Jad v1.5.7g. Copyright 2000 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi
// Source File Name: SAR.java
package gnnt.MEBS.HQApplet.Indicator;
import gnnt.MEBS.HQApplet.*;
import java.awt.*;
// Referenced classes of package gnnt.MEBS.HQApplet.Indicator:
// KLine, IndicatorBase, IndicatorPos
public class SAR extends KLine
{
private final int m_iParam[] = {
5
};
private final int SAR_UP = 0;
private final int SAR_DOWN = 1;
private final int SAR_CUP = 16;
private final int SAR_CDOWN = 17;
public SAR(IndicatorPos pos, int iPrecision)
{
super(pos, 0, iPrecision);
m_strIndicatorName = "SAR(" + m_iParam[0] + ")";
m_strParamName = (new String[] {
""
});
}
public void Paint(Graphics g, Rectangle rc, KLineData data[])
{
m_kData = data;
Calculate();
super.Paint(g, rc, data);
Color color[] = {
HQApplet.rhColor.clIncrease, HQApplet.rhColor.clDecrease, HQApplet.rhColor.clEqual
};
DrawSAR(g, m_iParam[0] - 1, m_data[0], m_data[1], color);
}
public void Calculate()
{
int n = m_iParam[0];
m_data = new float[2][];
if(m_kData == null || m_kData.length <= 0)
return;
if(n > m_kData.length || n < 3)
return;
for(int i = 0; i < 2; i++)
m_data[i] = new float[m_kData.length];
float sar[] = m_data[0];
float sign[] = m_data[1];
float xs = 0.02F;
if(m_kData[n - 1].closePrice < m_kData[n - 2].closePrice)
{
if(m_kData[n - 2].closePrice <= m_kData[n - 3].closePrice)
sign[n - 1] = 1.0F;
else
sign[n - 1] = 17F;
} else
if(m_kData[n - 1].closePrice > m_kData[n - 2].closePrice)
{
if(m_kData[n - 2].closePrice >= m_kData[n - 3].closePrice)
sign[n - 1] = 0.0F;
else
sign[n - 1] = 16F;
} else
if(m_kData[n - 2].closePrice < m_kData[n - 3].closePrice)
sign[n - 1] = 1.0F;
else
if(m_kData[n - 2].closePrice > m_kData[n - 3].closePrice)
sign[n - 1] = 0.0F;
else
sign[n - 1] = 16F;
if(sign[n - 1] == 1.0F || sign[n - 1] == 17F)
{
sar[n - 1] = -1E+036F;
for(int j = n - 1; j >= 0; j--)
sar[n - 1] = Math.max(sar[n - 1], m_kData[j].highPrice);
} else
{
sar[n - 1] = 1E+036F;
for(int j = n - 1; j >= 0; j--)
sar[n - 1] = Math.min(sar[n - 1], m_kData[j].lowPrice);
}
for(int i = n; i < m_kData.length; i++)
if(sign[i - 1] == 0.0F || sign[i - 1] == 16F)
{
if(m_kData[i].closePrice < sar[i - 1])
{
sar[i] = -1E+036F;
for(int j = i; j > i - n; j--)
sar[i] = Math.max(sar[i], m_kData[j].highPrice);
sign[i] = 17F;
xs = 0.02F;
} else
{
sar[i] = sar[i - 1] + xs * (m_kData[i - 1].highPrice - sar[i - 1]);
xs = xs >= 0.2F ? xs : xs + 0.02F;
sign[i] = 0.0F;
}
} else
if(m_kData[i].closePrice > sar[i - 1])
{
sar[i] = 1E+036F;
for(int j = i; j > i - n; j--)
sar[i] = Math.min(sar[i], m_kData[j].lowPrice);
sign[i] = 16F;
xs = 0.02F;
} else
{
sar[i] = sar[i - 1] + xs * (m_kData[i - 1].lowPrice - sar[i - 1]);
xs = xs >= 0.2F ? xs : xs + 0.02F;
sign[i] = 1.0F;
}
}
protected void GetMaxMin()
{
super.GetMaxMin();
GetValueMaxMin(m_data[0], m_iParam[0]);
if(m_rc.height > m_iTextH)
{
float temp = m_max - m_min;
m_max += ((m_pos.m_Ratio / 2.0F) * temp) / (float)(m_rc.height - m_iTextH);
m_min -= ((m_pos.m_Ratio / 2.0F) * temp) / (float)(m_rc.height - m_iTextH);
}
}
private void DrawSAR(Graphics g, int iBegin, float data[], float sign[], Color color[])
{
if(data == null || sign == null)
return;
Rectangle rect = new Rectangle(m_rc.x, m_rc.y + m_iTextH, m_rc.width, m_rc.height - m_iTextH);
if(m_max - m_min == 0.0F || rect.height <= 0)
return;
int begin = m_pos.m_Begin >= iBegin ? m_pos.m_Begin : iBegin;
float valuex = (float)rect.x + (float)(begin - m_pos.m_Begin) * m_pos.m_Ratio;
float valuey = (m_max - m_min) / (float)rect.height;
for(int i = begin; i <= m_pos.m_End; i++)
{
float value = (float)rect.y + (m_max - data[i]) / valuey;
if(sign[i] == 1.0F)
g.setColor(color[1]);
else
if(sign[i] == 0.0F)
g.setColor(color[0]);
else
g.setColor(color[2]);
int x1 = (int)valuex;
int y1 = (int)(value - m_pos.m_Ratio / 2.0F);
int x2 = (int)(valuex + m_pos.m_Ratio);
int y2 = (int)(value + m_pos.m_Ratio / 2.0F);
g.drawArc(x1, y1, x2 - x1, y2 - y1, 0, 360);
valuex += m_pos.m_Ratio;
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -