ヒロシ
複数銘柄でRSSで信用売買プログラムを作成する場合の「発注番号」の採番方法の考え方について
今、VBAで自動化プログラムを作成しているのですが、
複数銘柄でRSSで信用売買をする場合の『発注番号』の採番方法をどのように考えていけばよいかよくわかりません。
例えば、銘柄「7203」で信用買いの場合「7203_M007」、信用売り「7203_R008」という形で銘柄ごとに管理するようがよいのでしょうか?
また、「7203_M007」の下3桁の数字部分は、増えていくことになるかと思いますが、
発注初期からの通し番号をどんどん増やして管理しないといけないものでしょうか?
まだ、発注自体をやっことがなく、仕様を見ながらプログラムを作りこんでおります。
売りと買いをセルで表示させたタイミングで、
①信用買いの関数[MARGINORDER]や②信用売発注の関数[REPAYMENTORDER]
を動かしたいのですが、その際に『発注番号』の採番していく必要があり、
「注文紹介のORDQUERYの関数」や「保有の注文紹介のPOSITIONの関数」と絡めてどのように管理していくのか
分かり易い事例にて紹介頂けるとありがたいと思い、ご連絡させていただいた次第です。
よろしくお願いします。
2023年08月19日
大野 了
ヒロシさん、こんにちは!!
『発注番号』の採番とありますが、こちらは具体的にどのような用途でご使用される予定でしょうか?
いろいろと想像したのですが、いまいちヒロシさんが『発注番号』を、
どのように使われたいかが想像できず・・・(申し訳ありません)
『発注番号』をどのような用途でご使用になりたいのか、情報をいただけますと少し何かお伝えできるかもです!!
2023年08月21日
ヒロシ
大野様
お世話になります。おはようございます。ご連絡頂き有難うございます。
当初のご質問が、的を得ていなくて申し訳ありませんでした。
<最初の質問>
「発注番号」とは”発注を管理するためのシリアル番号のようなもの”という理解でいました。
例えば、銘柄ことに、(a)信用買いの関数[MARGINORDER]と(b)信用売発注の関数[REPAYMENTORDER]に応じたアルファベット1文字をつけ、「発注番号」を通し番号をつけていくという考え方で進めるとすれば、以下の例で「発注番号」を考えても問題ないでしょうか?具体的なイメージを以下①~⑤の例で示します。
①「発注番号」1358_M_0001: [市場コード”1358”における通算1番目の発注で(a)信用買いの関数[MARGINORDER]の発注なので”M”をつける]
②「発注番号」1358_R_0002: [市場コード”1358”における通算2番目の発注で(b)信用売りの関数[REPAYMENTORDER]の発注なので”R”をつける]
③「発注番号」1358_M_0003: [市場コード”1358”における通算2番目の発注で(b)信用売りの関数[REPAYMENTORDER]の発注なので”M”をつける] ※仮に何等かの理由で発注を中止したとしてが、通し番号の数値は増えていく。
④「発注番号」1358_M_0004: [市場コード”1358”における通算2番目の発注で(b)信用売りの関数[REPAYMENTORDER]の発注なので”M”をつける]
⑤「発注番号」1358_R_0005: [市場コード”1358”における通算2番目の発注で(b)信用売りの関数[REPAYMENTORDER]の発注なので”M”をつける]
上記のような考え方で進めていけば、①の信用買いと②の信用売り、④の信用買いと⑤の信用売りが、それぞれが売買のセットになる。
今、作成しようとしているプログラムは、自動プログラムのSHeet「発注条件等一覧」の”売”と”買”のタイミングでの売買発注 & 自動メール送付を行うことを考えております。
サンプルプログラムとして近いものは、下記URL内の「「ナイトセッション」で岡三RSSを活用した取引手法解説シリーズ 総論 【第4回】後編」の動画とサンプルプログラムを拝見して、ご質問した次第です。
https://www.okasan-online.co.jp/ont/rss/movie/chart/order.html??id=8bCD5be82mk
<追加質問>
あと1点追加でご質問ですが、[MARGINORDERでは第19引数、REPAYMENTORDERでは第22引数]に「注文番号表示先セル」の項目があるのですが、これはどのような意図で設けられているものでしょうか?
『次の発注番号を考える場合の資料としてEXCEL上のどこかのセルに記載する必要があれば、表示先のセルを指定するものである』と考えましたが、利用方法に苦慮したため、ご質問した次第です。
お手数をお掛けしますが、ご回答の程、よろしくお願いします。
2023年08月21日
ヒロシ
大野様
お世話になります。度々のご連絡有難うございます。
私は、信用取引における複数株式の自動売買のプログラムをVBAで作成しようと考えております。
この際に「発注番号」をどのように扱うかの一般的な考え方が分からずご質問させていただいた次第です。
銘柄種別は特に考えず、『発注種類毎の(a)信用買いの関数[MARGINORDER]と(b)信用売発注の関数[REPAYMENTORDER]に応じて頭に M +通し番号 とか R +通し番号 とかのような形で管理するのが普通の考え方である』
ということであれば、そのようにしたいと考えております。
お手数になりますが、ご教示頂けますと幸いです。
よろしくお願いします。
2023年08月21日
大野 了
ヒロシさん、こんにちは!!
なるほど、いろいろと理解できましたー
ありがとうございます。
『発注番号』は、発注した際に、各発注を自身で管理されたい番号ということで問題ありませんでしょうか?
もしそうであれば・・・
ヒロシさんのおっしゃれている方法で問題ないと思います!!
>あと1点追加でご質問ですが、[MARGINORDERでは第19引数、REPAYMENTORDERでは第22引数]に「注文番号表示先セル」の項目があるのですが、これはどのような意図で設けられているものでしょうか?
こちらですが、
発注関数で注文を行ったときに、注文一つ一つに振られるユニークな注文番号を表示させるセルを指定する引数となります。
(番号は岡三オンライン証券さん側で割り振られます。)
例えばここに、A2と記述すると、A2セルに注文を行った際の実際の注文番号が表示されます。
用途としては、
発注したものの注文状態はORDQUERY関数で確認するのですが、この時対象の注文を探すために使用します。
また、この関数は残念ながら、VBAから使用することはできず、
VBAから発注を行うには、MARGINORDER_CLを使用する必要があります!!
まとめると・・・
・MARGINORDER
発注が通ったときの注文番号を取得できるが、ワークシート関数としてしか使用できない。
・MARGINORDER_CL
発注が通ったときの注文番号取得できないが、VBAでも使用できる。
となります!!
ヒロシさんがVBAから発注を行う場合は『MARGINORDER_CL』を使用して発注を行う必要があります!!
2023年08月21日
ヒロシ
大野様
お世話になります。
この度は、懇切丁寧に御対応下さり大変有難うございました。
また、プログラムを作成する中で、不明点が出てきましたら、ご質問させて頂くかもいsれませんが、引き続き宜しくお願い致します。
2023年08月22日
ヒロシ
大野様
お世話になります。
今回の一連のご質問では最後の質問になるかと思います。
『MARGINORDER_CL』関数の使用しての売買ですが、
買いの場合は、第3引数の「売買区分」=”3” で信用買いの買い
売りの場合は、第3引数の「売買区分」=”1” で信用買いの売い
になるという理解でよろしいでしょうか?
また、下げ相場を利用した信用売買による空売りをVBAで行いたいのであれば、
関数『REPAYMENTORDER_CL』を使用するという理解でよろしいでようか?
その場合、
第3引数の「売買区分」=”1” で空売りの買い
第3引数の「売買区分」= ”3” で空売りの売り
となりますでしょうか?
ご教示頂けますと幸いです。
よろしくお願いします。
2023年08月22日
大野 了
ヒロシさん、こんにちは!!
信用取引の売買に関してですが、
信用買い、信用売り(空売り)問わず、
MARGINORDER_CLが『新規発注』
REPAYMENTORDER_CLは『決済発注』となります。
このため、新規発注したい場合は
一律、MARGINORDER_CL関数を使用し
信用買いの場合は、第3引数の「売買区分」=”3”
信用売り(空売り)の場合は、第3引数の「売買区分」=”1”
となります!!
2023年08月22日
ヒロシ
大野様
お世話になります。本村です。
今回は色々ご教示頂き、大変有難うございました。
何とか頑張ってVBAのプログラムを作成しようと思います。
よろしくお願いします。
2023年08月22日
大野 了
ヒロシさん、こんにちは
お役にたてて幸いです!!
VBAでのシステムの作成うまく行くことを祈っています!!
2023年08月23日
ヒロシ
大野様
お世話になります。
「MARGINORDER_CL」と「REPAYMENTORDER_CL」関数を利用して、5分足で注文売買のトリガーが発動した際のVBAのプログラム作成を試みております。
大きく下記(1)~(3)の考え方でVBAを組む方向で考えていおり、要件を定義する中で以下①②に関する質問項目が出てきました。
①進めていく中で関数における引数の使い方詳細の確認
②大引けで残ってしまった買いと売りの注文をキャンセルする方法
システムの動きとしては、
(1)9:00~14:50までは、
「REPAYMENTORDER_CL」で「0:成行」の買い注文と「REPAYMENTORDER_CL」で「0:成行」の売り注文を交互に入れる。
(2)手仕舞い時間を14:55とし、14:55に買い注文は「REPAYMENTORDER_CL」は「5:引成」の売りがの大引け15:00までに成立するようにする。
(3)15:00の大引けに売りと買いの注文が残っていたら、VBAマクロでキャンセルする
⇒VBAでその日の残売買をキャンセルさせることはできるか?どのような関数を使うか?【岡三証券様にご質問:②】
上記(1)~(3)のロジックを組むために、以下の考え方で、5分足の自動売買のロジックを作成して間違えがないか?確認したいと考えております。
当面、逆指値は止め、成り行き注文のみの、売買トリガーの発動に応じた売買のプログラム作成のみを行いたいと考えています。
以下について【岡三証券様にご質問】の部分と、関数の利用イメージに間違えがないか?ご教示ください。
(1)9:00~14:50までの通常発注時(5分足で売買するので)
①9:00~14:50でまで、売買許可トリガーのセル=1おいて"注文売買"のトリガー=”買”が出た場合
以下の関数イメージで買いを行う
・MARGINORDER_CL(”1358”,””,3,0,”0”,1,T,”20230825”,0,1,1,”password”,”1358_M_0001”,””,””,”1”,”1”,0)
(※1) 引数3は「売買区分は”3:買”」、引数4は「執行条件は”0:成行”」とする
(※2) 発注IDは『銘柄コード+_M+通し番号』とし、通し番号はマクロで数値を増やしていく。<上の例では、発注IDは「1358_M_0001」で、通し番号は「1」とした>
(※3) 引数14,引数15は空欄””にしてよいか?(逆指値はやらないので項目は入れない)【岡三証券様にご質問:①】
②9:00~14:50でまで、売買許可トリガーのセル=1おいて、"注文売買"のトリガー=”売”が出た場合
以下の関数イメージで買いを行う。
・REPAYMENTORDER_CL(1358,,1,0,'0',10,T,'20230826',0,,,0,0,”password",”1358_R_0008”,,,,1,'1',0)
(※1) 引数3は「売買区分は”1:売”」、引数4は「0:成行」とする
(※2) 発注IDは『銘柄コード+_M+通し番号』とし、通し番号はマクロで数値を増やしていく。<上の例では、発注IDは「1358_M_0008」で、通し番号は「8」とした>
(※3) 第10引数:建単価と第11引数:建年月日は空欄”にしてよいか?(引数4は「0:成行」なので【岡三証券様にご質問:①】
(※4) 引数16,引数17は空欄””にしてよいか?(逆指値はやらないので項目は入れない)【岡三証券様にご質問:①】
(2)14:55の手仕舞い時(5分足で売買するので)
③14:55 売買許可トリガーのセル=1おいて、"注文売買"のトリガー=”買”が出た場合
14:55~15:00までは、新規信用の関数[MARGINORDER_CL]の買い注文はマクロで動作させない。
④14:55 トリガーのセル[Sheet"発注条件等一覧"!G3セル]=1おいて"注文売買"のトリガー=”売”が出た場合
14:55に以下の関数を呼び出し、15:00に売買成立させる
・REPAYMENTORDER_CL(1358,,1,5,'”0”',10,”T”,'”20230826”',0,,,0,0,”password",”1358_R_0010”,,,'1','1',0)
(※1) 引数3は「売買区分は”1:売”」、引数4は「5:引成」とする
(※2) 発注IDは『銘柄コード+_M+通し番号』とし、通し番号はマクロで数値を増やしていく。<上の例では、発注IDは「1358_M_0008」で、通し番号は「8」とした>
(※3) 第10引数:建単価と第11引数:建年月日は空欄””にする?(引数4は「0:成行」なので)【岡三証券のご担当ごに質問:①】
(※4) 引数16,引数17は空欄””にする?(逆指値はやらないので項目は入れない)【岡三証券のご担当にご質問:①】
⑤トリガーが空欄であれば売買しない。
(3)15:00の終了時
15:00時点で残ってしまった信用買いと売りの注文をキャンセルする
→15:00にVBAで残ってしまった信用売りと信用買いの注文をキャンセルさせることはできるか?どのような関数を使うか?岡三証券のご担当に教えて頂きたいと考えている。
【岡三証券のご担当にご質問:②:具体的にどのような関数を用いて処理を行えばよいか?確認させて頂きたい】
以上、お手数をお掛けしますが、ご教示頂けますと幸いです。宜しくお願いします。
2023年08月26日
大野 了
ヒロシさん、こんにちは!!
質問中に『岡三証券様にご質問』とあるのですが、こちらは自分宛でのメッセージという事で問題ありませんでしょうかー?
自分は岡三オンライン証券さんの社員ではなく、RSSの1ユーザとなります!!
もし岡三オンライン証券さん宛で、自分宛でなかった場合は、勝手に返答する形になってしまい申し訳ありません。
ご質問の内容ですがー
全体的に確認したところ、以下の内容で漏れはありませんでしょうか?
1.大引け時に注文が残ってしまった場合の対応
2.通常発注時の逆指値系の引数(第14引数, 第15引数)の扱い方
3.決済発注時(REPAYMENTORDER_CL)の建単価(第10引数)、建年月日(第11引数)の扱い方
もしそうであれば・・・
>1.大引け時に注文が残ってしまった場合の対応
『MARGINORDER_CL』 『REPAYMENTORDER_CL』共に、第7引数に『期間指定』というものがあります。
これを『T:当日のみ有効』にしていただくと、大引け後注文が残っていた場合、自動でキャンセルされます。
>2.通常発注時の逆指値系の引数(第14引数, 第15引数)の扱い方
逆指値が不要な場合は空白("")で大丈夫です!!
>3.決済発注時(REPAYMENTORDER_CL)の建単価(第10引数)、建年月日(第11引数)の扱い方
こちらは、約定した際の価格と建年月日を指定してあげる必要があったと思います。
以上、ご参考になれば幸いです!!
2023年08月27日
ヒロシ
大野様
この度は、大野様のお立場を取り違えまして大変申し訳ありませんでした。お詫びいたします。
また、長文にもかかわらず、懇切丁寧にご確認いただきまして、大変有難うございました。
関数についての案内ページの参照の方法に少しづつ慣れてきましたが、念のための確認させていただけますと幸いです。
<ご質問の内容1>
>>3.決済発注時(REPAYMENTORDER_CL)の建単価(第10引数)、建年月日(第11引数)の扱い方
>こちらは、約定した際の価格と建年月日を指定してあげる必要があったと思います。
信用の売り[REPAYMENTORDER_CL]に対応する新規信用の買い[MARGINORDER_CL]の買い注文が約定した結果を、
下記URLの[POSITION]関数を「信用建玉別表示」でEXCEL上に第5引数の「取得単価(建単価)」第12引数「約定日付(建年月)」
https://www.okasan-online.co.jp/ont/rss/manual/detail/10
を表記し、対応する信用の売り[REPAYMENTORDER_CL]建単価(第10引数)、建年月日(第11引数)に登録する
という理解で誤りないでしょうか?
<ご質問の内容2>
関数(REPAYMENTORDER_CL)と(MARGINORDER_CL)における『発注番号』のの通し番号は、
RSSの接続をサインアウトする度に、0リセットされるという理解でよろしいでしょうか?
お手数になりますが、ご教示の程宜しくお願いします。
あとは、執務中のお昼休みが少しでもとれれば、実際に少額の売買をやってみて、売買データがどのようにとれるか等を確認する必要がありそうに感じました。
よろしくお願いします。
2023年08月27日