示例#1
0
        private void push_renkoVal()
        {
            if (m_rates.getRenko(0) == null)
            {
                return;
            }
            if (Math.Abs(m_dRenkoVal_last - m_rates.getRenko(0).dAsk) < CFATCommon.ESP)
            {
                return;
            }

            m_product_A_rk.pushTick(m_product_A.m_dAsk, m_product_A.m_dBid, m_product_A.getTickTime());

//HSM_CCV2
            if (m_nType_price == EPRODUCT_TYPE_PRICE.A_BC)
            {
                m_product_B_rk.pushTick(m_product_B.m_dAsk * m_product_C.getRenko(0).dAsk / m_dRatio_AB,
                                        m_product_B.m_dBid * m_product_C.getRenko(0).dBid / m_dRatio_AB,
                                        m_product_B.getTickTime());
            }

            if (m_nType_price == EPRODUCT_TYPE_PRICE.A_B05C)
            {
                m_product_B_rk.pushTick(m_product_B.m_dAsk * 0.5 * (m_product_C.m_dAsk + USDCNY_C0) / m_dRatio_AB,
                                        m_product_B.m_dBid * 0.5 * (m_product_C.m_dBid + USDCNY_C0) / m_dRatio_AB,
                                        m_product_B.getTickTime());
            }

            if (m_nType_price == EPRODUCT_TYPE_PRICE.A_B)
            {
                m_product_B_rk.pushTick(m_product_B.m_dAsk, m_product_B.m_dBid, m_product_B.getTickTime());
            }

//             string sRates = string.Format("{0},{1},{2},{3},{4}", CFATCommon.m_dtCurTime,
//                 m_product_A_rk.getTick(0).dAsk, m_product_A_rk.getTick(0).dBid,
//                 m_product_B_rk.getTick(0).dAsk, m_product_B_rk.getTick(0).dBid);
//             CFATLogger.record_rates("Test\\renko", sRates);

            m_dRenkoVal_last = m_rates.getRenko(0).dAsk;
        }
示例#2
0
        public bool updateRates()
        {
            m_product_A.getRates();
            m_product_B.getRates();

            if (m_nType_price != EPRODUCT_TYPE_PRICE.A_B)
            {
                m_product_C.getRates();
            }

            switch (m_nType_price)
            {
            case EPRODUCT_TYPE_PRICE.A_B:
                m_dBid = m_product_A.m_dBid - m_product_B.m_dAsk;
                m_dAsk = m_product_A.m_dAsk - m_product_B.m_dBid;
                break;

            case EPRODUCT_TYPE_PRICE.A_BC:
                m_dBid = m_product_A.m_dBid - m_product_B.m_dAsk * m_product_C.getRenko(0).dAsk / m_dRatio_AB;
                m_dAsk = m_product_A.m_dAsk - m_product_B.m_dBid * m_product_C.getRenko(0).dBid / m_dRatio_AB;
                break;

            case EPRODUCT_TYPE_PRICE.A_B05C:
                m_dBid = m_product_A.m_dBid - m_product_B.m_dAsk * 0.5 * (m_product_C.m_dAsk + USDCNY_C0) / m_dRatio_AB;
                m_dAsk = m_product_A.m_dAsk - m_product_B.m_dBid * 0.5 * (m_product_C.m_dBid + USDCNY_C0) / m_dRatio_AB;
                break;

            default:
                return(false);
            }

            m_rates.pushTick(m_dAsk, m_dBid, m_product_A.getTickTime());
            m_dMid = (m_dBid + m_dAsk) / 2;

            if (m_bUseRenko)
            {
                push_renkoVal();
            }

            return(true);
        }