⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 draw_kline.java

📁 一份java写的期货交易程序
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
                            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;

        case 3: // '\003'
            str = ((MenuListener) (parent)).m_applet.getShowString("MonthLine");
            break;

        case 4: // '\004'
            str = ((MenuListener) (parent)).m_applet.getShowString("5MinLine");
            break;

        case 5: // '\005'
            str = ((MenuListener) (parent)).m_applet.getShowString("15MinLine");
            break;

        case 6: // '\006'
            str = ((MenuListener) (parent)).m_applet.getShowString("30MinLine");
            break;

        case 7: // '\007'
            str = ((MenuListener) (parent)).m_applet.getShowString("60MinLine");
            break;
        }
        g.setFont(new Font("宋体", 0, 14));
        FontMetrics fm = g.getFontMetrics();
        int x = m_rcPane[0].x - fm.stringWidth(str) - 1;
        int y = m_rcPane[0].y + fm.getAscent();
        g.setColor(HQApplet.rhColor.clItem);
        g.drawString(str, x, y);
    }

    private boolean ChangePos(boolean bIsLeft)
    {
        boolean bNeedRepaint = false;
        if(m_kData.length == 0)
            return bNeedRepaint;
        if(m_iPos == -1)
        {
            if(bIsLeft)
                DrawCursor(m_pos.m_End - m_pos.m_Begin);
            else
                DrawCursor(0);
            DrawLabel();
        } else
        if(bIsLeft)
        {
            if(m_iPos == 0)
            {
                if(m_pos.m_Begin > 0)
                {
                    m_pos.m_EndPos++;
                    bNeedRepaint = true;
                } else
                {
                    return false;
                }
            } else
            {
                DrawCursor(m_iPos - 1);
                DrawLabel();
            }
        } else
        if(m_iPos == m_pos.m_End - m_pos.m_Begin)
        {
            if(m_pos.m_Begin < m_pos.m_MaxPos)
            {
                bNeedRepaint = true;
                m_pos.m_EndPos--;
            } else
            {
                return false;
            }
        } else
        {
            DrawCursor(m_iPos + 1);
            DrawLabel();
        }
        return bNeedRepaint;
    }

    boolean MouseLeftClicked(int x, int y)
    {
        if(m_rcPane[0] == null)
            return false;
        if(x < m_rcPane[0].x || x > m_rcPane[0].x + m_rcPane[0].width)
            return false;
        int iNewPos = (int)((float)(x - m_rcPane[0].x) / m_pos.m_Ratio);
        if(iNewPos != m_iPos && iNewPos >= 0 && iNewPos <= m_pos.m_End - m_pos.m_Begin)
        {
            DrawCursor(iNewPos);
            DrawLabel();
        }
        return false;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -