C#股票策略一二

发布时间 2023-08-08 15:09:39作者: 有翅膀的大象
//information
//Console.WriteLine("Hello, World!");
//double[] price = new double[] { 1.10, 1.12, 1.15, 1.16, 1.17, 1.18, 1.17, 1.15, 1.16, 1.17, 1.18 };

//double[] ma = MovingAverage(price, 3); // 计算3 日均线
//double lastPrice = price[price.Length - 1];
//double lastMA = ma[ma.Length - 1];
//double prevMA = ma[ma.Length - 2];

//if (lastPrice > lastMA && prevMA > lastMA) // 金叉买入
//{
//    Console.WriteLine("购买:价格={0},均线={1}", lastPrice, lastMA);
//    // 交易相关代码
//    Console.Read();
//}
//else if (lastPrice < lastMA && prevMA < lastMA) // 死叉卖出
//{
//    Console.WriteLine("卖出:价格={0},均线={1}", lastPrice, lastMA);
//    // 交易相关代码
//    Console.Read();
//}
double[] priceHistory = new double[] { 1.10, 1.12, 1.15, 1.16, 1.17, 1.18, 1.17, 1.15, 1.16, 1.17, 1.18 };
//List<double> priceHistory = new List<double>(); // 假设已经获取了市场历史价格
double price = 1.15; // 假设当前市场价格为1.15美元

// 计算RSI指标
double rsi = RSI(priceHistory, 14);

if (rsi >= 70) // 超买信号,卖出头寸
{
    Console.WriteLine("卖出:价格={0} 美元,RSI={1}", price, rsi);
    // 交易相关代码
    Console.Read();
}
else if (rsi <= 30) // 超卖信号,买入头寸
{
    Console.WriteLine("购买:价格={0} 美元,RSI={1}", price, rsi);
    // 交易相关代码
    Console.Read();
}

// 计算移动平均线
//static double[] MovingAverage(double[] data, int period)
//{
//    double[] ma = new double[data.Length];

//    for (int i = period - 1; i < data.Length; i++)
//    {
//        double sum = 0;
//        for (int j = i - period + 1; j <= i; j++)
//        {
//            sum += data[j];
//        }
//        ma[i] = sum / period;
//    }

//    return ma;
//}

// 计算RSI指标
static double RSI(double[] prices, int period)
{
    double gainSum = 0;
    double lossSum = 0;

    // 计算每日涨跌幅
    for (int i = 1; i < prices.Length; i++)
    {
        double diff = prices[i] - prices[i - 1];
        if (diff > 0)
        {
            gainSum += diff;
        }
        else
        {
            lossSum += Math.Abs(diff);
        }
    }

    // 计算平均涨跌幅和RSI
    double avgGain = gainSum / period;
    double avgLoss = lossSum / period;
    double rs = avgGain / avgLoss;
    double rsi = 100 - (100 / (1 + rs));

    return rsi;
}
View Code

1简单的MA均线交易策略——当价格上叉均线时开仓买入,当价格下叉均线时平仓卖出。该策略可以通过更改均线计算的天数、交易的资产类别和交易规则等参数进行扩展和优化

2策略利用相对强弱指数(RSI)来判断市场是否处于超买/超卖状态。当RSI指标超过70时,市场处于超买状态,应该进行卖出操作;当RSI指标低于30时,市场处于超卖状态,应该进行买入操作。

相对强弱指数(Relative Strength Index,RSI)是一种用于分析市场趋势的技术指标,由J. Welles Wilder于1978年提出。RSI指标可以显示市场的超买超卖情况,判断市场当前的价格是否已经过高或过低,以帮助交易者进行合理的买卖决策。

RSI指标通常使用以14日为计算期间,对股票上涨日和下跌日的涨幅和跌幅平均值进行计算,由此得到一个介于0~100之间的数值。一般来说,RSI值大于70时被认为是超买信号,暗示市场价格已经过高,可能会出现回调或下跌;RSI值小于30时被认为是超卖信号,暗示市场价格已经过低,可能会出现反弹或上涨。

值得注意的是,RSI指标只是一种辅助工具,较为可靠的交易决策应该建立在准确的市场分析和深入的研究之上,不能仅凭RSI等指标进行决策。

  1. AnalystPrep: https://analystprep.com/
  2. Kaplan Schweser: https://www.schweser.com/cfa
  3. CFA Institute: https://www.cfainstitute.org/en/programs/cfa/curriculum/study-sessions
  4. Wiley Efficient Learning: https://www.efficientlearning.com/cfa/
  5. AdaptPrep: https://www.adaptprep.com/cfa
  6. FinQuiz: https://www.finquiz.com/
  7. AnalystNotes: https://www.analystnotes.com/