Ⅰ 关于expma和ema以及macd的问题
楼主是不是要自己写程序来计算 EMA 和 MACD 啊?
粘贴一段我写的 SQL Server 的 函数,用于返回股票的 EMA 数据的,搂主可以参考参考。
如果楼主不是要写程序自己计算的话……
只要知道 金叉买入 死叉卖出就好了,呵呵。
execute dbo.sp_executesql @statement = N'-- =============================================
-- Author: <Edward Wang>
-- Create date: <2010.8.6>
-- Description: <股票 移动指数平均 函数>
-- 第一个参数:股票代码
-- 第二个参数:多少天的均线
-- 返回:该股票的 指定日期均线数据.
-- =============================================
CREATE FUNCTION [dbo].[EmaAllDay]
(
@StockCode AS varchar(10),
@EmaDays AS int
)
RETURNS @ema TABLE
(
StockCode varchar(10) NOT NULL,
BusinessDay [datetime] NOT NULL,
EmaOpenPrice [decimal](10, 3) NOT NULL,
EmaHighPrice [decimal](10, 3) NOT NULL,
EmaLowPrice [decimal](10, 3) NOT NULL,
EmaClosePrice [decimal](10, 3) NOT NULL,
EmaTransactNumber [decimal](15, 0) NOT NULL,
EmaTransactAmount [decimal](20, 0) NOT NULL
)
AS
BEGIN
DECLARE
@KValue AS [decimal](10, 5),
@EmaBusinessDay AS [datetime],
@EmaOpenPrice AS [decimal](10, 3),
@EmaHighPrice AS [decimal](10, 3),
@EmaLowPrice AS [decimal](10, 3),
@EmaClosePrice AS [decimal](10, 3),
@EmaTransactNumber AS [decimal](15, 0),
@EmaTransactAmount AS [decimal](20, 0),
@BusinessDay AS [datetime],
@OpenPrice AS [decimal](10, 3),
@HighPrice AS [decimal](10, 3),
@LowPrice AS [decimal](10, 3),
@ClosePrice AS [decimal](10, 3),
@TransactNumber AS [decimal](15, 0),
@TransactAmount AS [decimal](20, 0);
DECLARE C CURSOR FAST_FORWARD FOR
SELECT
business_day
,open_price
,high_price
,low_price
,close_price
,transact_number
,transact_amount
FROM
stock_day
WHERE
stock_code = @StockCode
ORDER BY
business_day;
-- 首先计算第一个 简单移动品均值.
SELECT
top 1
@EmaBusinessDay = BusinessDay,
@EmaOpenPrice = MaOpenPrice,
@EmaHighPrice = MaHighPrice,
@EmaLowPrice = MaLowPrice,
@EmaClosePrice = MaClosePrice,
@EmaTransactNumber = MaTransactNumber,
@EmaTransactAmount = MaTransactAmount
FROM
MaAllDay(@StockCode, @EmaDays)
ORDER BY
BusinessDay;
-- 第一个 移动指数平均 = 简单移动平均
INSERT INTO @ema (
StockCode, BusinessDay, EmaOpenPrice,
EmaHighPrice, EmaLowPrice, EmaClosePrice,
EmaTransactNumber, EmaTransactAmount
) VALUES (
@StockCode, @EmaBusinessDay, @EmaOpenPrice,
@EmaHighPrice, @EmaLowPrice, @EmaClosePrice,
@EmaTransactNumber, @EmaTransactAmount
)
-- 打开游标,开始计算后面的 指数移动平均
OPEN C;
-- 填充数据.
FETCH NEXT FROM C INTO @BusinessDay,
@OpenPrice,
@HighPrice,
@LowPrice,
@ClosePrice,
@TransactNumber,
@TransactAmount;
-- 指数移动平均 = 今天 * K + 昨天的EMA * (1-K)
-- K = 2 / (N+1)
-- N = EMA 天数
-- 注意:这里要写 @EmaDays + 1.0, 因为 @EmaDays 为整数型, 计算结果会被取整, 1.0 使计算结果为小数.
SET @KValue = 2 / (@EmaDays + 1.0);
WHILE @@fetch_status = 0
BEGIN
IF @EmaBusinessDay < @BusinessDay
BEGIN
-- 当每天的数据的日期,大于 第一个 简单移动品均 的日期后,才开始计算.
-- 指数移动平均 = 今天 * K + 昨天的EMA * (1-K)
SET @EmaOpenPrice = @OpenPrice * @KValue + @EmaOpenPrice * (1 - @KValue);
SET @EmaHighPrice = @HighPrice * @KValue + @EmaHighPrice * (1 - @KValue);
SET @EmaLowPrice = @LowPrice * @KValue + @EmaLowPrice * (1 - @KValue);
SET @EmaClosePrice = @ClosePrice * @KValue + @EmaClosePrice * (1 - @KValue);
SET @EmaTransactNumber = @TransactNumber * @KValue + @EmaTransactNumber * (1 - @KValue);
SET @EmaTransactAmount = @TransactAmount * @KValue + @EmaTransactAmount * (1 - @KValue);
-- 插入到返回数据表中.
INSERT INTO @ema (
StockCode, BusinessDay, EmaOpenPrice,
EmaHighPrice, EmaLowPrice, EmaClosePrice,
EmaTransactNumber, EmaTransactAmount
) VALUES (
@StockCode, @BusinessDay, @EmaOpenPrice,
@EmaHighPrice, @EmaLowPrice, @EmaClosePrice,
@EmaTransactNumber, @EmaTransactAmount
)
END
-- 填充 下一条 数据.
FETCH NEXT FROM C INTO @BusinessDay,
@OpenPrice,
@HighPrice,
@LowPrice,
@ClosePrice,
@TransactNumber,
@TransactAmount;
END
-- 关闭游标.
CLOSE C;
-- 释放游标.
DEALLOCATE C;
RETURN;
END
Ⅱ 股票 求一个选股公式
{已通过,请查收}
{黑马出现选股:}
中入:=(transactvol(1,1)-transactvol(1,2))*100/capital;
中出:=(transactvol(2,1)-transactvol(2,2))*100/capital;
小入:=(transactvol(1,0)-(transactvol(1,3)+transactvol(1,2)+transactvol(1,1)))*100/capital;
小出:=(transactvol(2,0)-(transactvol(2,3)+transactvol(2,2)+transactvol(2,1)))*100/capital;
跟风散户入:=中入+小入;
跟风散户出:=中出+小出;
主入:=transactvol(1,2)*100/capital;
主出:=transactvol(2,2)*100/capital;
DDX2:=(ordervol(1,2)-ordervol(2,2))*100/capital;
主力DDX:=SUM(DDX2,0);
主买:=SUM(主入,0);
主卖:=SUM(主出,0);
跟买:=SUM(跟风散户入,0);
跟卖:=SUM(跟风散户出,0);
黑马出现:cross(跟买,跟卖) AND 跟买> 跟卖 AND 主力DDX>0 AND 主买> 主卖 ;
{你的公式是分时预警选股,所以,请耐心看完下面的附言:}
由于大智慧并不支持分时图公式选股和预警,众多的信号无法在短时间内即刻发现,失去了有可能的捕捉机会。分时图横轴単位是-分钟,那么,能否将此公式引入-分钟周期而信号与分时图同步产生?这是盘中产生预警的关键。
对比分时图和-分钟周期图的股价轨迹,我们发现只要在-分钟周期中令今日以前的数据为无效或零值,即强制公式只读入今日的交易数据,这样一来,分时图和-分钟周期图的股价轨迹将会同步重合,分时图中产生的信号在-分钟周期图中也会同样生成,从而在-分钟周期中实现预警。
Ⅲ 用Transact-SQL语句如何完成以下题目求代码
有问题再追问
数据录入模块设计
1、用SQL语句在学生表中添加本组成员信息。(本组成员信息是什么?)
--按这种格式插入就行,这里举例说明
insertintostudent
select'00001','张三','男',cast('2013-12-28'asdatetime),'01','[email protected]'
unionall
select'00001','李四','男',cast('2013-12-28'asdatetime),'01','[email protected]'
2、用SQL语句在课程表中添加数据:
C语言(代码001)、英语(代码002)ACCESS(代码003)、数据库(代
码004)
insertintocourse
select'001','C语言'
unionall
select'002','英语'
unionall
select'003','ACCESS'
unionall
select'004','数据库';
3、用SQL语句在成绩表中添加本组成员的考试成绩数据:C语言、英语、ACCESS。
--根据student表的人员进行插入,这里举例说明
insertintosocre
select'00001','001',90
unionall
select'00001','002',80
unionall
select'00001','003',85
unionall
select'00001','004',92
unionall
select'00002','001',80
unionall
select'00002','002',85
unionall
select'00002','003',88
unionall
select'00002','004',78
数据查询模块设计
1、用SQL语句查询并输出显示本组男性同学的学号、姓名、性别、出生日期和邮箱。
selectsid,sname,sex,birthday,email
fromstudentwheresex='男'andxzbh=本组编号
2、用SQL语句查询并输出显示本组成员的全部信息。
select*fromstudentwherexzbh=本组编号
3、用SQL语句查询并输出显示成员的各科成绩,按高低排序。
selectt1.sid,t1.sname,t3.kcmc,t2.score
fromstudentt1,scoret2,courset3
wheret1.sid=t2.sidandt3.cno=t2.cno
orderbyt2.scoreasc
4、用SQL语句查询并输出显示:
(1)本组英语课程考试不及格、60~80分、80~100分同学的名单、人数。
selectt1.sid,t1.sname
fromstudentt1,scoret2,courset3
wheret1.sid=t2.sidandt3.cno=t2.cno
andt3.kcmc='英语'andt2.score<60
selectt1.sid,t1.sname
fromstudentt1,scoret2,courset3
wheret1.sid=t2.sidandt3.cno=t2.cno
andt3.kcmc='英语'
andt2.score>60andt2.score<80
selectt1.sid,t1.sname
fromstudentt1,scoret2,courset3
wheret1.sid=t2.sidandt3.cno=t2.cno
andt3.kcmc='英语'
andt2.score>=80andt2.score<=100
selectt3.kcmc,
sum(casewhent2.score<60then1else0end)不及格人数,
sum(casewhent2.score>=60andt2.score<80then1else0end)60到80人数,
sum(casewhent2.score>=80andt2.score<=100then1else0end)80到100人数
fromstudentt1,scoret2,courset3
wheret1.sid=t2.sidandt3.cno=t2.cnoandt3.kcmc='英语'
(2)本组英语考试成绩的平均分、最高分、最低分。
selectt3.kcmc,avg(t2.score),max(t2.score),min(t2.score)
fromstudentt1,scoret2,courset3
wheret1.sid=t2.sidandt3.cno=t2.cnoandt3.kcmc='英语'andxzbh=本组编号
(3)本组ACCESS考试成绩最高分、最低分的同学名单。
selectt.sid,t.sname,t.score
from(
selectt1.sid,t1.sname,t3.score
row_number()over(orderbymax(t2.score)desc)maxrn,
row_number()over(orderbymin(t2.sorce)asc)minrn
fromstudentt1,scoret2,courset3
wheret1.sid=t2.sidandt3.cno=t2.cnoandt3.kcmc='ACCESS'andxzbh=本组编号)t
wheremaxrn=1orminrn=1
(4)将本组各科最低分同学的成绩加10分。
updatescoret1setscore=(selectmin(score)+10fromscoret2wheret1.cno=t2.cno)
Ⅳ 能将大智慧的分时涨停公式改成用于分时预警或分时选股的公式吗
目前任何软件都不支持小周期预警。所以,会出现‘在副图中显示选股信号,但做为分时预警或分时选没就选不出股票’的现象了。
Ⅳ 请使用Transact-SQL 语句编写一个触发器
这个是触发器的级联删除,其sql代码为:
create trigger tr_student_delete
on student
for delete
as
delete from score where stuno
in (select stuno from deleted)
即可完成删除功能
Ⅵ 这个源码在大智慧上为啥显示不出来
这个是要收费版的才能显出来
Ⅶ transact-sql 和 ansi sql-92的关系是什么
ANSI SQL-92 定义的数据库构造的标准化架构。
Transact-SQL是SQL编程语言的一种版本,只在SQL Server中使用。
进入级ANSI SQL-92 ISO标准的SQL Server实现.
也就是说ansi sql-92是一个标准,而Transact-sql中对这个标准的一个实现.
另外ANSI SQL-92是人人赞同的标准。然而,Oracle、微软以及其他数据库厂商加入了很多破坏SQL代码的特性。因此,你不仅得编写遵从基本规范(SQL-92)的代码,而且的代码还得根据具体用到的产品(如transact sql)实现不同的特性。
下载地址(英文版)
http://d.download.csdn.net/down/300769/karljevons
Ⅷ transact-sql使用哪些语言来管理事务
这本书的绝大部分代码可以跨越SQL Server版本的限制,在SQL Server 2008、2005甚至2000上都可以使用,即使今后推出的新版本,几乎也不用修改就可以移植使用。本书涉及Transact-SQL使用的各个方面,但又不是联机丛书语法的简单复制,而是侧重于通过实例来学习综合使用Transact-SQL各语法要素完成特定任务的方法。
这本书既适合数据库管理人员,也适合开发人员阅读和参考,还可作为大中专院校及各类培训班的教材,极具实用性。