kabucom / kabusapi

kabuステーションAPI ポータル
https://kabucom.github.io/kabusapi/ptal/
MIT License
298 stars 45 forks source link

【質問】requestライブラリを用いた発注に関して #853

Closed riho2020 closed 3 months ago

riho2020 commented 3 months ago

非同期処理から以下のような処理を投げているのですが、エントリーの注文だけが通って、クローズの注文でエラーが帰ってきます。原因を調べたのですが、不明なので教えていただきたいです。

def OrderEntry(symbol,BS,mt):#エントリー発注情報作成関数 global TradePassward Order={"Password": TradePassward, "Symbol": str(symbol),#対象の銘柄 "Exchange": 1,#市場の指定 "SecurityType": 1, "Side": BS,#1:売り、2:買い "CashMargin": 2,#現物:1、新規信用:2、決済:3 "MarginTradeType": 3,#信用取引区分 1:制度信用、2:一般信用(長期)、3:一般信用(デイトレ) "DelivType": 0,#受渡区分 信用の場合:新規建て時>0、決済時>2(現物の場合:買い時>2、売り時>0) "AccountType": 4,#口座種別 2:一般口座、4:特定口座 "Qty": int(mt),#注文数量@100株単位になるように注意 "FrontOrderType": 10,#執行条件 寄り成り前:13、寄り成後:14、引け成前場:15、引け成後場:16 "Price":0, "ExpireDay": 0#執行期限 } return Order

def OrderClose(symbol,BS,mt):#手仕舞い発注情報作成関数 global TradePassward Order={"Password": TradePassward, "Symbol": str(symbol),#対象の銘柄 "Exchange": 1,#市場の指定 "SecurityType": 1, "Side": BS,#1:売り、2:買い "CashMargin": 3,#決済:3 "MarginTradeType": 3,#信用取引区分 1:制度信用、2:一般信用(長期)、3:一般信用(デイトレ) "DelivType": 2,#受渡区分 信用の場合:新規建て時>0、決済時>2(現物の場合:買い時>2、売り時>0) "AccountType": 4,#口座種別 2:一般口座、4:特定口座 "Qty": int(mt),#注文数量 "ClosePositionOrder":0, "FrontOrderType": 10,#執行条件 10:成行 "Price":0, "ExpireDay": 0#執行期限 } return Order

~省略~

async def order_by_dataframe(order_queue): global Token_API global OrderURL global Test_mode

global TimeOutFlg

while True:
    print("注文タスク")
    global TimeOutFlg
    if TimeOutFlg!=0:
        break
    queue_read=await order_queue.get()
    print(queue_read)#送られてきているデータのチェック
    symbol=queue_read["symbol"]
    Mount=queue_read["mount"]
    if queue_read["side"]<0:
        posi=1
    else :
        posi=2
    if queue_read["position"]=="Entry":
        Order=OrderEntry(symbol,posi,Mount)
    elif queue_read["position"]=="Close":
        Order=OrderClose(symbol,posi,Mount)

    if Test_mode==True:#テストモードの実装
        print("Now Testing......")
        print(Order)
    else:
        response=rq.post(OrderURL,json=Order,headers=Token_API)
        if response.status_code == 200:
            json_data=response.json()
            print(f'{symbol}発注')
            print(json_data)
        else:
            print('Order_Error:', response.status_code)
            print(Order)
satosato125 commented 3 months ago

クローズの注文ではどのようなエラーが返却されておりますでしょうか?

riho2020 commented 3 months ago

過去に類似の質問があり、自己解決できました。Sideの指定の問題だったようです。返信ありがとうございました。

satosato125 commented 3 months ago

ご確認ありがとうございます。 解決済みとのことですので、クローズとさせていただきます。