かしたか
REPAYMENTORDER関数実行時のエラーについて
RSS初心者です。標記の件についてお尋ねしたく投稿いたしました。
個別株の信用取引の自動売買を行いたく、作成したエクセルシートで実際の売買を始めたところ、MARGINORDER関数による発注はできたものの、REPAYMENTORDER関数による反対売買では3回に1回程度はエラーとなってしまい注文が出せないことがあります。
エラーの内容は、「エラー:注文可能な信用建玉がありません。」というものです。(もちろん建玉は保有しています)
シート全体では50銘柄程度をQUOTE関数で常に監視しながら、トリガーがかかったら発注/返済のオーダーを出すようにしています。ちなみに一つの銘柄について、QUOTE、MARGINORDR、REPAYMENTORDERの3つの関数を使用しています。それにORDQUERY関数とPOSITION関数を使用していますので、合計でシートの中に150~160の関数があります。
REPAYMENTORDER関数の第10引数にはPOSITION関数で引っ張ってきた”建単価”を使用しています。以前、この欄に投稿された回答から、POSITION関数の更新が間に合わず発注時点で正しい引数の情報が揃っていないといったことがあるのかとも思っています。
原因と対策についてご存じの方がいらっしゃましたら教えていただけますようお願いいたします。
2021年05月12日
大野 了
かしたかさん、こんにちは!!
3回に1回程度の失敗という事ですが、
失敗した後、もう一度やると正常にREPAYMENTORDERは動きますでしょうかー?
かしたかさんの、ロジックがわからないため明確なことは言えませんが、
もしそうでしたら、多分POSITION関数の項目間の時差問題かもしれません。
以前いただいた質問への回答のURLで申し訳ございませんが、
内容的にはこちらを見て頂けますと幸いです。
https://bbs.okasan-online.co.jp/ont/rss/board/?page=1&topic_id=315#comment_1585
これを解決するに、現在ではCSV項目という項目があり、
"CSV"でPOSITION関数で実行すると、一つのポジションデータがカンマ区切りでずれなく取得することができますので、
このデータを使用して、REPAYMENTORDERを動かしてあげると
多分大丈夫と思います!!
2021年05月12日
かしたか
大野さん
情報をいただきありがとうございます。
早速CSV項目から引っ張った建単価を使って返済注文をするようにワークシートを書き直してみました。
しかし、本日取引を行ってみましたが、やはり昨日と同じエラーが3取引に1回程度出てしまいます。
エラーになった後に発注IDを変えてワークシートから再発注すると通りました。
他に考えられる原因などに心当たりがありましたら、教えていただきますようお願いいたします。
※添付は返済発注の例を示したものです。
2021年05月13日
RSSユーザー
REPAYMENTORDER関数.xlsx (13.0KB)
2021年05月13日
かしたか
添付ファイルは上記のRSSユーザーからのものです。
失礼いたしました。
2021年05月13日
大野 了
かしたかさん、こんにちは!!
申し訳ありません、一点確認させてください!!
こちらのB4やL4は具体的にどのように数値を設定されておりますでしょうか?
多分、ポジション関数でCSVを使って読まれてると思うのですが、
計算式が入っていなかったため、細かいことがわからず・・・
2021年05月13日
かしたか
大野さん、こんにちは!
失礼しました。各引数は以下のように持ってきています。
B4(第1引数、銘柄コード):このセルに最初から銘柄を入れてあります。
L4(第10引数、建単価):ポジション関数でCSVを使い、戻り値の中から建単価を抜き出して、その値をL4に入れています。
M4(第11引数、建年月日):TODAY()関数を入れています。(取引はすべて当日中に決済します。)
Q4 (第15引数、発注ID):銘柄コードにそくしたIDをつくる式を入れてあります。
他の引数:直接各セルに書き込んであります。
尚、エラーが出た場合は、発注IDを変えて再度発注するようにワークシートを少し書き換えたところ、遅れがでるものの発注はできるようになりました。(応急処置ですが、、)
2021年05月13日
大野 了
かしたかさん、こんにちは
返信遅くなりました。
なにはともあれ発注できるようになってよかったです。
なるほどー
とすると、一つの決済をする上でポジション関数から取得される項目は複数は無く、
建単価のみを引いているという事ですね!!
ちなみに、対象の建単価を探し出されていますでしょうか?
多分、その探されている部分で以前リンクを連絡させて頂きました
項目間の時差問題が発生していて、そのポジションではない建単価をセットしてしまっているものだと思われます!!
2021年05月14日
かしたか
大野さん
内容が同じであれば(銘柄コードや建日など)他のセルにある値を持ってきても良いのかと思っていました。
ポジション関数で所得できる項目はすべて使って明日試してみます。
どうもありがとうございます。
2021年05月16日
大野 了
かしたかさん、こんにちは!!
そうですねー
複数ポジションを持っている場合は、
その決済したい建玉の銘柄コード、建日、建単価を持ってきてあげる必要があります。
デイトレの場合、銘柄コード、建日は同じになるので固定値で大丈夫と思いますが、
建単価は、各々のポジションで異なることもある可能性があるので、
そのポジションの建単価を持ってきてあげる必要があります!!
2021年05月16日