掲示番ランキング上昇銘柄

7月 第4日 
本日確定損益 ▲30万円
当月確定損益 130万円

今日は負けました。しかし、恒例のRIZAPの裁量空売りは今日もやりました。祭りは昨日で終わった、と思いきや、まだまだ見せ場を作ってくれますね。パスポートと、ジンズメイトがS高に貼り付いていましたが、そのいずれかが剥がれたら全体が崩れるだろうと思い、待っていたら、1時頃ジンズメイトがはがれたので、マルコに空売りを546円で仕掛け2時前に519円(利益5%)で手仕舞いました。

2000株×27円で54000円の勝ち、今楽天では、1日信用での仕掛けが100万円以上の場合、7月末まで金利0でやっているので、実質上記が利益でした。RIZAP銘柄はしこり玉で上値は重いと思っての仕掛けです。


さて、本題に入って、今日は若干エクセルのVBAができる方を対象に記事を書いています。ヤフー掲示板のtextreamに各銘柄の投稿数ランキング100があります。

≪こちらhttps://textream.yahoo.co.jp/ranking/finance≫

この上位にあるのは、現在注目が集まっている銘柄です。
そこで、毎日変動するランキングをエクセルで管理したいなと思っていました。そして管理シートを作りました。

これをなぜ作ったかですが、このランキングを眺めていても、上位の銘柄は印象に残るのですが、下位にある銘柄が日々どのくらい上昇したのか(人気化したのか)が客観的にわかりません。それを可視化して、相場感覚を養うためです。

ランキング管理

このエクセルシートで下からランキングを上げている銘柄が分かります。5以上ランキングが上がったものはベージュ、10以上は黄色、20位以上は赤で色分けされます。
作業は毎日一定時刻にエクセルを開き貼付けボタンを押すだけです。IEを立ち上げたり、コピペしたりは不要です。約10秒前後で終了します。

以下にコードを乗せますのでVBAのできる方で興味があれば、コピペして使ってください。

■コード
Sub 貼付け()

Dim objIE As Object
Dim url As String
Dim rng As Range
Dim i As Integer
Dim j As Integer
Dim diff As Integer 'ランキング差を格納

On Error Resume Next
Application.ScreenUpdating = False

'テクストリームサイトよりランキング情報を取得します。
Set objIE = CreateObject("InternetExplorer.application")

objIE.Visible = False

objIE.Navigate "https://textream.yahoo.co.jp/ranking/finance"

While objIE.readyState <> 4 Or objIE.Busy = True
DoEvents
Wend
'ページを全選択、コピーし、IEを閉じます。
objIE.ExecWB 17, 0
objIE.ExecWB 12, 0
objIE.Quit
Set objIE = Nothing

'貼付けシートにランキング銘柄を貼りつけます。
Sheets("貼付け").Cells.Clear
Sheets("貼付け").Range("A1").Select
ActiveSheet.PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:=False, NoHTMLFormatting:=True

'ランキングシートの左端に新しい列を作ります。
Sheets("ランキング").Columns(1).Insert
Sheets("ランキング").Range("A1") = Now
Sheets("ランキング").Columns("A").ColumnWidth = 22

'ランキングシートのA列にランキング銘柄を転記します。
j = 2

For i = 1 To 100
Sheets("ランキング").Cells(j, 1).Value = Sheets("貼付け").Cells(Sheets("貼付け").Range("A:A").Find(What:=i, LookAt:=xlWhole).Row + 2, 1).Value
j = j + 1
Application.StatusBar = "銘柄転記中---" & i
Next

Sheets("ランキング").Select

'上昇5以上ベージュ、10~19に黄色、20以上に赤を色付けします。
For i = 2 To 101

diff = i - Range("A:A").Find(What:=Cells(i, 2)).Row

If diff >= 5 And diff < 10 Then
Range("A:A").Find(What:=Cells(i, 2)).Interior.ColorIndex = 36
ElseIf diff >= 10 And diff < 20 Then
Range("A:A").Find(What:=Cells(i, 2)).Interior.ColorIndex = 6
ElseIf diff >= 20 Then
Range("A:A").Find(What:=Cells(i, 2)).Interior.ColorIndex = 3
End If

Next

Range("A1").Select
Beep
End Sub

■作成方法
①エクセルに『ランキング』と『貼付け』というシートを作ります。
②『貼付け』シートにフォームボタンを配置して、プロシージャ『貼付け』を登録します。

■ボタン押下後の動作
①インターネットエクスプローラで、掲示板ランキングのURLを開きランキングページがコピーされる。(IEは不可視で開くので、画面上は表示されません。)
②コピーされたランキング銘柄が自動的にエクセルの『貼付け』シートに貼り付けられる。
③『ランキング』シートの左端に列が1つ挿入される。
④挿入された列に貼付けられた銘柄が1番から100番まで転記される。
⑤ランキング上昇幅により色分けされる。

■注意
①使用上の責任は一切負いません。
②ヤフー掲示板の表示形式や、URLが変わったときは機能しなくなります。その場合はご自身でコードを修正してください。
③初回貼付け時は、比較するものが無いので色分けはされません。
④ご自身のパソコンにインターネットエクスプローラがインストールされている必要があります。
⑤ご不明な点はコメントください。

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

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

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

株システムトレードのトレジスタ・ストラテジーオンライン
スポンサーサイト

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

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

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