首页 > 编程语言 >C#股票策略一二

C#股票策略一二

时间:2023-08-08 15:14:06浏览次数:196  
标签:lastMA 1.17 Console 策略 C# double 一二 https RSI

//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/

标签:lastMA,1.17,Console,策略,C#,double,一二,https,RSI
From: https://www.cnblogs.com/shiningleo007/p/17614368.html

相关文章

  • ASP.NET Core 中的显示和编辑器模板
    显示模板和编辑器模板指定了自定义类型的用户界面布局。考虑下列 Address 模型:C#复制 publicclassAddress{publicintId{get;set;}publicstringFirstName{get;set;}=null!;publicstringMiddleName{get;set;}=null!;publicst......
  • H7-TOOL的高速DAPLINK用于新版STM32CubeIDE V1.13及其以上版本的超简单实现方法(2023-0
    之前分享了一个方法,太繁琐了,H7-TOOL群的群友提供了一个方法,实现非常简单。1、使用STM32CubeMX或者自己创建一个STM32CubeIDE工程后,设置这两个地方即可: 配置调试器,设置完毕记得点击右下角的Apply2、然后修改这个cfg文件,F407IGTDebug.cfg,注意和第1步cfg是一个文件。修改......
  • bigdecimal保留两位小数
    bigdecimal保留两位小数1publicclasstest1_format{2publicstaticvoidmain(String[]args){3BigDecimaldecimal=newBigDecimal("1.12345");4System.out.println(decimal);5BigDecimalsetScale=decimal.setScale(4,BigDecimal.ROUND_HALF_DOWN)......
  • 数字滚动插件vue-countup-v2
    参考博客https://blog.csdn.net/weixin_44948981/article/details/123544242options参数说明duration:2,//动画持续时间(秒)useEasing:true,//使用缓动效果useGrouping:true,//使用分组分隔符(如1,000)separator:',',//分组分隔符decimal:'.',//小数点符号pref......
  • BOSHIDA DC电源模块负载情况的原因
    BOSHIDADC电源模块负载情况的原因BOSHIDADC电源模块负载情况通常是指在实际应用中,所使用的电源模块的实际输出负载比设计参数有所不同的情况。这种情况很常见,可能是因为以下几个方面的原因: 1.设计参数不准确在设计电源模块时,如果设计参数不准确,可能会导致输出电流、电压等......
  • 视频汇聚平台视频融合平台LiteCVR播放异常事故分析解决
     LiteCVR视频融合平台基于云边端协同架构,通过统一汇聚、整合和集中管理分散的各类视频资源,实现对视频资源的精细调度、鉴权管理、按需调阅、全网分发和智能分析等功能。随着智慧城市及“一网统管”模式的建设进程加快,LiteCVR视频平台具备了汇聚和管理城市各个业务场景中的视频资源......
  • 利用uplugin对比Webpack和Rollup插件系统
    本文由华为云云岭团队松塔同学分享~江湖上一直流传一种说法:Rollup的插件系统设计,相比与webpack,要更加科学顺手。(网络上对webpack插件编写的吐槽不计其数)Talkischeap,本文基于unplugin这个三方库来对比研究一下二者的插件系统。Unplugin是一个插件编写工具,它可以让开发者用......
  • 融云:从「对话框」跳进魔法世界,AIGC 带给社交的新范式
    AIGC与社交结合的应用主要分两种,一是发乎于AIGC,以大模型为基础提供虚拟伴侣等服务的App;二是在原先已经十分成熟的产品中,添加了AIGC能力以触发新场景和新玩法的社交App。关注【融云全球互联网通信云】了解更多简而言之,以产品倚重点不同来划分,二者形态分别是“AIGC+”和“+AIGC......
  • 【数据挖掘 | 可视化】 WordCloud 词云(附详细代码案例)
    ......
  • 【C语言基础练习】
    学习来源:https://www.bilibili.com/video/BV1q54y1q79w/?spm_id_from=333.337.search-card.all.click1.判断一个数是否为奇数。#include<stdio.h>intmain(){ inta; printf("请输入需要判断的数字\n"); scanf_s("%d",&a); if(a%2==1) printf("奇数\......