Ejemplo n.º 1
0
        public List <CtpInfo> QueryMarketInfo(string instrument_id, int count)
        {
            List <CtpInfo> lists = new List <CtpInfo>();

            try
            {
                sqlConnection.Open();
                string sql = "SELECT * FROM market WHERE instrument_id = '" + instrument_id + "' ORDER BY m_data DESC LIMIT 0, " + count;
                //Console.WriteLine(sql);
                MySqlCommand    cmd    = new MySqlCommand(sql, sqlConnection);
                MySqlDataReader reader = cmd.ExecuteReader();
                while (reader.Read())//init index -1
                {
                    /*Console.WriteLine(reader.GetString("instrument_id") + "  " + reader.GetString("m_data") +
                     *  " " + reader.GetDouble("m_open") +
                     *  " " + reader.GetDouble("m_high") +
                     *  " " + reader.GetDouble("m_low") +
                     *  " " + reader.GetDouble("m_close"));*/
                    string  data    = reader.GetString("m_data");
                    double  m_open  = reader.GetDouble("m_open");
                    double  m_high  = reader.GetDouble("m_high");
                    double  m_low   = reader.GetDouble("m_low");
                    double  m_close = reader.GetDouble("m_close");
                    CtpInfo info    = new CtpInfo();
                    info.date  = Convert.ToDateTime(data);
                    info.open  = m_open;
                    info.high  = m_high;
                    info.low   = m_low;
                    info.close = m_close;
                    lists.Add(info);
                }
            }
            catch (MySqlException ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                sqlConnection.Close();
            }
            return(lists);
        }
Ejemplo n.º 2
0
        // public void AddContract(string instrumentID) {
        //     TradeContractList.Add(instrumentID);
        // }
        public void ITick(FormTrade formTrade, ref CThostFtdcDepthMarketDataField pDepthMarketData)
        {
            if (which == pDepthMarketData.InstrumentID)
            {
                Console.WriteLine("strategy tick tradestrategy[0] = " + tradestrategy[0]);
                if (tradestrategy[0] == 1)
                {
                    tickprice[3] = tickprice[2];
                    tickprice[2] = tickprice[1];
                    tickprice[1] = tickprice[0];
                    tickprice[0] = pDepthMarketData.LastPrice;

                    //Console.WriteLine(tickprice[0] + "," + tickprice[1] + "," + tickprice[2]);

                    if (tickprice[0] > tickprice[1] && tickprice[1] > tickprice[2] &&
                        tickprice[2] > tickprice[3])
                    {
                        if (TradeHave[0] == 0)
                        {
                            //3 TICK up,buy
                            formTrade.tradeApi.OrderInsert(pDepthMarketData.InstrumentID, EnumOffsetFlagType.Open, EnumDirectionType.Buy,
                                                           pDepthMarketData.LastPrice + 10, //价格
                                                           1);
                            buyprice[0]  = pDepthMarketData.LastPrice;
                            TradeHave[0] = 1;
                        }
                    }
                    else if (tickprice[0] < tickprice[1] && tickprice[1] < tickprice[2] &&
                             tickprice[2] < tickprice[3])
                    {
                        //3 TICK down,Sell
                        if (TradeHave[0] == 1)
                        {
                            formTrade.tradeApi.OrderInsert(pDepthMarketData.InstrumentID, EnumOffsetFlagType.Open, EnumDirectionType.Sell,
                                                           pDepthMarketData.LastPrice - 10, //价格
                                                           1);

                            TradeHave[0] = 0;
                        }
                    }
                }
                else if (tradestrategy[0] == 2)
                {
                    List <CtpInfo> lists = formTrade.dbConn.QueryMarketInfo(which, 1);

                    //Console.WriteLine("database: " + lists.Count);

                    CtpInfo ctpInfo = lists[0];
                    if (lists.Count == 0)
                    {
                        return;
                    }
                    double v1 = ctpInfo.high - ctpInfo.close, v2 = ctpInfo.close - ctpInfo.low;
                    double mx     = Math.Max(v1, v2);
                    double offset = mx * 0.7;

                    double todayOpen = pDepthMarketData.OpenPrice;

                    //Console.WriteLine("LastPrice = " + pDepthMarketData.LastPrice + ", " + todayOpen + "+" + offset);

                    if (TradeHave[0] == 0)
                    {
                        if (pDepthMarketData.LastPrice > todayOpen + offset)
                        { // buy
                            buyprice[0] = pDepthMarketData.LastPrice;
                            formTrade.tradeApi.OrderInsert(pDepthMarketData.InstrumentID, EnumOffsetFlagType.Open, EnumDirectionType.Buy,
                                                           pDepthMarketData.LastPrice + 10, //价格
                                                           1);
                            TradeHave[0] = 1;
                        }
                    }
                    else if (TradeHave[0] == 1)
                    {
                        if (pDepthMarketData.LastPrice < todayOpen - offset)
                        {
                            formTrade.tradeApi.OrderInsert(pDepthMarketData.InstrumentID, EnumOffsetFlagType.Open, EnumDirectionType.Sell,
                                                           pDepthMarketData.LastPrice - 10, //价格
                                                           1);
                            TradeHave[0] = 0;
                        }
                        else if (pDepthMarketData.LastPrice > buyprice[0] + winstoparr[0])   // 盈利大于预设
                        {
                            formTrade.tradeApi.OrderInsert(pDepthMarketData.InstrumentID, EnumOffsetFlagType.Open, EnumDirectionType.Sell,
                                                           pDepthMarketData.LastPrice - 10, //价格
                                                           1);
                            TradeHave[0] = 0;
                        }
                    }
                }
            }
        }