黒犬
発注ディレイ方法について
いつもお世話になります。
日経先物miniデイトレです。
複数の発注ルートがありますが、フラグの成立やオーダーにはCANDLE情報を契機としています。使用しているCANDLEは15分、60分です。発注ルートの競合時の優先や関数で取得する情報の精度の問題を解決する方法として発注ディレイを行っています。その為に5分足のcandleで時刻を取得して、フラグ成立後5分後に発注しています。candle!$M$4=(candle!$C$4+TIME(0,5,0))
M4が5分足、C4が15分足です。
10:00+5分=10:05という意味ですが、時々発注が出ていない事があり、簡単なIF文で検証するとそのときには=が成立していないようです。
ディレイ方法として間違っていますでしょうか?
ディレイは5分である必要はなく5秒でもいいのですが・・
ご教授宜しくお願い致します。
2020年07月30日
大野 了
黒犬さんこんにちは!!
こちらは・・・
シグナルは15分足で判断するんだけど、関数の時差の問題のために
5分後に発注をするようにする。
その判断のために5分足のCANDLEで、5分後というの判断してる
という事になりますでしょうか?
IF文を試しにやってみたのですが、
正常に足ができている場合は、
5分足と15分足で +TIME(0,5,0)で判断でFalseになることはありませんでした。
=が成立しない場合の条件を詳しく教えて頂けますと幸いです。
IF文関係が間違いがない場合、
現状のロジックだけで考えられる点ですが、
シグナルが出て5分後の取引がたまたま5分間なかった場合は、
5分後の足ができませんので、発注がかからなくなります。
夜間ならともかく、225miniで日中に取引が5分間1度もないというのはちょっと考えつらいですね・・・
IFが成立しないとのことですが、どのような状況になりますでしょうか?
また、別の方法でディレイさせる場合ですが、
FQUOTEの現在値時刻を使用するというのはいかがでしょうか?
この関数だと取引がある秒単位で更新されるので、もっときめ細やかな制御ができると思います。
5秒単位とかの判断も可能になります!!!
2020年07月30日
RSSユーザー
大野様
いつも有難うございます。
FQUOTEは使っていますが、現在値時刻は更新されなかったのでExcelのNow関数と同じと思っていました。テストした時が値動きが無い時間帯だったかDow先物だったかでしょう。
こちらに切り替えます。有難うございました。
TIME関数の不一致の条件は分かりません。ナイトしか検証出来ませんが、ナイトでも足が出ないという事は無いですね。Dowはよく飛んでいますが。
発注条件が整っている筈が発注されていない。検証するとcandle!$M$4=($C$4+TIME(0,5,0)が成立しない。
念のため空きセルに=if(m4=C4+time(0,5,0),1,0)を入れcandleの時刻を戻して確認しました。セルは0でした。昨晩の21:35の時に発生しています。M4は21:35、C4は21:30です。他の時間で数回確認しましたがセルは1でした。因みにC4とM5(21:30)では1でした。
過去にも同じ事が何度かありましたが、頻度は少ないので諦めていました。
2020年07月30日
大野 了
黒犬さん!!
原因がわかりましたー
時間がわかったので、実際のデータ(Excelの時間のシリアル値)を調べてみたのですが、
時間の加算処理の小数点の丸め処理が原因で、IFが成立しなくなっています。
Excelでは時間をシリアル値というもので内部で管理しています。
0.895833333333333(21:30のシリアル値)
0.00347222222222222(5分のシリアル値)
0.899305555555555(21:35のシリアル値)
0.899305555555556(21:30 + 5分のシリアル値)
+で時間が加算されたときに、小数点第15位で四捨五入されており
0.899305555555555 と 0.899305555555556で
小さな値がずれており、IF文が成立しなくなっています。
M4=TIME(HOUR(C4),MINUTE(C4)+5,0)
として、5分加算した時間を作り出し、
もう一度TIMEでシリアル値を作ると丸め処理が入らず大丈夫だと思います!!
+で時間を加算することって、
確かに通常はやらないのですが、
感覚的には大丈夫な処理と今まで思っていました。
きっかけをありがとうございましたー!!
2020年07月30日
黒犬
大野様
いつも有難うございます。
TIME関数の使い方が悪かったのですね。
確かにhour、minute、secondを引数で使うと関数マニュアルにはあったのですが、省略しても出来ていたので・・
毎日10時5分に発注するのですが、発注されていない日も有りました。M4=time(10,5,0)加算はしていないのですが同じ原因ですかね。
TIME関数は取引時間帯指定、発注フラグや発注時刻、取消時刻、取消後再発注時刻、決済可能時刻、決済後再発注時刻・・沢山使っています。
FQUOTEで現在時刻を取得する事にしますので5分足は使わなくなります。等式にする必要はないかもしれませんが時間の加算は行います。
有難うございました。
2020年07月31日
大野 了
黒犬さん
自分も+で時間を加算するやり方でも問題ないだろーと
昨日まで思ってたのでいいきっかけでしたー
ありがとうございました。
>M4=time(10,5,0)
こちらは、M4が時間とのことですので、時間の処理的には必ずIFが成立するはずですので
発注が掛からなかった時というのは、時間以外の別要因かと思われます!!
>FQUOTEで現在時刻を取得する事
あっ!!
黒犬さんは夜間もされるんですよね・・・
FQUOTEは『現在時刻』ではなく『現在値時刻』となり、リアルタイムな時間ではありません。
夜間だとminiでも何分も更新されないことが多々あると思われます。
もし夜間まで考えてディレイさせるとすると、以下の2点かと思われまーす。
1.NOW関数でリアルタイムな時間を表示させて、その時間を基準とする
メリットとしては1分間隔になってしまいますが、VBAを使わなくても
Excelに約定の有無関係なしにリアルな実時間を表示させることができます。
ですので、約定の有無に左右されないディレイの設定が可能となります。
しかし、NOW関数だけでは画面に描画がかかった時しか現在時間が更新されないため
VBAを使用しない場合、特殊な設定をExcelに行う必要があります。
以前、同様の質問を受けたことがありますので、そのリンクで大変申し訳ないのですが
ご参考頂けますと幸いです!!
2.判定を『=』ではなく『>』にする
M4=TIME(HOUR(C4),MINUTE(C4)+5,0)
の判断ですと、その時間の出来高が無かった場合、発注がかかりませんので、
FQUOTE(現在値時刻)>TIME(HOUR(C4),MINUTE(C4),30)
とすると、15分足の時刻 + 30秒以降で、最初に出来高が出来た瞬間に発注がかかると思います。
デメリットとしては、シグナルが経ってから、15分以上市場で約定がない場合、
次の15分足が出来てしまう可能性がありますので、FCANDLEの動く順序次第では
これまた発注が掛からない可能性があります。
いろいろなところで使われているとのことですので、
おすすめはVBAで現在時刻を表示させそれを基準にする
もし、VBAを使用したくない場合は、
若干めんどうですが、1分おきにリアルな時間を表示させれるようにして、
それを基準にする
というのが、変な動きとか制約に惑わされないので、安定するかと思われます!!
2020年07月31日
大野 了
あっ・・・
肝心のURLを張りされてました・・・
https://bbs.okasan-online.co.jp/ont/rss/board/?page=2 &topic_id=336#comment_1759
↑のURLはここの掲示板の仕様で記号が一部使えないので、『&』が全角になっています!!
2020年07月31日
黒犬
大野様
ご丁寧にご指摘頂き、有難うございます。
理解出来ました。
TIME関数は沢山使ってますが、シビアな時間が必要ない所は不等式を使っているので問題はなさそうです。
等式を使っているのはフラグ成立の所です。不等式にするとフラグが立ちっぱなしで怖くて・・(5分足のシリアル値を丸めてIDにしています)オーダー文でINDEXとMATCHを使ったナンピン制御をしていますが一度だけですが制御が効かない事が有ったので・・等式にすると5分でフラグが消えるので保険になります。
キャンドル情報を契機とするルートは15分足と60分足です。ですから直近の15分足の完成時刻(C4)が基準になると思います。
C4に1分なり5分を加算した時間と現在値時刻。或いは現在時刻を照合する事になると思うのですが、等式に拘ると難しいように思えます。シリアル値にして数値を丸める関数を使うという方法もあるかと・・不等式にすれば簡単なんですがね・・少し考えてみます。
未熟物ですが、殆ど思いどうりに動かす事が出来ています。
大野様のおかげです。本当に感謝、感謝です。
P.S.お願いがあります。NOW関数の1分更新、こんな事も出来るのですね。驚きです。
メインのシートの空きセルを使ったので1行目に「列」が挿入され行がズレてしまいました。それに気が付く前に上書き保存してしまいました。
これ致命的なので元に戻したいのですが・・
2020年08月01日
黒犬
連投で失礼します。
メインシートの行挿入の件、大丈夫そうです。
他のシートで参照しているのでセル番号が変わって大変だと焦りましたが、連動しているみたいで・・
こんな事も知らないんです。
2020年08月01日
大野 了
黒犬さん
少しでもお役に立ててるようで、よかったです♪
ファイルも大丈夫だったと言う事でよかったです!!
セルがずれると焦りますよね・・・
自分も昔、何度かやらかしました(笑
NOW関数は再計算が掛からないと、値が更新されないのですが、
Excelには外部のデータをセルに取り込む機能があって、
それ使うと再計算が掛かるようになるので、
その外部取り込み機能をカラ回しさせると、定期的にシートが更新されます。
だいぶ無理やりですが・・・(笑
>等式にすると5分でフラグが消えるので保険になります。
なるほど!!
確かに不等号だけだと、発注し続ける危険性もありますね。
黒犬さんの言われる通り使い方次第ですね。
なにはともあれ、お役に立てたようでよかったです。
2020年08月01日