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

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

SQL

ビットコインのトライアングルアービについて検証してみた

始まりはこれだった。 BTCUSD×USDJPY 円価は271,029 そしてBTCJPYのレートは274,316 差額は3,287円これを見て、BTCJPY売り,BTCUSD買い,USD/JPY売りで トライアングルアービを実施すればぼろ儲けやん。 ふざけた数字表示しやがって。 ここからは実際の検証結…

2000年以降の時間毎の値幅

SQL

大したことやってないんですけど、無性に表題の件が気になったので 数値がどうなっているのか改めて視覚化したいと思い、 MT4から1時間足をSQLServerにインポートして以下クエリで出力してみました。case whenの箇所が力技みたいで気持ち悪いですが、 今回の…

プロはselect句で処理する - SQL Tips

当初の予定からだいぶスタートが遅れているけど、 平常運用できそうなシストレ概要が出来上がりつつある。 ※適当に雇用統計で試しただけのもの。根詰めればたぶんすぐにGoLiveできるんだろうけど、なんだろうな。 昔ほどのやる気がないのか、社畜から離脱す…

日銀金融政策決定会合発表時のティック数

SQL

0時を超えてしまった為、昨日の話となってしまいますが 日銀発表時5秒間の通貨別ティック数です。 さすがにドル円が今回は1位ですね、 SELECT [通貨ペア] ,count(通貨ペア)ティック数 ,AVG([SP])平均SP FROM [Fixテーブル] where [日時] between'2016-04-28 …

Transact-SQL ストアドプロシージャの作成と実行

SQL

ストアド プロシージャの作成方法 CREATE PROCEDURE ストアドプロシージャ名 AS 任意の Transact-SQL ステートメント ストアド プロシージャの実行方法 EXEC ストアドプロシージャ名 プログラムからクエリを投げる場合、ストアドプロシージャで指定したほうが…

SQL 通貨毎に最新のティックを取得する

SQL

最新のティックを使いたいと思ったが、思いのほか工夫が必要だったのでメモ。ただ拾い方としては効率が悪い気もしていて、もう少し高速な方法は考えたいところ。 select [通貨ペア],[Bid],[日時] from (select *, row_number() over(partition by [通貨ペア]…

トランザクションログファイル(ldf)を圧縮してみた

SQL

毎日28通貨分の全Tick情報をローカルDBに格納しています。 約1週間たって、どのくらいのサイズになったか確認してみたところ・・ ldfとかいう拡張子のファイルがmdf本体よりもデカいんですね。 なんじゃこりゃとwちょっと容量食い過ぎなんで、調べてみたら…

24時間前のテーブルデータをアーカイブする

SQL

OANDAからFixで取得しているTickデータですが 28通貨の1週間分で約1,000万レコードです。最初は1週間毎に過去Tickをアーカイブしていこうかと思っていましたが これでは週後半、テーブルが肥大してきた状況下では シグナル発信用アプリの動作が遅延しそうで…

自習書とかいう良本

Transact-SQLについて勉強しようかと思ってAmazonで書籍みてたんですけど、 こんな感じに2000年とか2008年の古い書籍しかなくて、ろくに知識もないくせに 新しい技術ちゃんと解説入ってんのかよーとかおもって敬遠していた訳ですが。 なんと、調べていたらMi…

SQL 別PCからDBにアクセスする

SQL

SQLServerをインストールすると初期状態ではネットワーク制限された状態で インストールされます。このままでは使い勝手が悪いのでネットワーク内で 共有できるよう設定しました。結論から言うと、下記URLの手順通りで何も難しい事はありませんでした。 レッ…

クリック証券 新FXネオのスプレッド調査4(イースター編)

金曜日はイースター休暇で各業者のスプレッドは拡大しやすい状況だった。 実際にクリック証券ではどうだったのか。 クリック証券が提供しているヒストリカルデータを元に算出してみる。 ※1分足ベースの為、誤差はあるかと。 select SPTable.通貨名,SPTable.…

SQL 時間を変更する

SQL

SQLServerで時間を編集する方法元のデータ update テーブル set 列 = dateadd(hour,9,列) 変更後 日付も変更されていますね。 なぜこんな事を記事にしているかというとOANDAから取り込んでいるTickデータ、初期の頃は日本時間に変換してなかったんですよね笑…

ベルギーテロで一番反応した通貨ペアは

テロで犠牲になった方も多くいる中でこのような計算をするのは 不謹慎だと感じる方もいるかも知れません。しかし、このような時マーケットはどう動くのか。 後の為にデータを残します。データはoandaからFIXでMarket Data-Incremental Refreshで取得していま…

コード修正

SQL

tos5511.hatenablog.com この記事で書いた冗長なコード。 declare @日時 varchar(20) set @日時 = '201603' select SPTable.通貨名,SPTable.時間,AVG(SPTable.SP) from ( select 通貨名 ,([終値(ASK)]-[終値(BID)]) as SP ,case when convert(varchar(8),[日…

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

tos5511.hatenablog.com tos5511.hatenablog.comシリーズ3作目です笑今度はクリック証券、3月のドル円の時間帯別の平均SPを出してみました。 シリーズ2での検証結果が正しいことが証明できるか・・書いたコードは以下、ドル円とドル円EXモードの時間帯毎…

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

tos5511.hatenablog.com前回に続き、もう少しクリック証券のヒストリカルデータで遊んで見ましょう。クリック証券のドル円の通常モードとEXモードについて スプレッド拡大の傾向を調査してみました。(3月分) declare @日時 varchar(20) set @日時 = '201603…

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

tos5511.hatenablog.com これでとりあえずは作業が多少効率的になったので、 クリック証券の新FXネオのヒストリカルデータを全通貨分取り込みました。 以下は1/18~3/19までの期間中、クリック証券の最小スプレッドと最大スプレッドです。 SELECT [通貨名] ,…

クリック証券のヒストリカルデータをSQLServerに取り込む

SQL

過去に似た事やってるんですが、後日わかりやすいように手順化しておきます。まずはクリック証券のヒストリカルデータは営業日毎の為、 これを個々importするのは非常にめんどくさい。 そして通貨名がついてないのでカラムを追加してやる必要がある。 ここは…

SQLServerでテーブルカラムの属性を変更する。

SQL

SQLServerでテーブルを作成した後、カラムの型を変更したい場合、 画面上で変更しようとすると上記のように怒られる。こんな時はALTERコマンドで属性変更できる ALTER TABLE [ClickNeoPrice].[dbo].[ClickNeoPrice] ALTER COLUMN 日時 datetime2(7) NOT NULL…

SQLServer2014Express ダウンロード&インストール手順

SQL

色々環境構築失敗して、インストールしなおす事にしたので ついでに手順をアップしてみる。Download Microsoft® SQL Server® 2014 Express from Official Microsoft Download Center 今回インストールするのはSQLServer2014Express 「ExpressAndTools 64BIT\…

OANDA FIXAPI接続とDB連携

tos5511.hatenablog.comこの後、何もしてなかった訳じゃなく コツコツ作業を続けてました。tos5511.hatenablog.com 元々、上記のような手法でFX業者のHPからレートを取得することは可能でしたが マナー的な問題や通貨ペア数の数の問題もあり、OANDAから正式…

日本語変数・メソッドって意外と有り?

プログラミングしていて、特に私のような趣味プログラマーなんかは 俗に言う「3か月後の自分は他人」なんて状態になるのが多いのではないだろうか。 それを回避する為に少し複雑な処理には細かくコメント入れたりして ただそれも変数やメソッド名の命名ルー…

SQL テーブルの作成(CREATE TABLE)

SQL

スッキリわかる SQL 入門 ドリル215問付き! (スッキリシリーズ) より テーブル作成(基本形) CREATE TABLE テーブル名( 列名1 列1の型名, 列名2 列2の型名, 列名3 列3の型名, : 列名X 列Xの型名 ) 家計簿テーブルの作成 CREATE TABLE 家計簿 ( 日付 DATE, …

SQL サブクエリ結果と結合

SQL

スッキリわかる SQL 入門 ドリル215問付き! (スッキリシリーズ) より家計簿テーブル 費目テーブル SELECT 日付, 費目.名前, 費目.経費区分ID FROM 家計簿 -- 家計簿テーブルに対して… JOIN ( SELECT * FROM 費目 WHERE 経費区分ID = 1 ) AS 費目 -- 副問い合…

SQL テーブルの結合

SQL

スッキリわかる SQL 入門 ドリル215問付き! (スッキリシリーズ) より 家計簿テーブル 費目 JOINで家計簿テーブルに費目テーブルが結合される SELECT 日付, 名前 AS 費目, メモ FROM 家計簿 JOIN 費目 -- 結合する他の表を指定 ON 家計簿.費目ID = 費目.ID --…

SQL サブクエリ(FROM句で使う)

SQL

スッキリわかる SQL 入門 ドリル215問付き! (スッキリシリーズ) よりサブクエリの結果をSUBと名付け、結果を1つのテーブルとして扱う。 SELECT SUM(SUB.出金額) AS 出金額合計 FROM (SELECT 日付, 費目, 出金額 FROM 家計簿 UNION SELECT 日付, 費目, 出金額…

SQL サブクエリ (SET句)

SQL

スッキリわかる SQL 入門 ドリル215問付き! (スッキリシリーズ) より UPDATE 家計簿集計 SET 平均 = (SELECT AVG(出金額) FROM 家計簿アーカイブ WHERE 出金額 > 0 AND 費目 = '食費') WHERE 費目 = '食費' 実行結果

SQL サブクエリ (SELECT文のネスト)

SQL

スッキリわかる SQL 入門 ドリル215問付き! (スッキリシリーズ) より 出金額の中から最も大きい出金額を求めるクエリ SELECT 費目, 出金額 FROM 家計簿 WHERE 出金額 = ( SELECT MAX(出金額) FROM 家計簿 ) 実行結果 まあif文のネストみたいなもんだ。パズル…

SQL HAVING句

SQL

スッキリわかる SQL 入門 ドリル215問付き! (スッキリシリーズ) より SELECT 費目, SUM(出金額) AS 費目別の出金額の合計 FROM 家計簿 GROUP BY 費目 HAVING SUM(出金額) > 0 --合計値が0 より大きいグループを抽出 実行結果 WHEREではSUM()やMAX()などの集…

SQL グループ別の集計(GROUP BY)

SQL

スッキリわかる SQL 入門 ドリル215問付き! (スッキリシリーズ) より SELECT 費目, SUM(出金額) AS 費目別の出金額合計 FROM 家計簿アーカイブ GROUP BY 費目 --費目列でグループ化する 実行結果 GROUP BYはたぶん相当使う。

SQL 集計関数(SUM,MAX,MIN,AVG,COUNT)

SQL

スッキリわかる SQL 入門 ドリル215問付き! (スッキリシリーズ) より SELECT SUM(出金額) AS 出金額の合計 FROM 家計簿 SELECT MAX(出金額) AS 出金額の最大値 FROM 家計簿 SELECT MIN(出金額) AS 出金額の最小値 FROM 家計簿 SELECT AVG(出金額) AS 出金額…

SQL 日付系の関数(CURRENT_DATE,CURRENT_TIME)

SQL

スッキリわかる SQL 入門 ドリル215問付き! (スッキリシリーズ) よりCURRENT_DATE 現在の日付を得る ⇒(YYYY-MM-DD)CURRENT_TIME 現在の時刻を得る ⇒(HH:MM:SS) INSERT INTO 家計簿 VALUES (CURRENT_DATE,'食費', 'ドーナツを買った',0,260) 実行結果

SQL 数値系の関数(ROUND,TRUNC,POWER)

SQL

スッキリわかる SQL 入門 ドリル215問付き! (スッキリシリーズ) よりROUND 指定桁で四捨五入 ROUND(数値を表す列,有効とする桁数) ※有効とする桁数 整数の場合は小数点の桁数、負の場合は整数部の桁数を表す。 SELECT 出金額, ROUND(出金額, -2) AS 百円単…

SQL 文字列関連の関数(LENGTH/LEN,REPLACE,SUBSTRING/SUBSTR)

SQL

スッキリわかる SQL 入門 ドリル215問付き! (スッキリシリーズ) よりLENGTH/LEN 文字列の長さを調べる(SQLServerではLENを利用) SELECT メモ, LENGTH(メモ) AS メモの長さ FROM 家計簿 WHERE LENGTH(メモ) <= 10 実行結果 TRIM 空白を除去する LTRIM 左側…

SQL CASE文

SQL

スッキリわかる SQL 入門 ドリル215問付き! (スッキリシリーズ) よりさて、SQLの続きをやっていきます。 此処まででもエクセルでは難しかった事が 色々出来るようになっていてなかなか面白いです。本日はCASE文 CASE 評価する列や式 WHEN 値1 THEN 値1の時に…

仲値トレードは儲かるのか

少しSQLを触れるようになったので、仲値トレードの有効性を調べてみた。仲値とは銀行のその日1日の取引レートで、大体9:55頃に決まる。 www.ifinance.ne.jp仲値トレードに関して詳しくはググってもらうとして、簡単に言えば 需給バランスにより、ゴトー日の…

MT4のレートをSQLServerにインポートしてみる2

tos5511.hatenablog.com tos5511.hatenablog.com 続き。寝て起きて再開してみると、どうやら原因は日付の部分にあったようだ。 MT4から取り込んだcsvでは日付の形式が「2016.01.01」のようになっており、 ここを文字列型にして取り込んでみたら成功した。取…

MT4のレートをSQLServerにインポートしてみる

tos5511.hatenablog.com 風呂から上がり、再チャレンジ。 超初歩的なとこだったw 変換先が間違っていた。 だが最後の最後でエラー・・い、いったん寝よう笑 追記 下記記事で解決してます。 tos5511.hatenablog.com

ConnectionStringプロパティは初期化されていません。(System.Data)

SQLの基礎が少しわかってきたところでMT4から1分足データをエクスポートして SQLServerにぶっこんでちょっと遊んでみるか!ってことでやってみたところ 掲題のエラーが出て止まった。一旦ここまでの手順MT4 ツール ⇒ ヒストリーデータ USDJPY1Mをcsvで吐き出…

SQL 練習問題その3

SQL

スッキリわかる SQL 入門 ドリル215問付き! (スッキリシリーズ) よりあるカフェの注文状況を記録しているテーブル 1.注文順かつその明細準に、すべての注文データを取得する SELECT * FROM 注文履歴 ORDER BY 注文番号, 注文枝番 2.2013年1月に注文のあった…

SQL 基礎クエリ集

SQL

スッキリわかる SQL 入門 ドリル215問付き! (スッキリシリーズ) より 費目一覧を重複を除外して作成したい SELECT DISTINCT 費目 FROM 家計簿 2月に使った金額を大きい順に取り出したい SELECT * FROM 家計簿 WHERE 日付 >= '2013-03-01' AND 日付 <= '2013-…

SQL 集合演算子

SQL

スッキリわかる SQL 入門 ドリル215問付き! (スッキリシリーズ) より UNION SELECT 文1 UNION (ALL) SELECT 文2 UNIONでは重複行を1行にまとめる UNION ALLでは重複行をすべてそのまま返す家計簿 家計簿アーカイブ SELECT * FROM 家計簿 UNION SELECT * FROM…

SQL LIMIT(TOP)で先頭から数行だけ取得する

SQL

スッキリわかる SQL 入門 ドリル215問付き! (スッキリシリーズ) より先頭から数件だけ取得する SELECT 列名・・ FROM テーブル名 LIMIT 取得行数(OFFSET 先頭から除外する行数) ※SQLServerではTOPキーワードを使う SELECT TOP 3 [Id] ,[Name] ,[Birthday] ,[…

SQL ORDER BYで並び替えする

SQL

スッキリわかる SQL 入門 ドリル215問付き! (スッキリシリーズ) より並び替え SELECT 列名・・ FROM テーブル名 ORDER BY 列名 並び順 ※ASC 昇順 DESC 降順 SELECT * FROM 家計簿 ORDER BY 出金額 実行結果 SELECT * FROM 家計簿 ORDER BY 出金額 DESC 実行…

SQL DISTINCTで重複行を除外する

SQL

スッキリわかる SQL 入門 ドリル215問付き! (スッキリシリーズ) より重複行を除外する SELECT DISTINCT 列名・・ FROM テーブル名 SELECT DISTINCT 入金額 FROM 家計簿 実行結果 DISTINCTはデータの種類を取得したい場合に役立つ。

SQL 練習問題その2

SQL

スッキリわかる SQL 入門 ドリル215問付き! (スッキリシリーズ) より1.都道府県名が「川」で終わる都道府県名 SELECT 都道府県名 FROM 都道府県 WHERE 都道府県名 LIKE '%川' 2.都道府県名に「島」が含まれる都道府県名 SELECT 都道府県名 FROM 都道府県 WHE…

SQL 練習問題その1

SQL

スッキリわかる SQL 入門 ドリル215問付き! (スッキリシリーズ) より気象観測テーブルの定義 列名 データ型 備考 月 INTEGER 1~12のいずれかの値 降水量 INTEGER 観測データがない場合はNULL 最高気温 INTEGER 観測データがない場合はNULL 最低気温 INTEGER…

SQL 複数値のいずれかに合致するかを判定する

SQL

スッキリわかる SQL 入門 ドリル215問付き! (スッキリシリーズ) よりIN演算子 IN(値1,値2,値3・・) 値1、値2、値3の何れかに合致する行を検索。 SELECT * FROM 家計簿 WHERE 費目 IN ('食費', '交際費') 実行結果 NOT IN演算子 NOT IN(値1,値2,値3・・) 値1…

SQL 任意の範囲内の行を取り出す

SQL

スッキリわかる SQL 入門 ドリル215問付き! (スッキリシリーズ) より次のテーブルから出金額が2,000円以上6,000円以下の範囲にある行を取り出す。 SELECT * FROM 家計簿 WHERE 出金額 BETWEEN 2000 AND 6000 実行結果

SQL ○○を含む行を取り出す

SQL

スッキリわかる SQL 入門 ドリル215問付き! (スッキリシリーズ) より次のテーブルからメモ列に"1月"を含む行を取り出す SELECT * FROM 家計簿 WHERE メモ LIKE '%1月%' 実行結果 LIKE演算子に使えるパターン文字