2. 股價分析程式
題目Excel資料有誤... 資測資料與題目不符
# bad sorting
all.Sort(new Comparison<object[]>((r, x) =>
{
double a = (double)r[1];
double b = (double)x[1];
if (a == b) return 0;
if (a > b) return -1;
return 1;
}));# good sorting
all.OrderByDescending(e => (double)e[1]).ToList();using System.Reflection.Metadata.Ecma335;
Console.WriteLine("讀入 ./10809.txt 檔");
List<Object[]> data = new List<object[]>();
foreach (var item in File.OpenText(AppDomain.CurrentDomain.BaseDirectory + "/10809.txt").ReadToEnd().Split('\n'))
{
var t = item.Split(' ');
data.Add(new Object[] {
t[0],
t[1],
double.Parse(t[2]),
double.Parse(t[3]),
double.Parse(t[4]),
double.Parse(t[5]),
double.Parse(t[6]),
int.Parse(t[7]),
double.Parse(t[6])- double.Parse(t[2]),
(double.Parse(t[6])- double.Parse(t[2]))/ double.Parse(t[2])
});
};
data.Sort(new Comparison<object[]>((r, x) =>
{
double a = (double)r[8];
double b = (double)x[8];
if (a == b) return 0;
if (a > b) return -1;
return 1;
}));
Console.WriteLine($"漲跌價最高之3支股票(漲價元) : {string.Join(" ", data.Take(3).Select(e => $"{e[1]}({e[8]:0.00})"))}");
data.Sort(new Comparison<object[]>((r, x) =>
{
double a = (double)r[8];
double b = (double)x[8];
if (a == b) return 0;
if (a > b) return 1;
return -1;
}));
Console.WriteLine($"漲跌價最高之3支股票(跌價元) : {string.Join(" ", data.Take(3).Reverse().Select(e => $"{e[1]}({e[8]:0.00})"))}");
data.Sort(new Comparison<object[]>((r, x) =>
{
double a = (double)r[9];
double b = (double)x[9];
if (a == b) return 0;
if (a > b) return -1;
return 1;
}));
Console.WriteLine($"漲跌幅最高之3支股票(漲幅%) : {string.Join(" ", data.Take(3).Select(e => $"{e[1]}({((double)e[9] * 100):0.00}%)"))}");
data.Sort(new Comparison<object[]>((r, x) =>
{
double a = (double)r[9];
double b = (double)x[9];
if (a == b) return 0;
if (a > b) return 1;
return -1;
}));
Console.WriteLine($"漲跌幅最低之3支股票(跌幅%) : {string.Join(" ", data.Take(3).Reverse().Select(e => $"{e[1]}({((double)e[9] * 100):0.00}%)"))}");
var all = new List<Object[]>();
data.ForEach(e =>
{
var close = (double)e[2];
double up = 0.01;
if (close >= 1000) up = 5;
else if (close >= 500) up = 1;
else if (close >= 100) up = 0.5;
else if (close >= 50) up = 0.1;
else if (close >= 10) up = 0.05;
var d = (int)(close * 0.1 / up);
var stop = close + d * up;
if ((double)e[6] >= stop)
{
all.Add(new[] { e[1], e[8] });
}
});
all.Sort(new Comparison<object[]>((r, x) =>
{
double a = (double)r[1];
double b = (double)x[1];
if (a == b) return 0;
if (a > b) return -1;
return 1;
}));
Console.WriteLine($"所有漲停股票(漲停價元) : {string.Join(" ", all.Select(e => $"{e[0]}({e[1]:0.##})"))}");
all.Clear();
data.ForEach(e =>
{
var close = (double)e[2];
double up = 0.01;
if (close >= 1000) up = 5;
else if (close >= 500) up = 1;
else if (close >= 100) up = 0.5;
else if (close >= 50) up = 0.1;
else if (close >= 10) up = 0.05;
var d = (int)(close * 0.1 / up);
var stop = close - d * up;
if ((double)e[6] <= stop)
{
all.Add(new[] { e[1], e[8] });
}
});
all.Sort(new Comparison<object[]>((r, x) =>
{
double a = (double)r[1];
double b = (double)x[1];
if (a == b) return 0;
if (a > b) return -1;
return 1;
}));
Console.WriteLine($"所有跌停股票(跌停價元) : {string.Join(" ", all.Select(e => $"{e[0]}({e[1]:0.##})"))}");
Last updated