質問掲示板
岡三RSS
集いの広場

アップロードされたファイルおよび投稿内容についての注意事項 別窓

複数の単語で検索する方法 別窓

【国内株式、先物・オプション】岡三RSS質問箱

Yasuhide Sakai

次回の発注のために発注IDを変更する

初めて投稿いたします。

ロートル投資家で自作のエクセルのシステムを利用して固定銘柄のペアトレードを長年実践しておりますが、このたび自動による取引に発展させるべく挑戦しておりますが、基本的なところでズッコケております。ご教授ください。

取引関数を利用しシート上で発注することはできました、発注完了のメッセージを返すことはできましたが、そのタイミングで次回の発注のために発注IDを変更する等のVBAを実行したいのですがその方法がわかりません。

初歩的なエクセルの問題なのかもしれません。worksheet_update,worksheet_change とか試してみるのですがうまくゆきません。

サンプルシートにあるのかも知れませんがご指摘、ご教示いただければ幸いです。


(岡三RSSファンページからの転載)

2016年12月21日

Ryo Ohno

Sakaiさん始めましてっ!!
大野と申します。
よろしくお願い致します。

現在は、VBAを使わずに、セル関数のみでやられてますでしょうか?
発注IDを毎回変更されたいだけでしたら、時間を発注IDに使う方法が最も簡単と思われます
(VBAを使わずにできますっ)

セルに以下のように記述しますと、1秒ごとに違う数字が帰ってきます。
=TEXT(NOW(),""YYYYMMDDHHMMSS"")

例)
2016/09/28 12:30:01 でしたら・・・
20160928123001

Sakaiさんのシステムの発注間隔が1秒以上の場合は、この方法が使えると思います。
注意点といたしましては、Excelの更新が行われないと、上記の関数の値が更新されません。
※Excelの更新が掛からないと、ずっと同じ値が表示されたままになります。

これを回避させるためには、岡三RSSのIDX関数で、日経の現在値などを必要なくても1つ出力しておくと、
つど、Excelが更新が掛かります。

もし、VBAでの更新方法が必要な場合は、またご連絡くださいっ!!


(岡三RSSファンページからの転載)

2016年12月21日

ログインしてコメントを投稿する

Yasuhide Sakai

大野様

早速のご返事ありがとうございます。
単純な方法なので早速試してみます。

欲を言って申し訳ないのですが、複数ペアの巡回監視、返済dataのsetup、発注まで考えておりますので、VBAによる方法も知りたいと思っております。

考え方としては、単にVBAを無限にloopさせ処理せればよろしいのでしょうか?

RSSのData更新タイミングとVBAの実行の関連がわからないので何とも迷っております。

今後ともよろしくお願いいたします。


(岡三RSSファンページからの転載)

2016年12月21日

ログインしてコメントを投稿する

Ryo Ohno

Sakaiさん
はい、自分でお役に立てることであれば!!

VBAで発注などの処理を行う場合、
sakaiさんのおっしゃられています通り、無限ループをさせれば、
VBAが動き続け、その中で処理を行えます。
ですが、Sakaiさんがご懸念されている通り、VBA実行中は岡三RSSがデータを更新できません。

VBAには、VBA以外の処理が動作できるようにするための『DoEvents』という関数があるのですが、
こちらを使っても、時々岡三RSSがデータを更新できない時があります。

安定させて、岡三RSSのデータ取得処理をVBAを同時に動かすには、
タイマ処理を行うのが一番良いと思います。
タイマ処理とは、同じVBAのプログラム(マクロ)を繰り返し呼び出す処理になります。

文字だけで説明できるか、心配ですが頑張ってみます。(笑

また、どうしても長文になってしまいますし、
わかり辛い点も多いと思います。
その時は、こちらの掲示板でもメッセージでも構いませんので、

ご遠慮なく、ご連絡頂けますと幸いです。


○手順

1.VBAエディタを開く
2.メニュー-挿入-標準モジュール
3.プロジェクトエクスプローラー(左の階層形式になってるやつです)に、Module1が追加される
  標準モジュール
    ∟Module1
4.Module1をダブルクリックし、画面に表示させる
5.以下のソースをコピー

Private nextTime As Variant

Public Sub StartProc()
nextTime = Now + TimeValue(""00:00:01"")
Call Application.OnTime(nextTime, ""MainProc"")
End Sub

Public Sub MainProc()
Sheet1.Range(""A1"").Value = Range(""A1"").Value + 1
nextTime = Now + TimeValue(""00:00:01"")
Call Application.OnTime(nextTime, ""MainProc"")
End Sub

Public Sub EndProc()
Call Application.OnTime(nextTime, ""MainProc"", , False)
End Sub

○始め方
1.マクロの実行で『StartProc』を実行させる

○止め方
1.マクロの実行で『EndProc』を実行させる

○説明
『Call Application.OnTime(nextTime, ""MainProc"")』
は、nextTimeで指定された時間に、MainProcという関数(マクロ)を動かすという処理になります。

『StartProc』では、1秒後に『MainProc』を動かすという処理が記述されており
『StartProc』の処理が終わった後、1秒後に『MainProc』が動き出します。

『MainProc』にも、これまた1秒後に『MainProc』を動かすという処理が記述されておりますので、
自分自身を1秒後に呼び出し、自身を無限に呼び出します。(無限ループ)

『EndProc』に記述されています、
『Call Application.OnTime(nextTime, ""MainProc"", , False)』は
タイマ処理を停止させる処理となりますので、タイマ処理が止まり、無限ループが止まります。

あとは『MainProc』の1行目の『Sheet1.Range(""A1"").Value = Range(""A1"").Value + 1』の部分を
Sakaiさんのロジックに変更して頂けますと、
繰り返し動作するVBAの処理となります。

VBAの中で行う無限ループと違うところは、
一度、VBAの処理が終わりますので、岡三RSSがデータを取得するタイミングが生まれます。


(岡三RSSファンページからの転載)

2016年12月21日

ログインしてコメントを投稿する

Yasuhide Sakai

Ohono さま

早速のReply有難うございます。
ピンポイントで私の知りたいところをご理解、ご返答いただき、頼もしい限りです。
当方、老化防止策のひとつとして、システムの構築、更新、本番移行を通じて株式取引を楽しんでおります。
現在は従来システムのVersionUpの構想もまとまり、実現を目指し、並行して作業しております。
もともと理解と手が遅いうえに、歳も重なり作業が遅く、Try and Error を繰り返しておりますので、Ohnoさまが忘れたころ、次なる問題にぶち当たると思います。

その節はよろしくお願いいたします。


(岡三RSSファンページからの転載)

2016年12月21日

ログインしてコメントを投稿する

Ryo Ohno

Sakai様

はい、自分でわかることで、少しでもお役に立てれば幸いです。

従来のシステムのバージョンアップなされるとか、素敵ですね。
自分も思いついた取引ロジックをバックテストして、使えそうであればシステムに取り込むという毎日です。
自分の場合は、システムは作れるのですが、肝心の売買手法の方がからっきしですので、
そちらは逆にご教授頂けますと幸いです。(笑

こちらこそこれからも、よろしくお願い致します。


(岡三RSSファンページからの転載)

2016年12月21日

ログインしてコメントを投稿する

Yasuhide Sakai

Ohnoさま

ながながとご報告を書いたのですが、最後の最後でどこかへ飛んでしまいました。
気力が失せたので簡略に現状をご報告します。

お陰様で新規注文の実行はできました。
今後、返済注文、複数ペアの注文へと発展させます。
悩みながらも、楽しんでおります。

まずはご報告と、御礼まで。


(岡三RSSファンページからの転載)

2016年12月21日

ログインしてコメントを投稿する

Ryo Ohno

Sakai様

新規発注、うまくいきましたかっ!!
お役に立てたようで、よかったです。
作り上げていく過程も楽しいですよね、自分もやめられません。

これからもよろしくお願い致します。


(岡三RSSファンページからの転載)

2016年12月21日

ログインしてコメントを投稿する

すべての投稿を表示する

to_top
to_top

アップロードされたファイルにはウイルスチェックを行っておりますが、未知のウイルス等に感染されている場合がありますので、アップロードされたファイルのご利用はご注意ください。
また、取引パスワード等の重要な情報を投稿内容に含めないようご注意ください。
なお、アップロードされたファイルの利用や投稿内容によって、投稿者自身や他の利用者が被った損害に対して当社は一切責任を負いません。

また、セキュリティの関係上、一部コマンド等を含む内容を送信するとエラー画面が表示され、投稿ができない場合がございます。何卒ご了承ください。

岡三RSS集いの広場では、複数の単語による検索が可能です。

例)関数 and サンプル
→AND検索となり、「関数」および「サンプル」を含む検索結果が表示されます。

例)関数 or サンプル
→OR検索となり、「関数」または「サンプル」を含む検索結果が表示されます。

例)関数 not サンプル
→NOT検索となり、「関数」を含むが「サンプル」は含まない検索結果が表示されます。

※and、or、notの前後は半角スペースで区切ってください。
※単語の間を半角スペースで区切るだけだと、OR検索となります。