読者です 読者をやめる 読者になる 読者になる

プログラミングでアイデアを具現化したい

あらゆるものを具現化するためにプログラミングを始めました。主にC#

クリック証券 新FXネオのスプレッド調査3(ヒストリカルデータベース)

trade SQL

tos5511.hatenablog.com
tos5511.hatenablog.com

シリーズ3作目です笑

今度はクリック証券、3月のドル円の時間帯別の平均SPを出してみました。
シリーズ2での検証結果が正しいことが証明できるか・・

書いたコードは以下、ドル円とドル円EXモードの時間帯毎の平均SPを算出してます。

declare @日時 varchar(20)
set @日時 = '201603'
select SPTable.通貨名,SPTable.時間,AVG(SPTable.SP)
from
(
	select
		通貨名
		,([終値(ASK)]-[終値(BID)]) as SP
		,case
			when convert(varchar(8),[日時],108) >= '06:00:00' and convert(varchar(8),[日時],108) < '07:00:00' then '06'
			when convert(varchar(8),[日時],108) >= '07:00:00' and convert(varchar(8),[日時],108) < '08:00:00' then '07'
			when convert(varchar(8),[日時],108) >= '08:00:00' and convert(varchar(8),[日時],108) < '09:00:00' then '08'
			when convert(varchar(8),[日時],108) >= '09:00:00' and convert(varchar(8),[日時],108) < '10:00:00' then '09'
			when convert(varchar(8),[日時],108) >= '10:00:00' and convert(varchar(8),[日時],108) < '11:00:00' then '10'
			when convert(varchar(8),[日時],108) >= '11:00:00' and convert(varchar(8),[日時],108) < '12:00:00' then '11'
			when convert(varchar(8),[日時],108) >= '12:00:00' and convert(varchar(8),[日時],108) < '13:00:00' then '12'
			when convert(varchar(8),[日時],108) >= '13:00:00' and convert(varchar(8),[日時],108) < '14:00:00' then '13'
			when convert(varchar(8),[日時],108) >= '14:00:00' and convert(varchar(8),[日時],108) < '15:00:00' then '14'
			when convert(varchar(8),[日時],108) >= '15:00:00' and convert(varchar(8),[日時],108) < '16:00:00' then '15'
			when convert(varchar(8),[日時],108) >= '16:00:00' and convert(varchar(8),[日時],108) < '17:00:00' then '16'
			when convert(varchar(8),[日時],108) >= '17:00:00' and convert(varchar(8),[日時],108) < '18:00:00' then '17'
			when convert(varchar(8),[日時],108) >= '18:00:00' and convert(varchar(8),[日時],108) < '19:00:00' then '18'
			when convert(varchar(8),[日時],108) >= '19:00:00' and convert(varchar(8),[日時],108) < '20:00:00' then '19'
			when convert(varchar(8),[日時],108) >= '20:00:00' and convert(varchar(8),[日時],108) < '21:00:00' then '20'
			when convert(varchar(8),[日時],108) >= '21:00:00' and convert(varchar(8),[日時],108) < '22:00:00' then '21'
			when convert(varchar(8),[日時],108) >= '22:00:00' and convert(varchar(8),[日時],108) < '23:00:00' then '22'
			when convert(varchar(8),[日時],108) >= '23:00:00' and convert(varchar(8),[日時],108) <= '23:59:59' then '23'
			when convert(varchar(8),[日時],108) >= '00:00:00' and convert(varchar(8),[日時],108) < '01:00:00' then '00'
			when convert(varchar(8),[日時],108) >= '01:00:00' and convert(varchar(8),[日時],108) < '02:00:00' then '01'
			when convert(varchar(8),[日時],108) >= '02:00:00' and convert(varchar(8),[日時],108) < '03:00:00' then '02'
			when convert(varchar(8),[日時],108) >= '03:00:00' and convert(varchar(8),[日時],108) < '04:00:00' then '03'
			when convert(varchar(8),[日時],108) >= '04:00:00' and convert(varchar(8),[日時],108) < '05:00:00' then '04'
			when convert(varchar(8),[日時],108) >= '05:00:00' and convert(varchar(8),[日時],108) < '06:00:00' then '05'
		end as 時間
	FROM [ClickNeoPrice].[dbo].[ClickPrice$]
	where LEFT(convert(varchar(20),[日時],112),len(@日時))=@日時
	and 通貨名 in ('USDJPY','USDJPYEX')
)SPTable
group by SPTable.通貨名,SPTable.時間

若干、冗長ですね。読者の方でこうしてみたら?
というような指摘や簡素化コード教えてくれる方大募集です。

出力結果
f:id:tos5511:20160321020659p:plain

1時間毎というのは少し大雑把過ぎたか。
全ての時間において、EXモードが普通にワイドな結果となった。
また、スプレッド拡大の時間帯も、オープンクローズ付近が多い事が明らかとなった。
※これは毎日マーケットみてる人ならデータにしなくてもわかることでしょうけど。


追記

時間毎の最小値(通常SP)と最大値を追加してみました。

select A.通貨名,A.時間,AVG(A.SP)平均SP,min(A.SP)最小SP,max(A.SP)最大SP

f:id:tos5511:20160321023057p:plain
結果、通常のドル円がEXモードよりも最大値の大きい時間帯が
3つほどありました。(黄色い箇所)