인프런 커뮤니티 질문&답변

jjack님의 프로필 이미지

작성한 질문수

(2024년) 파이썬 알고리즘 트레이딩 파트2: Interactive Brokers API를 활용한 실시간 알고리즘 트레이딩

거래 종목 업데이트

open position 설정

24.10.24 14:59 작성

·

16

0

거래 종목 업데이트에서, df_current_positions 가 비어있습니다.

open position 설정을 따로 해두지 않아서 그런 것 같은데, 설정하는 방법을 알 수 있을까요? (part1을 듣지 않고 수강중입니다)

답변 2

0

다니엘님의 프로필 이미지
다니엘
지식공유자

2024. 10. 26. 08:11

안녕하세요, 수업에 열심히 참여해 주셔서 감사합니다. 그리고 답변이 지연되어서 죄송합니다.

가족 여행 중에 있는데 현재 참여 중인 프로젝트도 있어서 평소보다 답변이 지연이 되었습니다. 기회가 된다면 jjack 님도 디지털 노마드의 삶을 추천 드립니다. 충분히 좋거든요..

 

본론으로 들어오면 질문하신 내용은 사실 간단한 것 같은데요. 현재의 포트폴리오에 아무런 보유도 없는 상태이며 코드를 실행하는 데 전혀 문제가 없습니다. 모두의 포트폴리오는 당연히 다르게 되겠죠?

 

아래의 코드 내용에서 보다 명확할 거 같습니다.

 

positions = ib.positions()
df_current_positions = pd.DataFrame(positions)
stocks_open = []
if len(df_current_positions) == 0:
    print("No open positions")
else:
    df_current_positions['symbol'] = df_current_positions['contract'].apply(lambda x: x.symbol)
    stocks_open = df_current_positions['symbol'].to_list()

stocks_open

코드를 확인하시면 현재 보유 중인 포트폴리오가 없어도 이후의 코드는 실행되게 되어 있습니다. 결국 jjack 님의 경우에는 df_current_positions의 length가 0인 경우에 해당되겠네요.

 

그럼 이후의 학습에서도 화이팅하세요. 감사합니다.

다니엘 드림

0

인프런 AI 인턴님의 프로필 이미지

2024. 10. 24. 15:01

안녕하세요, 인프런 AI 인턴입니다.

jjack님, open position 설정과 관련된 문제에 대해 문의 주셨네요. 이런 상황은 보통 거래 계좌의 포지션 데이터를 잘못 불러오거나, 현재 포지션이 없는 상태일 때 발생할 수 있습니다. 특히 part1 강의를 수강하지 않으셨기 때문에, 설정과 데이터 불러오는 방식에 대한 이해가 부족할 수 있습니다.

우선, 일반적인 설정 방법을 간단히 안내 드리겠습니다:

  1. 데이터 불러오기: Interactive Brokers API를 사용할 때, 계좌의 현재 포지션을 불러오기 위해 reqPositions 메서드를 사용합니다. 이것이 데이터프레임 내 df_current_positions를 채우는 주요 방법입니다.

  2. 포지션 데이터 확인: 포지션 데이터를 제대로 불러오는지 확인하기 위해서는 API 응답을 잘 받고 있는지, 그리고 데이터프레임에 제대로 반영되고 있는지 확인해야 합니다.

아래의 링크에서 유사한 질문들을 통해 더 자료를 얻으실 수 있습니다:

해당 링크들은 IBKR 환경 설정 및 API와 관련된 문제를 해결할 힌트를 줄 수 있을 것입니다.

혹시 강의 내용과 다르게 개인 환경에서 오류가 발생하는 경우, IBKR의 버전 차이 등에 의해 설정 옵션이 달라질 수 있으니, API 문서를 참고하여 부가적인 설정을 확인하는 것이 좋습니다.

저는 질문자님의 이해를 돕고자, 지식공유자님의 기존 답변을 참고하여 관련된 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

jjack님의 프로필 이미지

작성한 질문수

질문하기