Ⅰ 關於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各語法要素完成特定任務的方法。
這本書既適合資料庫管理人員,也適合開發人員閱讀和參考,還可作為大中專院校及各類培訓班的教材,極具實用性。