Automated Trading Development with Python, Kiwoom Securities API, Sign Up for Paper Trading

This article will detail how to develop an automated trading system using Python and how to use the Kiwoom Securities API. It will also include the process of signing up for simulated trading, providing a way to safely test the developed program before investing real money.

1. What is Automated Trading?

Automated trading (Algorithmic Trading) refers to a system where a program automatically executes trades according to a specific algorithm. This allows for faster and more accurate trading, eliminating emotional judgment.

2. What is the Kiwoom Securities API?

The Kiwoom Securities API is a program interface provided by Kiwoom Securities that allows investors to directly trade stocks through their own programs. The API enables easy access to real-time pricing information, order entry, execution confirmation, and more.

2.1 Advantages of the API

  • Real-time data provision
  • Automation of orders and trades programmatically
  • Implementation of various strategies

2.2 Disadvantages of the API

  • Requires a thorough understanding and practice
  • Need to ensure system stability and reliability

3. How to Sign Up for Simulated Trading

Simulated trading is a system that allows you to experience investing under the same conditions as real trading. Open a simulated trading account provided by Kiwoom Securities and try it for free.

3.1 How to Open a Simulated Trading Account

  1. Visit the Kiwoom Securities website and complete the registration process.
  2. After logging in, select the ‘Simulated Trading’ menu.
  3. Proceed with the application for opening a simulated trading account.
  4. Once the application is completed, you will receive your account number and password.

4. Installing the Kiwoom Securities API

Next, you need to install the necessary software to use the Kiwoom Securities API as follows.

4.1 Prerequisites

  • Install Kiwoom Securities OpenAPI+
  • Install Python (recommended version: 3.8 or higher)
  • Python modules: pywin32, numpy, pandas, etc.

4.2 Installing Kiwoom Securities OpenAPI+

The Kiwoom Securities OpenAPI+ can be downloaded from Kiwoom Securities, and after installation, you need to log in to configure your settings. After installation, you must activate the ‘Switch to Simulated Trading’ checkbox in the ‘API Settings’.

5. Writing an Automated Trading Program in Python

Now, let’s create an automated trading program in Python. Below is an example code for a basic trading system.

5.1 Basic Code Structure

import sys
import time
import win32com.client

class AutoTrade:
    def __init__(self):
        self.api = win32com.client.Dispatch("KHOPENAPI.KHOpenAPICtrl.1")
        self.login()

    def login(self):
        # Login
        self.api.CommConnect()
        print("Login completed")

    def buy(self, code, qty):
        # Buy function
        self.api.SendOrder("buyOrder", "0101", self.api.GetAccountList(0), 1, code, qty, 0, "03", "")

    def sell(self, code, qty):
        # Sell function
        self.api.SendOrder("sellOrder", "0101", self.api.GetAccountList(0), 2, code, qty, 0, "03", "")

    def check_balance(self):
        # Check balance
        balance = self.api.GetAccInfo(1)
        print("Current balance:", balance)

if __name__ == "__main__":
    trader = AutoTrade()
    trader.check_balance()
    trader.buy("005930", 1)  # Buy Samsung Electronics
    time.sleep(1)
    trader.sell("005930", 1)  # Sell Samsung Electronics

5.2 Code Explanation

The above code demonstrates connecting to the Kiwoom Securities API through the AutoTrade class and trading stocks using the buy and sell functions. It also includes a balance-checking feature.

6. Implementing Strategies

The core of an automated trading program is the investment strategy. Let’s implement a simple moving average crossover strategy.

6.1 Implementing the Moving Average Crossover Strategy

import pandas as pd

class MovingAverageStrategy:
    def __init__(self, trader):
        self.trader = trader

    def execute(self, code):
        data = self.get_historical_data(code)
        data['SMA20'] = data['close'].rolling(window=20).mean()
        data['SMA50'] = data['close'].rolling(window=50).mean()

        # Generate trading signals
        if data['SMA20'].iloc[-1] > data['SMA50'].iloc[-1]:
            self.trader.buy(code, 1)
        elif data['SMA20'].iloc[-1] < data['SMA50'].iloc[-1]:
            self.trader.sell(code, 1)

    def get_historical_data(self, code):
        # Collect historical data (example)
        # Implement actual data collection logic
        return pd.DataFrame()  # Placeholder

if __name__ == "__main__":
    trader = AutoTrade()
    strategy = MovingAverageStrategy(trader)
    strategy.execute("005930")  # Samsung Electronics

6.2 Strategy Explanation

The moving average strategy above generates trading signals by comparing the 20-day and 50-day simple moving averages (SMA). A buy signal occurs when the 20-day SMA crosses above the 50-day SMA, and a sell signal occurs when it crosses below.

7. Analyzing Automated Trading Performance

Automated trading systems should continuously analyze and improve performance. The following elements should be included in performance analysis:

7.1 Performance Indicators

  • Total return
  • Maximum drawdown
  • Sharpe ratio

7.2 Recording Results

Record trading results for analysis. Trading results can be saved in formats such as CSV files.

8. Conclusion

In this article, we explored automated trading using Python, how to use the Kiwoom Securities API, and how to sign up for simulated trading. This enables beginners to easily develop automated trading systems and test them in an environment similar to real trading. Continue to research and develop various strategies!