忍者ブログ

EXCEL VBAで あくせく

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


株富夢士信用取引 サポート

よくある質問 Q & A  【ver2.1】
 
Q1  信用建余力や現引余力が証券会社の画面より低い値がでます。
  なぜでしょうか?
A:  証券会社では、委託保証金率や持株信用保証評価などを、
  リアルタイムで変化させています。このシートでは、
  初期設定を行うだけで、細かい変化対応ができませんので、
  証券会社の画面とは違いがでます。
 
Q2  新規注文の信建種別を選択して建単価、株数を記入したのに、
  信用建資金の新規建玉欄に表示が何もでません。
A:  取引一覧表の証券コード欄の記入が漏れているからです。
  記入した行が連続している場合は、一度注文実行ボタンを押せば
  前の行の銘柄名、証券コード、市場をコピーしてくれます。
 
Q3  建注文時に誤って注文実行ボタンの「はい」を押してしまいました。
  どこを修正すれば元にもどせますか?
A:  注文日付欄に本日の日付が入っているので、これを削除する。
  信建種別が「買残」又は「売残」になっているので元に戻す。
  手数料演算エリアの注文手数料欄に、演算された手数料が入って
  いるのでこれを削除する。
  信用取引履歴表の1行目にに注文結果が入っているので、
  該当する行を削除する。
 
Q4  返済注文時に誤って返済実行ボタンの「はい」を押してしまいました。
  どこを修正すれば元にもどせますか?
A:  注文日付欄に本日の日付が入っているので、これを削除する。
  注文の信建種別が「-」になっている場合は元に戻す。
  注文の株数が、減算されているので元の株数に戻す。
  返済欄の信建種別が「-」になっているので元に戻す。
  戻株数がクリアされているので元の値に戻す。
  確定損益に誤って実行した注文の損益が加算されているので、
  その分を減算する。
  手数料演算エリアの注文時手数料がクリアされているので
  元の値にに戻す。
  信用取引履歴表の1行目にに返済注文結果が入っているので、
  該当する行を削除する。
 
Q5  警告メッセージの一部だけ使用したい場合はどの様に
  設定すればよいですか?
A:  警告メッセージの保証金率欄を削除して空白にしてください。
  例えば、40%、30%、20%、だけを使用したい時は、
    35%、25%、の部分を空白にします。
  警告メッセージの文章欄はそのままにしておいてかまいません。
 
Q6  逆日歩の発生は、組入れられていますか?
A:  本シートでは、逆日歩の発生した事もわかりません、
  かつ情報収集する事もできませんので対応していません。
  逆日歩があった場合は、手持ち資金に誤差が出てきますので、
  投資現金欄を証券会社の画面に従って修正してください。

拍手[0回]

PR

重複するデータ行の削除

EXCEL表にキーとなるコードを入力していくと、コードの重複に気づかない
場合があります。この処理はデータに重複がある場合は、重複行を見つけ削除
する処理です。
この処理では、重複行を見つけると無条件に削除してしまいますので、
株価情報検索処理の銘柄登録には向いていますが、データベースの様な
個々のデータ行が重要な意味を持つ処理には向いていません。
ここでは1列1行目から比較を開始して、2行目以降100行目までに、
データの重複があった場合に、比較行より先にある行の削除を行います。
重複する行が点在して複数回出現しても、連続したデータとなっていても
かまいません。
行削除には、.EntireRow.Deleteコマンドを使用します。
途中に空白行があれば、その空白行以降の空白行は削除されます。

Private Sub sample()
Dim wRow       As Integer
Dim cRow       As Integer
Dim sRow       As Integer
Dim cKazu      As Integer

    wRow = 1
    sRow = 100
 For cKazu = 1 To sRow
     cRow = wRow + 1
   Do Until cRow > sRow
     If Cells(wRow, 1) = Cells(cRow, 1) Then
        Cells(cRow, 1).EntireRow.Delete
        cRow = cRow - 1
     End If
        cRow = cRow + 1
   Loop
    wRow = wRow + 1
 Next
End Sub




 

拍手[0回]


重複行の削除処理

表作成の場合、キーとなるコードに重複がある場合は、2行重複した
 行を見つけ削除する処理です。
キーとなるコードが2行連続している場合に、削除する事が可能です。
ここでは、1行目1列から100行目までのキーとなるコードの
連続した2行に重複があった場合に、先にある行の削除を行います。
行削除には、.EntireRow.Deleteコマンドを使用します。

Private Sub sample()
Dim wRow       As Integer
Dim cKazu      As Integer

  wRow = 1
  For cKazu =  1 to 100
    If Cells(wRow, 1) = Cells(wRow + 1, 1) Then
       Cells(wRow + 1, 1).EntireRow.Delete
    End If
    wRow = wRow + 1
  Next

End Sub


 

拍手[0回]


接続時間測定

Yahooファイナンスからデータを取得する時の応答時間を計測してみました。
時間計測には、Timer関数を使用します。
Timer関数は、午前0時から経過した秒数を表す単精度浮動小数点数型の
値を返しますので、Yahooファイナンスの接続前と応答テキストの受信後に
入れて掛かった時間を計測します。

Private Sub Sample ()
Dim oHttp      As Object
Dim strURI     As String
Dim syCode     As String
Dim cmpText    As String
Dim StTim  As  String
Dim EdTim  As  String

 Set oHttp = CreateObject("MSXML2.XMLHTTP")
  StTim = Timer
'-----------------株価情報検索-------------
   With oHttp
     strURI = "https://stocks.finance.yahoo.co.jp/stocks/detail/?code=" & Cells(wRow,4)
                .Open "GET", strURI, False
                .setRequestHeader "If-Modified-Since", "Thu, 01 Jun 1970 00:00:00 GMT"
                .send
    syCode = GetText(.responsetext, "【", "】")
   cmpText = GetText(.responsetext, "contents-body", "contents-footer")
  End With
'------------------------------------ 
   EdTim = Timer
  Msgbox "処理時間は、" & EdTim - StTim & "秒です。"
End Sub

自宅の回線はBフレッツ光で、屋内はBUFFALOの無線LAN(Air Station
WZR-450HP-C) が付いています。無線LAN親機は1階で子機は2階に
ありますが、転送速度は 20MB以上が出ており、回線関係の遅延は
無視できる範囲とします。
測定は平日のYahooのアクセスが少ない朝の7:00過ぎに行いました。
測定結果
  1回目:0.4099秒
  2回目:0.4900秒
  3回目:0.5199秒
  4回目:3.3400秒
  5回目:0.4500秒

計測してみると、0.4秒代が多く途中で3.34秒が1回入っています。
この結果からみると、1件あたりの平均情報収集時間は、0.5秒程度と
みた方が無難でしょう。
実際に1000件のデータを収集してみると、約9分かかっています。
ではインターネットの混雑状況は、時間帯により違うため計測時間が
変わるのではないかと予測して時間帯を変えて測定してみました。

時間帯別測定結果
1.    7:00~ :8分50秒
2.     14:30~ :9分27秒
3.  19:30~ :8分45秒   
4.  21:00~ :8分40秒

結果からみると、インターネットの混雑状況による測定時間の
変化はほとんどないとみてよいでしょう。


2017.04.01 Yahooの仕様変更により情報収集ができなくなったので修正。
      接続先URLの変更。



拍手[1回]


Timer 関数

処理時間の測定にTimer関数を使用します。
Timer関数は、午前0時から経過した秒数を表す単精度浮動小数点数型の
値を返しますので計測対象の前後に入れて掛かった時間を計測します。
指定のしかたはこの様にします。 

  Timer 関数
構文   Timer
引数  なし

Private Sub Sample  ()
Dim StTim  As  String
Dim EdTim  As  String
StTim = Timer
---計測対象処理---
EdTim = Timer
Msgbox "処理時間は、" & EdTim - StTim & "秒です。"
End Sub

 

拍手[0回]


        
  • 1
  • 2
  • 3