ケン
サンプルシートを動かしたいのですが
現在、「ナイトセッション」で岡三RSSを活用した取引手法解説シリーズ 総論 [第4回] 後編 にて紹介されてるサンプル 「ifdoneOCO+時間決済サンプル.xls」に修正を加え、岡三RSSにて実稼働させようとしおります。しかしながら、このファイルにあるシート「市場モニター」において、“取引のない時間帯 補完”の欄で、朝08:45~09:01 までの17行のV,W,X,Y列のセルが全て#N/A となってしまいます。このような現象が起きる理由とその対策につきまして、教えていただければ幸いです。尚、問題のシートの写真を添付しました。
2020年10月27日



ケン
大野様
Subを取ったらエラーは消えました。13級の悲哀を感じて涙が滂沱と流れました(笑)!
ありがとうございました。
2020年11月14日
大野 了
ケンさん
コンパイル通りましたかー
それはよかったです!!
俺もうれし涙がこぼれております(笑
2020年11月14日
ケン
大野様
お久しぶりです。当方、昨日岡三RSSに継続契約をしまして、昨日から実践投入開始しました(ifdoneOCO+時間決済サンプル)。しかし、動作がおかしいのでご相談申し上げます。まず、シート「市場モニター」の動きがおかしいのです。添付資料におかしいところを抜き出して画面のコピーを添付しております。おかしい点を以下箇条書きします。
疑問点1:4本値は1172個出力しているがFCANDLEの指定は1日分ではなかったか?
疑問点2:疑問点2:V3、Y3、に入力されるべきデータは、381行のH381~K381
であるべきが、過去のデータ、H1166~K1166が入っている。なぜか?
以上につきまして教えていただけますれば幸いです。
2020年11月17日
大野 了
ケンさん
サンプル観てみました。
>疑問点1:4本値は1172個出力しているがFCANDLEの指定は1日分ではなかったか?
これ確かにおかしいですね・・・
下の方に過去データと思われるデータが残ってしまっています。
G10~L1181まで、一度データを消して頂くと元に戻ると思います。
疑問点2:V3、Y3、に入力されるべきデータは、381行のH381~K381
であるべきが、過去のデータ、H1166~K1166が入っている。なぜか?
こちらも上記の過去データを消して頂くと直ると思われます!!
2020年11月17日
ケン
大野様
大野さんの仰るとおり、G10~L1181まで削除しました。今朝から見ておりましたら、昨日の問題2個とも解決しておりました。ありがとうございます。ところでそうしますと、毎朝08:30頃G10~L1181の削除が必要になる。ということでしょうか?よろしくお願い申し上げます。
2020年11月18日
大野 了
ケンさん
解決しましたかー
それは良かったです!!
ケンさんのおっしゃられます通り、毎回消してあげる必要があると思います。
そうですねー
一番簡単なのは、Workbook起動時に消してあげるのが一番かと・・・
VBAのThisWorkbookの中に
Private Sub Workbook_Open()
ThisWorkbook.Sheets("市場モニター").Range("G10:K1450").ClearContents
End Sub
これを埋め込めば、毎回ワークブック起動時に分足のデータを消してくれるようになります!!
2020年11月18日
ケン
大野様
さっそくThisWorkbook の中にPrivate Sub Workbook_Open()を埋め込みました。ファイルを立ち上げますと1~3秒ぐらいで4本値が削除されました。大きな壁を越えた気がします。大変ありがとうございました。ところで、現在、このファイルのシーケンシャルな動きを把握しようとして解析を進めております。理由は、全体のシーケンシャルな流れが把握出来ていないため、自信をもっていろいろ作業を進めることが出来ないためです。これまでの通常のソフトであれば、シーケンシャルに上から下へと読んでいけば、フローチャートを描くがことが出来て、すべてが把握できます。しかし、excelの場合は、2次元に平面に展開されており、時間的な流れが把握できません。大野さんにお聞きしたいのは、大野さんも私と同じフィーリングを持っておられますでしょうか?もしお持ちであれば、これに対して、どのような対処をされましたでしょうか?ご教授いただけますれば幸いです。
2020年11月19日
大野 了
ケンさん、こんにちは!!
なるほどー
そういう事ですねー
ExcleのVBAはイベント駆動方式と言いまして、
ケンさんのおっしゃられておられる、上から下まで全体的にシーケンシャルに流れていくというよりも
『何かイベント("ボタンが押された"、"セルの値が変わった"など)が起きた時に小さなプログラムが動く』
と言うような作りになっています。
今あるプログラムは、ほぼこのような作りの為
自分的には違和感はないのですが、
確かに各イベントに紐付いている一つひとつのプログラムが、
他のプログラムに影響のないようなシンプルな作りにしないと
わけがわからなくなってしまいがちです。
ちょっと適しているかわかりませんが・・・
以下のようなサイトの記述の仕方でまとめてみられるというのがいかがでしょうかー?
https://monoist.atmarkit.co.jp/mn/articles/1211/07/news003.html
2020年11月19日
ケン
大野様
サイトを見ました。なるほどと思いました。この方式でやってみようと思います。紹介ありがとうございました。
2020年11月19日
ケン
大野様
現在、条件注文シートの新規注文発注の部分(J1~K27)を集中的に調べております。以下教えていただけますれば幸いです。
1.セルJ3には、誰が書き込みを行っているのでしょうか?
2.あるセルが、誰によって書き込みが行われているかどうかを調べる方法はあるでしょうか?
以上よろしくお願い申し上げます。
2020年11月20日
大野 了
ケンさん、こんにちは!!
ご質問の件ですが・・・
>1.セルJ3には、誰が書き込みを行っているのでしょうか?
こちらは条件注文シート内のVBAにてフラグを立てているようです。
条件注文シートの再計算イベント時に、
Cells(3, 10) = 1
の一行で立てています。
>2.あるセルが、誰によって書き込みが行われているかどうかを調べる方法はあるでしょうか?
あるセルの状態によって調べ方を変える必要があります。
・セルに式がある場合
セルに式がある場合は、その結果がセルに表示されるため、
そのセルの計算式をスタートにして調べていけばよいと思います!!
・セルに式が無い場合
セルに式が無い場合は、基本、手入力かVBAにて値を入れています。
手入力でない場合は、VBAを見に行けばよいと思います。
VBAのEditorで、Ctrl + Fを押すと検索ダイアログが出るので、
ここで対象のセルを検索してあげたら良いと思います。
この時に気を付けないといけないのが、
セルの指定の仕方が2種類あることです。
今回の『J3』であれば
『Range("J3")』と書いてある場合もあれば
『Cells(3, 10)』と書いてある場合もあります。
こちらの両方を探してあげる必要があります!!
2020年11月20日
ケン
大野様
詳細な解説ありがとうございました。完全に理解いたしました。
2020年11月20日
Ken Highfield
大野様へ
現在、新規注文発注の要因を調べておりますが、一つ理解が出来ない点があります。教えていただければ幸いです。
F9=1が新規注文が発注される要因の一つですが、これが=1になる確率はゼロと思われます。それば、添付資料にありますように、セルF9に組み込まれている関数のフローチャートを見ますと、$F$1+TimeforDakoku>=D9+ValidTime は現在は限月以内ですから、成り立つ瞬間はありません。どのように理解すれば良いのか教えていただけますれば幸いです。
2020年11月20日
大野 了
ケンさん、こんにちは
F9ですが、セル関数の動きを見てみますと、
新規発注する際に、
指定した時間以降でないと発注させないようにするためのセルの様です。
また、その機能を有効にしたり無効にすることができます。
説明を行うにあたり、各セルの内容は以下の通りです。
======================================
C9:時間指定機能を使用するかどうか(不使用:使用しない、指定する:使用する)
F1:現在日付
TimeforDakoku(C39):現在時刻
D9:指定日付
ValidTime(E9):指定時刻
======================================
これらを踏まえて・・・
C9が"不使用"の場合は、時間指定する必要が無いため、常に1
(時間を気にせずいつでも発注していい)
※『=IF(MATCH(C9,$T$32:$T$33,0)=1, 1,』の部分
C9が"指定する"の場合、指定日時より後であれば新規発注させたい
※『IF($F$1+TimeforDakoku>=D9+ValidTime,1,0))』の部分
F1 + TimeforDakoku(C39) >= D9 + ValidTime(E9)
日本語に直すと・・・
現在日付 + 現在時刻 >= 指定日付 + 指定時間
となります。
このため指定した日時より、現在日時が大きくなった場合に1が立ちます!!
2020年11月21日
ケン
大野様
了解です。当方完全に勘違いしておりました。B9~F9の意味を全く逆の意味に思い込んでおりました! ありがとうございました。
2020年11月21日
大野 了
ケンさん
こちらこそお役に立てて幸いです!!
解析うまく行くことを祈ります!!
2020年11月21日
ケン
大野様
現在、イニシャルレンジブレークした瞬間に、買うのか売るのかを決定するアルゴリズムを調べております。このとき、D14の値(執行条件)の選択が売買を決定している様です。この執行条件は14種ありS9~T22にてリスト化されております。これらをインタネットにて調べました。14種あるうちの3種(6:不出来最大指値、17 :SO指値最大、18:SO指値)が意味不明でした。これらにつきまして意味を教えていただけますれば幸いです。
2020年11月21日
大野 了
ケンさん
んー
意味的には以下の通りなんですが・・・
6は名称が違う(動きは一緒)のと
17と、18はJ-Gateが稼働した時に指定の仕方が変わって、今はもうないと思います。
サンプルが作られた時がだいぶ前なので、前の仕様の記述が残ってるだけかもです!!
6:不出来引成(不出来最大指値)
基本、指値発注を行います。
そしてプレクロージングまでに指値が約定しなかった場合、
大引けで最大指値に注文を自動で切り替え約定させます!!
17 :SO指値最大(今はないはず)
逆指値のトリガー価格に達した場合に、最大指値で発注!!
18:SO指値(今はないはず)
逆指値のトリガー価格に達した場合に、指値で発注!!
2020年11月21日
ケン
大野様
6は名称は異なるが同じ機能のものが存在し、17,18はもはや存在しない可能性があるとのこと了解しました。これにつきまして、以下の質問につきまして教えていただけますれば幸いです。
質問1:17と18は今は無いとするとD14の選択範囲から17,18を削除せねばならないですが、削除の方法はどのようにすればよろしいでしょうか?
質問2:D14に8もしくは18を指定するとF15、F16に「第17、第18パラメータを指定」と赤字で印字されます。この意味は警告なのでしょうか?(いづれにせよ、17,18が現在存在しないとすれば、F15,F16の関数は削除して良いのでしょうか?)
質問3:イニシャルレンジをブレークしたときに高値で買うのを順張り、売るのを逆張りとすると、ユーザーが順張りにしたければ、D14を8にすればよい。
(株価が上に行くと思えばD11を3にし、株価が下に行くと思えばD11を1とする)
そして逆張りにしたければ、D14を例えば1にしてD11を3にする。
(株価がMaxに来たときはD11を1にし株価がMinに来たときD11を3とする)という考え方でよろしいでしょうか?
以上よろしくご教授お願い申し上げます。
2020年11月21日
大野 了
ケンさん
>質問1:17と18は今は無いとするとD14の選択範囲から17,18を削除せねばならないですが、削除の方法はどのようにすればよろしいでしょうか?
削除しなくても使わなければ大丈夫と思いますが・・・
もし消されていのであれば・・・
D14のセルを選択して頂いて、
データ(メニュー)ーデータの入力規則(リボンの中)ーデータの入力規則(リボンの中)
をクリックして出てくる設定タブの『元の値』を
=$S$9:$S$20
にしてあげたら消えます
>質問2:D14に8もしくは18を指定するとF15、F16に「第17、第18パラメータを指定」と赤字で印字されます。この意味は警告なのでしょうか?(いづれにせよ、17,18が現在存在しないとすれば、F15,F16の関数は削除して良いのでしょうか?)
F15、F16の関数には発注などの意味はなく、
ただ単に『逆指値を指定した場合は、第17引数、第18引数の設定するのを忘れるな』
というメッセージを親切に出しているだけと思います。
それ以上の意味はないため、消して頂いても大丈夫と思います。
一応、8の逆指値は残っているので、残しておいても大丈夫ではないでしょうかー
>質問3:イニシャルレンジをブレークしたときに高値で買うのを順張り、売るのを逆張りとすると、ユーザーが順張りにしたければ、D14を8にすればよい。
はい、大丈夫と思います!!
2020年11月22日