📄 draw_kline.java
字号:
if(vector.size() > 0) {
TradeTimeVO timeRange[] = Common.getTimeRange(code, ((MenuListener) (parent)).m_applet);
int totalMin = TradeTimeVO.GetIndexFromTime(((MenuListener) (parent)).m_applet.m_iTime / 100, timeRange);
int iLen = totalMin / 5;
if(totalMin % 5 > 0)
iLen++;
dataList = new KLineData[iLen];
int iCur = 0;
for(int i = 0; i < iLen; i++) {
int hhmm = TradeTimeVO.GetTimeFromIndex(i * 5 + 4, timeRange);
long cTime = (long)((MenuListener) (parent)).m_applet.m_iDate * 10000L + (long)hhmm;
if(iCur < vector.size()) {
data = (KLineData)vector.elementAt(iCur);
if(cTime == data.date) {
dataList[i] = data;
iCur++;
continue;
}
}
dataList[i] = new KLineData();
dataList[i].date = cTime;
if(i == 0) {
dataList[i].balancePrice = fPreClosePrice;
dataList[i].openPrice = dataList[i].highPrice = dataList[i].lowPrice = dataList[i].closePrice = fPreClosePrice;
dataList[i].reserveCount = 0;
dataList[i].totalAmount = 0L;
dataList[i].totalMoney = 0.0D;
} else {
dataList[i].balancePrice = dataList[i - 1].balancePrice;
dataList[i].openPrice = dataList[i].highPrice = dataList[i].lowPrice = dataList[i].closePrice = dataList[i - 1].closePrice;
dataList[i].reserveCount = dataList[i - 1].reserveCount;
dataList[i].totalAmount = 0L;
dataList[i].totalMoney = 0.0D;
}
}
}
return dataList;
}
private void MakeWeek() {
CodeTable codeTable = (CodeTable)((MenuListener) (parent)).m_applet.m_htProduct.get(m_product.sCode);
Vector vector = new Vector();
KLineData data = null;
for(int i = 0; i < m_kData.length; i++) {
boolean bNewWeek;
if(data != null) {
Calendar c1 = Calendar.getInstance();
c1.set((int)data.date / 10000, ((int)data.date / 100) % 100 - 1, (int)data.date % 100);
int iWeek1 = c1.get(7);
Calendar c2 = Calendar.getInstance();
c2.set((int)m_kData[i].date / 10000, ((int)m_kData[i].date / 100) % 100 - 1, (int)m_kData[i].date % 100);
int iWeek2 = c2.get(7);
if(iWeek1 >= iWeek2) {
bNewWeek = true;
} else {
c1.add(5, 7);
if(c1.before(c2))
bNewWeek = true;
else
bNewWeek = false;
}
} else {
bNewWeek = true;
}
if(bNewWeek) {
if(data != null) {
if(data.totalAmount > 0L)
if(codeTable != null)
data.balancePrice = (float)(data.totalMoney / (double)data.totalAmount / (double)codeTable.fUnit);
else
data.balancePrice = (float)(data.totalMoney / (double)data.totalAmount);
vector.addElement(data);
}
data = new KLineData();
data.closePrice = m_kData[i].closePrice;
data.date = m_kData[i].date;
data.highPrice = m_kData[i].highPrice;
data.lowPrice = m_kData[i].lowPrice;
data.openPrice = m_kData[i].openPrice;
data.balancePrice = m_kData[i].balancePrice;
data.totalAmount = m_kData[i].totalAmount;
data.totalMoney = m_kData[i].totalMoney;
data.reserveCount = m_kData[i].reserveCount;
} else {
data.date = m_kData[i].date;
if(m_kData[i].highPrice > data.highPrice)
data.highPrice = m_kData[i].highPrice;
if(m_kData[i].lowPrice < data.lowPrice)
data.lowPrice = m_kData[i].lowPrice;
data.closePrice = m_kData[i].closePrice;
data.balancePrice = m_kData[i].balancePrice;
data.totalAmount += m_kData[i].totalAmount;
data.totalMoney += m_kData[i].totalMoney;
data.reserveCount = m_kData[i].reserveCount;
}
}
if(data != null) {
if(data.totalAmount > 0L)
if(codeTable != null)
data.balancePrice = (float)(data.totalMoney / (double)data.totalAmount / (double)codeTable.fUnit);
else
data.balancePrice = (float)(data.totalMoney / (double)data.totalAmount);
vector.addElement(data);
}
m_kData = new KLineData[vector.size()];
for(int i = 0; i < vector.size(); i++)
m_kData[i] = (KLineData)vector.elementAt(i);
}
private void MakeMonth() {
Vector vector = new Vector();
KLineData data = null;
int iCurMonth = -1;
CodeTable codeTable = (CodeTable)((MenuListener) (parent)).m_applet.m_htProduct.get(m_product.sCode);
for(int i = 0; i < m_kData.length; i++) {
int iMonth = (int)m_kData[i].date / 100;
if(iMonth != iCurMonth) {
if(data != null) {
if(data.totalAmount > 0L)
if(codeTable != null)
data.balancePrice = (float)(data.totalMoney / (double)data.totalAmount / (double)codeTable.fUnit);
else
data.balancePrice = (float)(data.totalMoney / (double)data.totalAmount);
vector.addElement(data);
}
data = new KLineData();
data.closePrice = m_kData[i].closePrice;
data.highPrice = m_kData[i].highPrice;
data.lowPrice = m_kData[i].lowPrice;
data.openPrice = m_kData[i].openPrice;
data.balancePrice = m_kData[i].balancePrice;
data.totalAmount = m_kData[i].totalAmount;
data.totalMoney = m_kData[i].totalMoney;
data.reserveCount = m_kData[i].reserveCount;
data.date = iMonth * 100;
iCurMonth = iMonth;
} else {
if(m_kData[i].highPrice > data.highPrice)
data.highPrice = m_kData[i].highPrice;
if(m_kData[i].lowPrice < data.lowPrice)
data.lowPrice = m_kData[i].lowPrice;
data.closePrice = m_kData[i].closePrice;
data.balancePrice = m_kData[i].balancePrice;
data.totalAmount += m_kData[i].totalAmount;
data.totalMoney += m_kData[i].totalMoney;
data.reserveCount = m_kData[i].reserveCount;
}
}
if(data != null) {
if(data.totalAmount > 0L)
if(codeTable != null)
data.balancePrice = (float)(data.totalMoney / (double)data.totalAmount / (double)codeTable.fUnit);
else
data.balancePrice = (float)(data.totalMoney / (double)data.totalAmount);
vector.addElement(data);
}
m_kData = new KLineData[vector.size()];
for(int i = 0; i < vector.size(); i++)
m_kData[i] = (KLineData)vector.elementAt(i);
}
private void MakeMinCycle(int iMin) {
Vector vector = new Vector();
KLineData data = null;
long curDate = -1L;
CodeTable codeTable = (CodeTable)((MenuListener) (parent)).m_applet.m_htProduct.get(m_product.sCode);
for(int i = 0; i < m_kData.length; i++) {
long date = GetCurrentDateTime(m_kData[i].date, iMin);
if(date != curDate) {
if(data != null) {
if(data.totalAmount > 0L)
if(codeTable != null)
data.balancePrice = (float)(data.totalMoney / (double)data.totalAmount / (double)codeTable.fUnit);
else
data.balancePrice = (float)(data.totalMoney / (double)data.totalAmount);
vector.addElement(data);
}
data = new KLineData();
data.closePrice = m_kData[i].closePrice;
data.highPrice = m_kData[i].highPrice;
data.lowPrice = m_kData[i].lowPrice;
data.openPrice = m_kData[i].openPrice;
data.balancePrice = m_kData[i].balancePrice;
data.totalAmount = m_kData[i].totalAmount;
data.totalMoney = m_kData[i].totalMoney;
data.reserveCount = m_kData[i].reserveCount;
data.date = date;
curDate = date;
} else {
if(m_kData[i].highPrice > data.highPrice)
data.highPrice = m_kData[i].highPrice;
if(m_kData[i].lowPrice < data.lowPrice)
data.lowPrice = m_kData[i].lowPrice;
data.closePrice = m_kData[i].closePrice;
data.balancePrice = m_kData[i].balancePrice;
data.totalAmount += m_kData[i].totalAmount;
data.totalMoney += m_kData[i].totalMoney;
data.reserveCount = m_kData[i].reserveCount;
}
}
if(data != null) {
if(data.totalAmount > 0L)
if(codeTable != null)
data.balancePrice = (float)(data.totalMoney / (double)data.totalAmount / (double)codeTable.fUnit);
else
data.balancePrice = (float)(data.totalMoney / (double)data.totalAmount);
vector.addElement(data);
}
m_kData = new KLineData[vector.size()];
for(int i = 0; i < vector.size(); i++)
m_kData[i] = (KLineData)vector.elementAt(i);
}
private long GetCurrentDateTime(long date, int iMin) {
int iIndex = Common.GetTimeIndexFromTime((int)(date % 10000L), ((MenuListener) (parent)).m_applet.m_timeRange);
iIndex = ((iIndex + 1) / iMin + 1) * iMin - 1;
if(iIndex >= TradeTimeVO.GetTotalMinute(((MenuListener) (parent)).m_applet.m_timeRange))
iIndex = TradeTimeVO.GetTotalMinute(((MenuListener) (parent)).m_applet.m_timeRange) - 1;
int iTime = Common.GetTimeFromTimeIndex(iIndex, ((MenuListener) (parent)).m_applet.m_timeRange);
return (date / 10000L) * 10000L + (long)iTime;
}
boolean KeyPressed(KeyEvent e) {
int iKeyCode = e.getKeyCode();
boolean bResult = false;
switch(iKeyCode) {
default:
break;
case 119: // 'w'
ChangeCycle();
bResult = true;
break;
case 38: // '&'
bResult = ChangeRatio(true);
if(!bResult)
break;
if(!ChangeRatio(true))
parent.setMenuEnable("zoomin", false);
else
ChangeRatio(false);
parent.setMenuEnable("zoomout", true);
break;
case 40: // '('
bResult = ChangeRatio(false);
if(!bResult)
break;
if(!ChangeRatio(false))
parent.setMenuEnable("zoomout", false);
else
ChangeRatio(true);
parent.setMenuEnable("zoomin", true);
break;
case 37: // '%'
if(e.isControlDown()) {
m_pos.m_EndPos += m_pos.m_ScreenCount;
m_iPos -= m_pos.m_ScreenCount;
bResult = true;
break;
}
if(e.isShiftDown()) {
if(m_pos.m_Begin > 0) {
m_pos.m_EndPos++;
m_iPos--;
bResult = true;
}
} else {
bResult = ChangePos(true);
}
break;
case 39: // '\''
if(e.isControlDown()) {
m_pos.m_EndPos -= m_pos.m_ScreenCount;
m_iPos += m_pos.m_ScreenCount;
bResult = true;
break;
}
if(e.isShiftDown()) {
if(m_pos.m_Begin < m_pos.m_MaxPos) {
m_pos.m_EndPos--;
m_iPos++;
bResult = true;
}
} else {
bResult = ChangePos(false);
}
break;
case 27: // '\033'
if(m_iPos != -1) {
DrawCursor(-1);
((MenuListener) (parent)).m_applet.Repaint(m_rcLabel);
m_iPos = -1;
bResult = true;
}
break;
case 36: // '$'
ChangeIndicator(false);
bResult = true;
break;
case 35: // '#'
ChangeIndicator(true);
bResult = true;
break;
}
return bResult;
}
void ChangeKLineType(int iType) {
int iPrecision = ((MenuListener) (parent)).m_applet.GetPrecision(((MenuListener) (parent)).m_applet.strCurrentCode);
m_indicator[0] = new MA(m_pos, iType, iPrecision);
((MenuListener) (parent)).m_applet.repaint();
}
void ChangeCycle() {
if(((MenuListener) (parent)).m_applet.m_iKLineCycle >= 7)
((MenuListener) (parent)).m_applet.m_iKLineCycle = 1;
else
((MenuListener) (parent)).m_applet.m_iKLineCycle++;
m_iPos = -1;
m_pos.m_EndPos = 0;
m_pos.m_MaxPos = 0;
m_pos.m_End = 0;
m_pos.m_Begin = 0;
parent.AskForKLine();
}
boolean ChangeRatio(boolean b) {
if(b) {
if(m_pos.m_VirtualRatio >= 60)
return false;
m_pos.m_VirtualRatio = m_pos.m_VirtualRatio + 1;
} else {
if(m_pos.m_VirtualRatio <= 2)
return false;
m_pos.m_VirtualRatio = m_pos.m_VirtualRatio - 1;
}
cache_m_VirtualRatio = m_pos.m_VirtualRatio;
return true;
}
private void DrawCycle(Graphics g) {
String str = "";
switch(((MenuListener) (parent)).m_applet.m_iKLineCycle) {
case 1: // '\001'
str = ((MenuListener) (parent)).m_applet.getShowString("DayLine");
break;
case 2: // '\002'
str = ((MenuListener) (parent)).m_applet.getShowString("WeekLine");
break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -