デザイナー
保有情報関数FOPPOSITIONの挙動について悩んでいます。
こんばんは。岡三RSSで自動売買を始めて1年弱経つのですが、いつも岡三RSSの独特の挙動に悩まされその度にメンテナンスを繰り返しています。
今回はちょっと自分ではなかなかアイデアが出てこないので皆様のアイデア・ご意見を伺いたく書き込ませていただきました。
foppositionでは横一列にメモや建玉番号などを表示させております。
保有が1枚の時の挙動は全く問題ないのです。
約定したらそれぞれの項目で「***END***」が一つ下に繰り下がり、メモや建玉番号などが横一列に表示される。決済されると、それらの項目は一斉に***END***となる。
ところが、複数枚保有している時が問題で、約定する瞬間でも決済される瞬間でもそうだと思うのですが、どうやら保有情報が更新される際に一度***END***など全てクリアされてから更新される気がするのです。
memo1 27000 買
memo2 26950 買
***END*** ***END*** ***END***
↓(memo1が決済されると・・・)
クリア クリア クリア
クリア クリア クリア
クリア クリア クリア
↓
memo2 26950 買
***END*** ***END*** ***END***
という感じで一瞬(もしかしたら数秒)クリアの瞬間を挟んでいるのではと考えています。(違っていたらすみません。。)
-----------------
その対策として、シート上で=AND(NOT(EXACT(A2,"")), NOT(EXACT(B2,"")),...)としてこれがTRUEにならないと決済注文や新規注文はしないでねーという対策をしたのですがこれでもうまくいきませんでした。。もしかしてクリアでなく、一瞬0を挟むのでしょうか。
この辺りの挙動についてご存知の方、もしくはこの場合こう対処しているなどの知見をお持ちの方、アドバイスいただけますと助かります。
よろしくお願いいたします。
2021年10月25日
大野 了
デザイナーさん、こんにちは!!
確かに、RSSはEXCELに書き出す仕様のため少し変わった動きをしますね・・・
デザイナーさんのお困りごとが、いまいち理解できておらず、
正確な回答になっているか不安なのですが、
もしこちらは、FOPPOSITIONの情報に対して
正しい条件等を設定しているのに、誤発注や誤判断などを起こしてしまうということでしょうか?
だとすると、もしかしたらFOPPOSITIONの項目間の時差問題が原因かもしれません。
以前いただいた質問への回答のURLで申し訳ございませんが、
内容的にはこちらを見て頂けますと幸いです。
※質問の内容はFCANDLEですが、一つの情報を複数のセル関数で取得する場合は、同様の状況が発生します!!
https://bbs.okasan-online.co.jp/ont/rss/board/?page=1&topic_id=315#comment_1585
これで解決できるといいのですがー
2021年10月25日
デザイナー
大野さん、こんばんは!
質問回答URLありがとうございます。
すみません、状況が正確にお伝えできておりませんでした。もう少し具体的に申し上げますと、困っているのは誤発注です。
memo001の買い注文を例にしますと、memo001の発注の最低条件として、memo001の発注・保有がないこと、つまりFOPPOSITIONでメモを取得し、memo001がないことです。(2重発注を避けています)
他のロジックでエントリがなければ何も問題はないのですが、既にmemo001の建玉を持っていて、別のmemo002のエントリがあるような状況でmemo002が決済された時に誤動作を起こします。
memo002は想定どおり決済されるのですが、決済された瞬間にFOPPOSITIONの情報が変に?なる(一瞬リセットされる?)のか、memo001は本当は保有しているのに、エクセル上では(一瞬かもしれないですが)保有していない判定となって結果としてmemo001が再度エントリしてしまうのです。
状況説明が下手ですみません・・
2021年10月25日
大野 了
関数の動き.png (46.9KB)
デザイナーさん、こんにちは!
なるほどー!!
いろいろと理解できました。
動きとしては、デザイナーさんのご指摘通りの動きをセル関数単位で行っています!!
言葉で説明しずらいので、実際に動かした動きを画像として添付します!!
※汚い画像でごめんなさい・・・
添付画像は、注文情報関数で注文した注文を一件キャンセルした時の動きとなりますが、
取得項目単位で、対象データをクリア後、取得データをExcelに書き込んでいます。
2021年10月26日
大野 了
END行チェックサンプル.xlsx (12.8KB)
こちらに対応するには、
FOPPOSITIONのデータが取得し終わったことを判断する必要があります。
データが取得し終わったことの確認は、
***END***が横一列に並んでいることで判断できるため、
***END***が一列にすべて並んでいる行が発生した時のみ、
様々な判断を行う形に条件を追加させてあげるのがよいと思います。
言葉では難しいので、
こちらもサンプルシートを作成しましたので、ご参考頂けますと幸いです!!
簡単に説明しますと、
F列で その行が『***END***』で埋められているかを確認し、
F1で、一つでも『***END***』が埋められている行があれば、
データの時差がなく正常に取得されたと判定しTrueとなる形になります!!
後は、様々な発注判定のロジックで、F1がTrueの時のみに判断せる
という条件を追加すれば、誤発注は防げると思います!!
2021年10月26日
デザイナー
サンプルシートありがとうございます!!!
なるほど、その手があったかと、ものすごくスッキリいたしました。
本当に助かりました、お忙しい中ご回答いただきありがとうございます。
2021年10月26日
大野 了
デザイナーさん、こんにちは!!
ここら辺一瞬の動きで目に見えないので、大変ですよね・・・
なにはともあれ、お役に立てたようで幸いです!!
また、何かありましたらー!!
2021年10月27日