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

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

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

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

ケン

サンプルシートを動かしたいのですが

市場モニターの画面.PNG (109.5KB)

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

2020年10月27日

大野 了

ケンさん、こんにちは!!!

サンプルファイル観てみましたー
VLOOKUPの検索方法が省略されていて、近似一致になってるためだと思われます!!

多分、ロジック的に完全一致でも大丈夫と思いますので、
=VLOOKUP($U10,OFFSET($O$10,0,0,$H$8,5),2,FALSE)
の様に、一番最後に『,FALSE』を付けてあげたら大丈夫と思います。

こちらのサンプルを作ったわけでもないですし、
サンプル内のすべての動作を確認したわけではないので、
多分大丈夫とは思いますが、誤動作する可能性があります。
自己責任で修正して頂けますと幸いです!!

2020年10月27日

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

ケン

解答ありがとうございます。
大野さんの仰られる通りに実行しました。結果、08:45~08:59までは#N/Aのままで変化がありませんでした。しかし、09:00~09:01まではちゃんと数字が出ました。全く不思議です。ところで、「補完」の意味から考えますと、VLOOKUP函数の最後にFALSEを付加するのは、趣旨に反します。これでは補完の意味をなしません。これにつきましては、ビデオ講義「岡三RSS発注編4回シリーズ第4回 ifdoneOCO+時間決済プログラムの組み立てVol.3 (全体で25分のビデオの最初から14分後から16分あたりにかけて、VLOOKUP函数の説明があります) ということでほかに何か原因が考えられますでしょうか?教えていただけますれば幸いです。

2020年10月28日

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

大野 了

ケンさん、こんにちは!!

なるほどー
ここの仕様が理解できましたー
&
ちゃんといろいろ見てみました(笑
その結果、原因としては・・・

O列に入っている
『=IF(ISNUMBER($G10),OFFSET(G$9,$N10,0),"")+IF(VALUE(OFFSET(G$9,$N10,0))<9/24,1,0)』の後半の
『+IF(VALUE(OFFSET(G$9,$N10,0))<9/24,1,0)』がN/Aの原因となります。

まず、前提条件としてExcelの日時は内部では小数点付の数値として管理されており
整数部:日にち
小数部:時間
となっています。
※O列などの書式を"標準"にすると実際の値が出てきます。

なので、時間+1などの処理をすると、翌日の同時間という意味になります。

O列で昇順にさせるときに
IF(VALUE(OFFSET(G$9,$N10,0))<9/24,1,0)
の記述があるため、9時より前のデータがすべて+1されてしまい、
O列が書式設定により、時間だけ見ると見た目上は昇順に並んでいるのですが、
9時以前のデータは翌日の同時間になってしまい、
データ的には昇順に並んでおらず、VLOOkUPの近似一致が正常に動作していません。

ここからは完全に妄想なのですが・・・
サンプルファイルが2012年に作られているため
先物の取引時間が、9:00~翌3:00だったのだと思われます。
この時、日にちをまたいだ
0:00~3:00をデータ的に最後に持ってきたいため、+1してるのではないかと・・・
しかし、2016年に8:45に開始時間が変更されたため、
8:45~9:00付近のデータがも翌日になってしまい、おかしくなったと・・・

ですので・・・
『=IF(ISNUMBER($G10),OFFSET(G$9,$N10,0),"")+IF(VALUE(OFFSET(G$9,$N10,0))<8/24,1,0)』
として、8時より前だったら、+1とすることにより、
全体的に正常に動くと思います!!

2020年10月28日

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

ケン

大変ありがとうございました。結論から申し上げます。函数中の9/24を8/24にしただけで,一遍に解決しました。#N/A は全く生じなくなりました。再度ありがとうございました。
サンプルプログラムの「ifdoneOCO+時間決済プログラム」を実際に岡三RSSで動かすには、更に数カ所(数10箇所か?)修正せねばならにような気がしております。今後ともよろしくお願い申し上げます。

2020年10月29日

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

大野 了

上手くいきましたかー
よかったです!!

確かにサンプルが作られたころと、今では先物の開場時間が違うという視点で考えると
その他にもセル関数の範囲とか変えるところがあるかもですねー

何かありましたら再度ご連絡頂けますと、
また観てみまーす!!

2020年10月29日

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

岡三オンライン証券

ケンさま


いつも岡三RSSをご利用いただき、誠にありがとうございます。

今回ご投稿いただいたサンプル「ifdoneOCO+時間決済サンプル.xls」ですが、取引時間に変更があったことにより、一部のセルに「#N/A 」が表示されていた模様です。

その個所を修正したファイルをアップいたしましたので、ご利用いただければと思います。

https://www.okasan-online.co.jp/ont/use/rss/movie/order.html?id=5aL9-ZtPJgw
※該当するサンプルシートからダウンロードしてください。

なお、通常当社のウェブサイトで公開しているサンプルシートは、作成時点における取引概要などに基づき製作しております。そのため、公開後に取引時間などの変更があった場合、ご利用されるお客さま自身で修正をお願いしておりますことをご理解ください。

引き続き、岡三RSSをご利用くださいますようお願い申しあげます。

2020年10月29日

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

ケン

岡三オンライン証券様へ
新しいファイルのアップロードありがとうございました。早速試してみました。いろいろ変なところがすべて修正されているように思いました。さて、次の質問に移りたいと思います。当方VBAの超初心者ですので、よろしくお願い申し上げます。
1. 函数の頭に@が付いている場合がありますが、気にしなくてよろしいでしょうか?
2. 函数が{ }にて閉じられている場合があります。
(例として {=FQUOTE($F$30,$F$31,D2)} のようになっている場合がある)
これも気にしないでよろしいでしょうか?

2020年10月29日

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

岡三オンライン証券

ケンさま

再度のご投稿、ありがとうございます。


「岡三RSS集いの広場」は、「利用者同士の交流・情報交換を目的としたサービス」としております。

岡三RSSの仕様など当社へのご質問・ご要望につきましては、当社コールセンターまでお問合せくださいますようお願いいたします。

お手数をお掛けいたしますが、よろしくお願いいたします。

2020年10月30日

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

ケン

フローチャート20201030.PNG (51.4KB)

大野様へ
次なる質問です。現在、サンプルファイル「ifdoneOCO+時間決済サンプル.xls」の動作の流れを把握しようとしております。このため、まず全体のフローチャートを作成し、そのフローチャートの部分に対応するセル(およびそのセルを含むシート)を対応付けしようとしております。ところで、最も重要な部分と考えるエントリーを決定するセルは、シート“条件注文”のJ3セルであり、ここに1が書き込まれれば、新注文が発注されます。(J7にはfneworderの命令が書き込まれており、J3×J2<>0のときに発注が実行される)
ところが、どこのシートのどこのセルがJ3=1を書き込んでいるのかが判りません。
このためフローチャート(添付しました)のエントリ部分に関連するシート名、セル名を書き込むことができません。どのように問題のセルを検索すれば良いか教えていただけますれば有りがたいです。(ビデオを複数回聴講しましたが、やはり説明されていませんでした)

2020年10月30日

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

大野 了

ケンさん、こんにちは!!

サンプルファイル更新して頂けたみたいで、
良かったですね・・・(ありがたやありがたや・・・

さて、ご質問の件ですがー
サンプルファイルを見てみたのですが、
条件注文シートのJ3には、セル関数ではなくVBAを使用して立てているようです。


J3に1が立つ条件としましては、
何か再計算が走る度に以下の条件を毎回チェックし、合致すれば1を立てています。

1.条件注文!J2 が 1以外
2.条件注文!J3 が 1以外 かつ 条件注文!J4が1

また、上記の条件に合致し、J3を1にすると同時に
条件注文!C39 の時間を 条件注文!J5にも入れているようです!!


VBAのソースの見方ですが
ALT + F11 を見るとVBAエディタというものが上がってきますので、
そこからソースコードを見ることができます!!

2020年10月30日

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

大野 了

ついでに、サンプルファイルのご質問への回答も・・・


>1. 函数の頭に@が付いている場合がありますが、気にしなくてよろしいでしょうか?
結論としては、Excelが誤判断して@を付けているだけ
&
岡三RSSの関数は基本1関数、1つのデータが戻るだけですので、
動作には影響は無いと思われます!!

関数の前に"@"が付くのは、
あまり使われないのですが、Excelに共通部分の交差という関数の記述方式があり、
少し前にExcelの仕様が変わって、共通部分であることをわかりやすくするために、
Excelが追加するようになりました。
仕組み上1つのセル関数で、1つのデータが変わる場合は、@があってもなくても
動作が変わらないので大丈夫と思います。

以下、マイクロソフトのサイトです!
https://support.microsoft.com/ja-jp/office/%e6%9a%97%e9%bb%99%e7%9a%84%e3%81%aa%e3%82%a4%e3%83%b3%e3%82%bf%e3%83%bc%e3%82%bb%e3%82%af%e3%82%b7%e3%83%a7%e3%83%b3%e6%bc%94%e7%ae%97%e5%ad%90-ce3be07b-0101-4450-a24e-c1c999be2b34?ui=ja-jp&rs=ja-jp&ad=jp



>2. 函数が{ }にて閉じられている場合があります。
(例として {=FQUOTE($F$30,$F$31,D2)} のようになっている場合がある)
これも気にしないでよろしいでしょうか?
こちらも結論から書くと
こちらも岡三RSSの関数は基本1関数、1つのデータが戻るだけですので、
動作には影響は無いと思われます!!

関数の前後が{}で囲まれている場合、Excelは行列計算を行うのですが、
1関数、1データの場合は答えが変わらないので誤動作はしない気がします・・・(多分

もし気持ち悪いのであれば、F2でセルを編集モードにして、
そのままEnterキーを押すと消えます!!

ちなみに、自分が落としたファイルでは見つけられなかったのですが、
どのシートのどのセルになりますでしょうかー?

2020年10月30日

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

ケン

大野様へ
解答ありがとうございます。早速教えていただいた通りALT+F11を起動し、マクロを見て見ました。Sub PCTimeUpdate() が見えました(ほか3種ありましたが、関係なさそうなのでこれらは無視します)。このマクロには14行の命令が書き込まれていました。結局ポイントは最後の2行と判明しました。すなわち、以下の2行です。
Calculate
Application.OnTime Now + interval / (60 * 24), Procedure:="PCTimeUpdate"

この2行の意味は、以下のようになるかと推察しました。
すなわち、「今からinterval / (60 * 24)後に計算せよ」
従いまして、このサブプログラムの意味は、interval / (60 * 24)毎に計算を繰り返させる。という事になります。
ここでinterval の意味が問題になります。シート「条件注文」のF41には、「0.1分」と書かれています。ということは60秒×0.1=6秒 ということでしょうか? であるのであれば、interval / (60 * 24)=6秒/1440=4ミリ秒ということになり、頻度としては実現不可能に思われます。まず、このあたりを教えていただきたくお願い申し上げます。それから、@と{ }の意味の解説ありがとうございました。まあ気にしないでOKとのことなので今後気にしないことにします。昨日教えていただいた、新たにダウンロードしたファイルでは、この現象は起こっておりません(これが不思議ですが、、)。

2020年10月31日

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

大野 了

ケンさん、こんばんは!!

結論から申しますと、
F41の0.1分は、6秒毎に再計算という意味になります!!

ExcelやVBAで日時を扱う場合、内部では小数点付きの数値として扱っていることは
前回お伝えさせて頂いたと思うのですがー
※整数部:日にち
※小数部:時間

実際の内部の値を細かく説明致しますと・・・

内部の値としては、1日(24時間)を"1"として扱っています。
このため、小数部の値としては・・・
1時間 = 0.04166666666666670 (1 / 24)
1分間 = 0.00069444444444444 (1 / 24 / 60)
1秒間 = 0.00001157407407407 (1 / 24 / 60 / 60)
として、内部では処理されています。

ですので

0.1 / (24 * 60) = 0.00006944444444444
で、6秒となります!!

このことから
Now + interval / (60 * 24)

今の時間に、0.00006944444444444(6秒)を足した時間(すなわち6秒後)に
再計算が掛かるという仕組みになります!!


>昨日教えていただいた、新たにダウンロードしたファイルでは、この現象は起こっておりません(これが不思議ですが、、)。
あら・・・
なんなんでしょうか・・・
またもし発生したらご連絡頂けますと幸いです!!
自分も再度ダウンロードして確認してみます!!

2020年10月31日

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

ケン

画像(エラー画面))1.png (33.5KB)

大野様へ
F41の0.1分=6秒で有ることを理解しました。大変ありがとうございました。
それでは早速ですが、次の質問に移ります。
10月30日に岡三オンライン証券様からご紹介いただきました新たなファイル「ifdoneOCO+時間決済サンプル.xls」をダウンロードし、早速この新ファイルを起動してみました。そうしますと、添付しました画面のようにコンパイルエラーがでました。
これまでは、このエラーを消すため、マクロの最初の行から、6行の頭に‘を付加して、コメント化しておりました。

‘Public Declare PtrSafe Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" ( _
‘ ByVal pszSound As String, _
‘ ByVal hmod As Long, _
‘ ByVal fdwSound As Long _
‘ ) As Long
‘Public Const SND_ASYNC = &H1

そうしますと、エラーが消えて、プログラムが動くので都合が良かったわけですが、、、
しかし、ついに今回、腰を入れて、このエラーをなくすための手段を探しました。
なかなか発見出来なかったのですが、とりあえず Declareのすぐ後にPtrSafeの1単語を挿入しましたところ、エラーが消えることを発見しました。
これで添付しましたエラー画面が出なくなったので、いろいろ試しております。この様な簡単な修正で良かったのかどうか教えていただけますれば有りがたいです。

2020年11月01日

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

大野 了

ケンさん、こんにちは!!

PtrSafeの件ですが、付けて頂く形で大丈夫です!!

Excelには、まったく同じバージョンのExcelでも64bit版と32bit版があり、
使い方はほぼ同じなのですが、
VBAでAPIという特殊な機能を使う場合、
64bit版の時は『Ptrsafe』と、一言付けてあげる必要があります。


サンプルファイルが作られたときは32bitのExcelが主流だったため、
サンプルファイルの記述は、このようになっているものと思われます!!

しかし、最近のExcelは64bit版がインストールされていることも多く、
ケンさんのExcelは64bit版のため、
『PtrSafe』と付けてあげる必要が出てきた感じとなります!!

細かい点をすっ飛ばして、ざざっと説明しただけで
伝わりにくかったら申し訳ありません。

その時は再度返信いただけますと幸いです!!

2020年11月02日

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

ケン

大野様へ
了解です。PtrSafeを付加するだけでOKとのこと。これで安心いたしました。ありがとうございました。
ところで早速ですが、次の質問です。
何回目かのビデオにて、このソフト「ifdoneOCO+時間決済サンプル.xls」には、エントリーするためのイニシャルレンジの幅を可変出来る機能が無いため、本格的実用化のためにはイニシャルレンジの幅を自由に可変出来るようにそのソフトを付加する必要がある。ということでした。そこでシート「条件注文」のA57~F66あたりの領域にイニシャルレンジの可変範囲を制御する機能を埋め込もうとしております。ところが、ソフト全体の構造がよく見えてないせいか、どこあたりにどのように埋め込めば良いかがなかなか見当がつきません。このあたりについて、何かヒントをいただけますれば、非常にありがたいのですが、よろしくお願い申し上げます。

2020年11月02日

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

大野 了

ケンさん、こんにちは!!

ケンさんの言われている、イニシャルレンジを可変に!
と言われるのは、具体的にどのような感じのことを示されていますでしょうか?

イニシャルレンジの時間を可変にされたいという事でしょうか?
それとも
イニシャルレンジの高値安値+αを設定されたいという事でしょうかー?

2020年11月02日

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

ケン

大野様へ
「イニシャルレンジ」の意味の説明が不十分でした。これは、まさに大野さんがおっしゃる「イニシャルレンジの高値安値+αを設定出来る様にしたい」ということです。(イニシャルレンジの時間は手動で可変出来る様になっておりますので、こちらはOKです)
よろしくお願い申し上げます。

2020年11月03日

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

大野 了

サンプル.png (9.6KB)

ケンさん、こんにちは!!

イニシャルレンジの件、了解しましたー!!

結論から書きますと、
簡単なやり方としては、条件注文シートのD13に+αの補正を掛けてあげるのが、
最も簡単なやり方と思われます!!

発注周りの仕組みを観てみたのですが、
イニシャルレンジの高値安値を使用する場合、
イニシャルレンジの時間が過ぎたら、その時間内の高安値で指値発注するだけのようですので、
ここの注文価格(条件注文!D13)を増減させてあげるのが簡単のような気がしましたー

添付しました画像のように
D58に高値の補正額、D59に安値の補正額を入れれるようにして頂いて

D13の計算式を
=IF(OR(F5="N/A",ISERROR(F5),F6="N/A",ISERROR(F6)),0,IF(F13="High",F5,F6))

=IF(OR(F5="N/A",ISERROR(F5),F6="N/A",ISERROR(F6)),0,IF(F13="High",F5+D58,F6-D59))

のように補正額を含んだ計算式に変更すると

発注時の価格だけではなく、
トレイリングストップの価格(D18)、ストップロス(D25)の価格も引きずられて変わりますので、
ここの変更だけで 発注、利確、損切、すべて対応することができます!!

多分、大丈夫だとは思いますが、
休場中でテストを行ったわけではないので、
自己責任でご確認とご使用頂けますと幸いです!!

2020年11月03日

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

ケン

大野様へ
早速のご返事ありがとうございました。すぐに試験してみます。それから、
「ifdoneOCO+時間決済サンプル.xls」には、トレーリングストップの機能は組み込まれていない。と思っておりましたが、いかがでしょうか? D18に書き込まれている価格は、固定利益幅のF17が単純にたしこまれているだけだと思っておりました。
したがいまして、次の質問は、「ifdoneOCO+時間決済サンプル.xls」にトレーリングストップの機能を埋め込みたいのですが、ヒントをいただけますればありがたいです。とするつもりでした!  ということでよろしくご教授お願い申し上げます。

2020年11月03日

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

大野 了

ケンさん、こんにちは!!

OCOのサンプルなので、
さすがにTSもSLも入ってると思われます!!

サンプルをさらっと見た感じ・・・
L列がTS、Q列がSLの処理だと思いますっ!!

2020年11月03日

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

大野 了

ケンさん、ちょいと見てみたんですがー
やっぱり、L列がTS、Q列がSLっぽいです!!

イニシャルレンジの時間が過ぎたら、指値で発注して、
その後、約定したら、L列の設定でTSを掛けて、
もし、TSで約定せずに逆方向に動いて、
損切りに設定された金額まで落ちたら、
Q列でTSの注文を訂正して損切かけてるっぽいです!!

確かにもうちょっとシンプルだとありがたいですねー

2020年11月03日

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

すべての投稿を表示する

to_top
to_top

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

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

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

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

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

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

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