VBAチートシート

シストレを行う上で頻繁にエクセルとVBAを使うのですが、以前はその都度ネット検索したり、過去作ったコードを探してコピペしていました。しかし、これが頻繁になると結構面倒なんです。それでメモ帳に書いて、タスクバーにピン留めすることにしました。

これってすごく便利です。それで以下にその内容を貼りつけます。これらのコードは私が頻繁に使うコードです。ご自分用にカスタマイズしてご利用ください。
i、endr(最終行)などは変数です。

■貼付け
Range("A1").Select
ActiveSheet.Paste

■コピー貼付け 計算式などを貼りつける
Sheets("分析").Range("W1").Copy Range(Cells(2, 15), Cells(endr, 15))

■クリア
range("A1:Z100").Clear
range("A1:Z100").ClearContents
range("A1:Z100").ClearFormats
cells.Clear

■セル色を消す。
Range(Cells(2, 1), Cells(endr, 10)).Interior.Pattern = xlNone

■最終行を求める。
endr=Cells(Rows.Count, 1).End(xlUp).Row

■計算式代入
Range(Cells(2, 26), Cells(endr, 26)).Formula = "=Z1+H2"
Sheets("発注").Cells(i, 12).Formula = "=IFERROR((J" & i & "-I" & i & ")/I" & i & ",0)"

■値検索
Cells(i, 25) = "=IFERROR(VLOOKUP(C" & i & ",検索範囲,3,FALSE),"""")"

■値代入
Range(Cells(5, 2), Cells(endr, 2)).Value = Range(Cells(5, 13), Cells(endr, 13)).Value

■シート上の20170430 形式を日付型に変換する関数
=DATEVALUE(TEXT(B2,"0000!/00!/00"))

■画面表示更新停止 計算を高速化するため
Application.ScreenUpdating = False

■文字削除 数値として扱うため 
Selection.Replace What:="百万円", Replacement:=""
Selection.Replace What:="円", Replacement:=""
Selection.Replace What:="株", Replacement:=""

■並べ替え 昇順、降順
ActiveSheet.Sort.SortFields.Clear
ActiveSheet.Range("A:M").Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlYes
ActiveSheet.Range("A:M").Sort Key1:=Range("B2"), Order1:=xlDescending, Header:=xlYes

■コピー選択範囲点滅を消す
Application.CutCopyMode = False

■進捗状況をステータスバーに表示
Application.StatusBar = CInt(i * 100 / endr) & "%"

■書式設定
Range(Cells(2, 13), Cells(endr, 13)).Style = "Comma [0]"
Range(Cells(2, 13), Cells(endr, 13)).NumberFormatLocal = "[赤]+0.00%;[青]-0.00%"

■カラー表示
Cells(i, 13).Interior.ColorIndex = 3
Cells(i, 13).Font.ColorIndex = 6
Range(Cells(endr + 1, 1), Cells(endr2, 33)).Interior.Color = RGB(215, 215, 215)

■カラーインデックス 
赤=3 黄=6 青=5 黒=1 ピンク=7 ベージュ19 グレー15 白=2

■ワークシート関数
WorksheetFunction.Average(Range("A1:A100"))

■列幅変更
Columns("M").ColumnWidth = 10

■楽天RSS表示
Sheets("発注").Cells(i, 10) = "=RSS|'" & Cells(i, 3) & ".T" & "'!始値"

■スリープ設定 1秒止める 
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sleep 1000

■CSV書出し hyperSBI形式に変換
Open "C:\Users\●\Desktop\銘柄.CSV" For Output As #1

For i = 2 To endr
If Cells(i, 3) <> Cells(i + 1, 3) Then
Print #1, "'" & Cells(i, 3) & "," & Cells(i, 5) & ",TKY,,,,,----/--/--"
End If
Next
Close #1


ポチっとしていただき、パチ(拍手)して頂くとやる気モリモリです。m(__)m
お問い合わせ、個別連絡は、ブログ右下段のメールフォームから。

株式システムトレード ブログランキングへ
にほんブログ村 株ブログ 株 自動売買へ
にほんブログ村

株システムトレードソフトイザナミ
スポンサーサイト

(続)寄り、前場引けデイトレ

データ取得の自動化完了!

昨日の記事を読まれた、たけやんさんから貴重なコメントを頂きました。
『株価の書き込み部分は手動ということですか? たぶん、VBAで前場と後場の株価も自動で取得できるかもしれないですね。 』

あ、そうか!
私はとりあえず、あるデイトレStrを前場引けで手仕舞ったらどのようなパフォーマンスになるのか?が知りたくて最初は手入力していました。しかし、これは面倒なので昨日のように手入力する工程を単純に自動化したわけです。

それで、HTMLタグを利用して自動的にネット上のデータを取得できることを忘れていました。そこで、再度プログラミングし直して、自動的に前場引け、後場始値のデータが取得できるようになりました。これってすごく楽ちん。

絵づら的には、2つのモニターに、IEとエクセルが立ち上がっており、IE画面の銘柄が自動的に変わっていき、その都度、エクセルに前場引けの数値が打ち込まれていくって感じです。1データ取るのに、3~4秒といったところ。ただ、株式分割した銘柄があるので、それは、後で修正する必要があります。

それで、デイトレStrの検証を400データほどやってみました。
結果は、収益が3割減、DDも3.5割減でした。つまり、前場引けしなくても、仕掛け金額を7割にしたことと同じで、このStrでの効果はありませんでした。

なぜこうなるのかは、高値圏順張りは、S高持越しによる利益が収益の柱になっており、前場引けすることで、後場からS高に張り付く銘柄を拾うことができないからです。
つまり、元々のStrは後場まで持ち越し、大きな損失を被るリスクを犯して、S高という果実を取りに行っているわけです。

ただし、逆の言い方をすれば、仕掛け金額を少し増やせば、前場で勝負が付き、同じような収益が望めるわけですから、どちらがいいかということになります。

まあ、今回は1Strだけの検証ですので、このような結果でしたが、いろいろと興味のあるStrを作る楽しみはありますね。
また、前場引け仕掛け、大引け手仕舞い、のパターンも検証できます。特に大きく動く銘柄の検証で何かよいStrができるかもしれません。これからも検証を続けていきたいと思います。

≪補足≫
今回の自動化コードはたけやんさんからのアイデアなので非公開とさせていただきます。


ポチっとしていただき、パチ(拍手)して頂くとやる気モリモリです。m(__)m

株式システムトレード ブログランキングへ
にほんブログ村 株ブログ 株 自動売買へ
にほんブログ村

株システムトレードソフトイザナミ

寄り、前場引けデイトレ

以前デイトレ戦略neoというタイトルでデイトレ戦略を開発中と書いていました。
その後の経過ですが、W指値の疑似検証などを使って検証していますが、日足ベースより良い結果がえられません。

そもそも、イザナミを使って、デイトレStrを作る場合、
① 寄付き仕掛けで、利確損切りを指値OR逆差値で設定し、未成就の場合引け手仕舞い
② 指値OR逆差値で仕掛け、引け手仕舞い
③ 寄り引けで、仕掛け、手仕舞い

の3パターンしかありません。そして、この大引け手仕舞いしかできないことで、含み益がガンガン減っていくことにもなりがちです。

そこで、
④ 寄り仕掛け、前場引け手仕舞い

ができないものか?イメージとしては、前場上げた段階で手仕舞し、後場下げによる含み益の減少を食い止めるというものです。

2013年~2015年は高値圏順張りでは、前場上げても後場はそれほど下がりませんでしたが、2016年から、前場上げて後場下がるパターンが多くなってきています。そこで前場の含み益だけを取りに行く発想です。

そして検証するためのプログラムを組んでいます。まだ、検証は途中段階ですが、期待値は微減でDDは大幅縮小です。また、検証数が少ないので実用には至りませんが、しばらく検証と研究を重ねていこうと思います。

検証方法は少しややこしいのですが概略を記載します。
エクセル VBAのInternetExplorerオブジェクトを使ってインタネットエクスプローラを制御する方法です。

① イザナミで使えそうなベースストラテジを作る。
② 取引一覧をエクセルに貼付ける。
『株価データサイト k-db.com』の前場後場データを活用する。
http://k-db.com/stocks/〇〇〇〇-T/4h(〇は証券コード)
④ 別画面に上記サイトを表示させておく(デュアルモニタ必要)
⑤ エクセル上に張り付けたベースストラテジデータのC列をダブルクリックする。
⑥ 別モニターに表示させた『株価データサイト k-db.com』前場後場データが表示される。
⑦ 前場後場データが検証データの日付になるように、スクロール回数を、エクセル上の任意セルに記入しておく
⑧ マウスが電場後場データの画面をスクロールし指定の日付欄が表示される。
⑨ 該当日の前場終値データをエクセルに書き込むことを繰り返す。

なおVBAでインターネットエクスプローラを使う場合、参照設定で下記のライブラリを登録しておく必要があります。
Microsoft HTML Object Library
Microsoft Internet Controls

≪株価データサイトk-db.com≫
前場後場データ



エクセル画面


WOOKBOOK.png

宣言部分 
コード① 


≪注意≫
① コード記載は躊躇しましたが、一応載せておきます。但しコードへのご質問はお受けできません。
② コード記載例はあくまで私のパソコンに最適化されたものであり、そのままでは使えません。使う場合は各自カスタマイズしてください。
≪補足≫
私はVBAによるインターネットエクスプローラ制御は以下のサイトで習得しました。
http://www.vba-ie.net/


ポチっとしていただき、パチ(拍手)して頂くとやる気モリモリです。m(__)m

株式システムトレード ブログランキングへ
にほんブログ村 株ブログ 株 自動売買へ
にほんブログ村

株システムトレードソフトイザナミ

Kabu.comリミットマインダー用コード

前の記事で書いた件についてコード開示のリクエストがありましたので、以下に記載します。ある程度エクセル、VBAが使える方が対象です。コードをコピペしていただければ使えます。念のために実際の画像も載せておきます。例示のコードは私が実際に使用しているものとは違います。私のはもっと複雑です。
今回出したのは参考例として載せています。自分の条件でカスタマイズしてください。


株ステーション側ではメニューバーより、
① 『投資情報』⇒
② 『リミットマインダー』⇒
③ 『画面上を右クリック』⇒
④ 『銘柄コード+メモ+条件+通知方法』⇒

リマインダー  

⑤ 『ファイル選択ダイアログボックス』⇒
⑥ 『デスクトップ上のKabuCom.CSV選択』⇒
⑦ あとは、はいボタンを押してリミットマインダーに貼りつけます。以上です。
これで多数の銘柄のトリガーを一括して管理できます。株価がトリガーに達したら、ポップアップと音声で通知されます。

この場合、Kabuステーションは最小化していても通知はポップアップされるので、Kabuステーションを画面上に表示させる必要はありません。

以下コードの説明です。
========================================
① 変数iはループ用のカウンターです。

② 変数endr は最終行を格納する変数です。

③ endr = Cells(Rows.Count, 1).End(xlUp).Rowで変数に最終行を代入しています。

④ Open "C:\Users\●\Desktop\KabuCom.CSV" For Output As #1 の●の部分は各自のパスを指定してください。上記ではデスクトップに、KabuCom.CSVというファイルを作るように指示しています。

⑤ Print #1, "//" はカブコム側の指定文字列です。

⑥ For i = 6 To endr となっているのは、私のシートが6行目からシグナル銘柄を配置しているからです。2行目から配置しているなら2としてください。

⑦ If Cells(i, 29) = "" Then となっているのは、私のシートでは29列目が仕掛け値入力列になっており、値が入っている場合は持越し銘柄となり、アラートの必要がないので除外しています。

⑧ If Cells(i, 20) >= 1 And Cells(i, 20) <= 3 Then となっているのは、私のシートの20列目はストラテジ番号となっており、ストラテジ番号によってトリガーが違ってくるので分岐しています。上記では、ストラテジ番号が1~3の場合の分岐です。

⑨ Print #1, Cells(i, 3) & ",,DPP," & WorksheetFunction.RoundDown(Cells(i, 23) * ●●, 0) のCells(i, 3) は3列目に証券コードが入っています。DDPはカブコム側の指定文字列です。

計算式ですが、私の場合Cells(i, 23)の23列目に現在値(トレード終了してイザナミのシグナルを張り付けた時点では終値)が入っており、その終値の●●%のがトリガー値となっています。たとえば、終値の-3%をトリガー値としたけらばこの●●部分を0.97とします。また、安値×1.05などいろいろと作れます。

⑩ 長ったらしい英文字が入っていますが、カブコム側でポップアップと音声を出すための指定文字列です。

=======================================
Sub Kabucom書出し()
On Error Resume Next
Dim i As Integer
Dim endr As Integer

endr = Cells(Rows.Count, 1).End(xlUp).Row

Open "C:\Users\●\Desktop\KabuCom.CSV" For Output As #1
Print #1, "//"

For i = 6 To endr
If Cells(i, 29) = "" Then
If Cells(i, 20) >= 1 And Cells(i, 20) <= 3 Then

Print #1, Cells(i, 3) & ",,DPP," & WorksheetFunction.RoundDown(Cells(i, 23) * ●●, 0) & ",,,,Screen1=1:Screen1Notice=3:Sound1=1:Sound1Appoint=0:Sound1AppointName=:Screen2=1:Screen2Notice=3:Sound2=1:Sound2Appoint=0:Sound2AppointName="

ElseIf Cells(i, 20) = 7 Or Cells(i, 20) = 8 Then

Print #1, Cells(i, 3) & ",,DPP," & WorksheetFunction.RoundDown(Cells(i, 23) * ●●, 0) & ",,,,Screen1=1:Screen1Notice=3:Sound1=1:Sound1Appoint=0:Sound1AppointName=:Screen2=1:Screen2Notice=3:Sound2=1:Sound2Appoint=0:Sound2AppointName="

ElseIf Cells(i, 20) = 9 Then

Print #1, Cells(i, 3) & ",,DPP," & WorksheetFunction.RoundDown(Cells(i, 23) * ●●, 0) & ",,,,Screen1=1:Screen1Notice=3:Sound1=1:Sound1Appoint=0:Sound1AppointName=:Screen2=1:Screen2Notice=3:Sound2=1:Sound2Appoint=0:Sound2AppointName="

End If
End If
Next
Close #1

Beep
End Sub


コード

ポチっとしていただき、パチ(拍手)して頂くとやる気モリモリです。m(__)m

株式システムトレード ブログランキングへ
にほんブログ村 株ブログ 株 自動売買へ
にほんブログ村

株システムトレードソフトイザナミ

Kabu.comリミットマインダーの活用

これまで仕掛け見逃しでかなり収益の機会を逃してきました。それを改善するために試行錯誤してきました。

以前、VBAのOnTimeで組んだことがありましたが、私のようにザラバでエクセルシートを触るタイプだと、これがなかなかうまくいかない。また楽天RSSは特に寄付き直後はアクセスが集中するのかリアルタイムと誤差も生じます。

取引メインはGMOクリックのスーパーはっちゅう君なのですが、このソフトにはアラート機能がないので、HyperSBIでアラート設定をしていました。しかし、これが1件1件手入力で面倒なんです。HyperSBIにはアラートのCSVインポート機能が無い。それで、いろいろと解決策を練っていましたが、頼もしい助っ人が現れました。
ジャジャーン!Kabu.com の取引ツールKabuステーションです。

Kabuステーションのいいところは、アラートの銘柄、株価、通知方法をCSVでインポートできることです。それで、シグナル銘柄群とトリガー値をVBAでループさせ、CSV出力し、Kabuステーションのリミットマインダーに貼り付けます。これだけです。

この省力化は私にとっては画期的です。私は証券会社口座を9つ持っていますが、それぞれのツールの良いとこ取りができて便利です。
KabuステーションはKabu.comに口座をお持ちで信用口座を開設すれば無料で使えます。
今日は少しマニアックな記事でしたが、このコードが欲しいというかたはコメントいただければお教えします。結構簡単なコードなので。


ポチっとしていただき、パチ(拍手)して頂くとやる気モリモリです。m(__)m

株式システムトレード ブログランキングへ
にほんブログ村 株ブログ 株 自動売買へ
にほんブログ村

株システムトレードソフトイザナミ