Beispiel #1
0
    public static void WatchKDJMACD()
    {
        for (; true;)
        {
            foreach (string gid in Util.GetAllGids())
            {
                if (Util.IsTransacTime(DateTime.Now))
                {
                    try
                    {
                        KLine[] kArrDay = KLine.GetLocalKLine(gid, "day");
                        KLine.ComputeRSV(kArrDay);
                        KLine.ComputeKDJ(kArrDay);
                        KLine.SearchKDJAlert(kArrDay, kArrDay.Length - 1);
                        KLine.ComputeMACD(kArrDay);
                        KLine.SearchMACDAlert(kArrDay, kArrDay.Length - 1);


                        //KLine.SearchKDJAlert(gid, "day", DateTime.Now);


                        //KLine.SearchKDJAlert(gid, "1hr", DateTime.Now);
                        //KLine.SearchKDJAlert(gid, "30min", DateTime.Now);
                        //KLine.SearchKDJAlert(gid, "15min", DateTime.Now);
                    }
                    catch
                    {
                    }
                }
            }
            Thread.Sleep(1000);
        }
    }
Beispiel #2
0
    public static void WatchEachStock()
    {
        if (!Util.IsTransacTime(DateTime.Now))
        {
            return;
        }

        DataTable dt = DBHelper.GetDataTable(" select [name]  from dbo.sysobjects where OBJECTPROPERTY(id, N'IsUserTable') = 1 and name like '%timeline'");

        foreach (DataRow dr in dt.Rows)
        {
            Stock s = new Stock(dr[0].ToString().Replace("_timeline", ""));
            s.kArr = KLine.GetLocalKLine(s.gid, "day");
            if (s.IsOver3X3(DateTime.Parse(DateTime.Now.ToShortDateString())))
            {
                string stockName = s.Name;
                string message   = s.gid.Trim() + "[" + stockName.Trim() + "]已经突破3线,并且当日涨幅超过2%";
                if (AddAlert(DateTime.Now, s.gid, "over3line", s.Name.Trim(), message.Trim()))
                {
                    /*
                     * SendAlertMessage("oqrMvtySBUCd-r6-ZIivSwsmzr44", s.gid, stockName, s.LastTrade, "over3line");
                     * SendAlertMessage("oqrMvt6-N8N1kGONOg7fzQM7VIRg", s.gid, stockName, s.LastTrade, "over3line");
                     * SendAlertMessage("oqrMvt8K6cwKt5T1yAavEylbJaRs", s.gid, stockName, s.LastTrade, "over3line");
                     */

                    try
                    {
                        double yesterdayPositiveRate = s.yesterdayPositiveRate(DateTime.Parse(DateTime.Now.ToShortDateString() + " 9:30"));
                        DBHelper.InsertData("suggest_stock", new string[, ] {
                            { "suggest_date", "datetime", DateTime.Now.ToShortDateString() },
                            { "gid", "varchar", s.gid },
                            { "[name]", "varchar", s.Name },
                            { "settlement", "float", s.kArr[s.kArr.Length - 1].endPrice.ToString() },
                            { "[open]", "float", s.kArr[s.kArr.Length - 1].startPrice.ToString() },
                            { "avg_3_3_yesterday", "float", s.GetAverageSettlePrice(s.kArr.Length - 2, 3, 3).ToString() },
                            { "avg_3_3_today", "float", s.GetAverageSettlePrice(s.kArr.Length - 1, 3, 3).ToString() },
                            { "double_cross_3_3", "int", (s.IsCross3X3Twice(DateTime.Parse(DateTime.Now.ToShortDateString()), 20)? "1" : "0") },
                            { "last_day_over_flow", "float", yesterdayPositiveRate.ToString() },
                            { "is_cross_3_3", "int", "1" }
                        });
                    }
                    catch
                    {
                    }


                    //SendAlertMessage("oqrMvtySBUCd-r6-ZIivSwsmzr44", message.Trim());
                    //SendAlertMessage("oqrMvt6-N8N1kGONOg7fzQM7VIRg", message.Trim());
                    //SendAlertMessage("oqrMvt8K6cwKt5T1yAavEylbJaRs", message.Trim());
                }
            }

            DateTime volumeTime = GetVolumeIncrease(s.gid, DateTime.Parse(DateTime.Now.ToShortDateString()), true);
            if (volumeTime > DateTime.Parse("2011-1-1"))
            {
                string stockName = s.Name;
                string message   = s.gid.Trim() + "[" + stockName.Trim() + "]放量";
                if (AddAlert(volumeTime, s.gid, "volumeincrease", s.Name.Trim(), message.Trim()))
                {
                    //SendAlertMessage("oqrMvtySBUCd-r6-ZIivSwsmzr44", s.gid, stockName, s.LastTrade, "volumeincrease");
                    //SendAlertMessage("oqrMvt6-N8N1kGONOg7fzQM7VIRg", s.gid, stockName, s.LastTrade, "volumeincrease");
                    SendAlertMessage("oqrMvt8K6cwKt5T1yAavEylbJaRs", s.gid, stockName, s.LastTrade, "volumeincrease");
                }
            }
        }
    }