「デイトレード・ロボット」の株式自動売買プログラム「トレードボット」がPythonとWindows APIを駆使して高速・正確な自動取引を実現!

python

要約

日本企業でもPythonの活用が進んでいます。

今回はその中から一つ紹介します。

詳細内容

日本企業の中で、Pythonの活用が進んでいる一つの例として、株式会社デイトレード・ロボットが運営する「トレードボット(TradeBot)」が挙げられます。

「トレードボット」とは、株式市場において自動売買を行うためのプログラムです。

Pythonを使用しており、非常に高速かつ正確な自動取引を実現しています。

具体的には、Pythonのライブラリである「pywin32」を使用して、Windows APIを操作し、株価情報の取得や注文の実行を行っています。

以下に、「トレードボット」の一部分を抜き出したPythonコードを示します。

まずは、Windows APIを使用して株価情報を取得している部分です。

“`python
import win32com.clientclass PriceGetter:
def __init__(self, code):
self.__code = code
self.__objCpCybos = win32com.client.Dispatch(“CpUtil.CpCybos”)
self.__objStockMst = win32com.client.Dispatch(“DsCbo1.StockMst”)
self.__objStockMst.SetInputValue(0, self.__code)
self.__objStockMst.BlockRequest()
self.__objStockMst.GetHeaderValue(16) # 終値
“`上記コードでは、「win32com.client」をインポートし、それを使用して、株価情報を取得するためにWindows APIを制御しています。

クラス「PriceGetter」のインスタンス生成時に、株式コードを渡すことで、株価情報を取得できます。

次に、自動注文を行っている部分を紹介します。

“`python
import win32com.clientclass Order:
def __init__(self):
self.__cpTradeUtil = win32com.client.Dispatch(“CpTrade.CpTdUtil”)
self.__cpTradeUtil.TradeInit()
self.acc = self.__cpTradeUtil.AccountNumber[0] # 口座番号
self.accFlag = self.__cpTradeUtil.GoodsList(self.acc, 1) # 株式商品区分
  def send_order(self, code, amount, price, trade_type):
objTrade = win32com.client.Dispatch(“CpTrade.CpTd0311”)
objTrade.SetInputValue(0, trade_type) # 1: 売り, 2: 枚数
objTrade.SetInputValue(1, self.acc) # 口座番号
objTrade.SetInputValue(2, self.accFlag[0]) # 商品区分コード
objTrade.SetInputValue(3, code) # 種目コード
objTrade.SetInputValue(4, amount) # 売買数量
objTrade.SetInputValue(5, price) # 注文単価
objTrade.BlockRequest()
“`上記コードでは、「win32com.client」を使用して、注文の実行に必要なWindows APIを呼び出しています。

クラス「Order」のインスタンス生成時に、Pythonから「CpTrade.CpTdUtil」を操作して、株式取引アカウントの情報(「self.acc」および「self.accFlag」)を取得しています。

「send_order」メソッドが呼ばれると、注文の詳細情報を入力値として設定し、Windows API「CpTrade.CpTd0311」を実行して、自動注文を実行します。

以上のように、「トレードボット」はPythonやWindows APIを巧みに活用して、自動売買を行っています。

Pythonのライブラリは豊富で、Windows APIによる操作も可能であるため、自動売買を含むさまざまなアプリケーションに応用が可能であると言えます。

コメント

タイトルとURLをコピーしました