전체 글257 [해외주식 자동매매] 3. IBKR 트레이딩 시스템 개발 일지 1. IB Gateway 연결 문제 해결connect() → run() 순서가 뒤바뀌어 nextValidId 콜백이 호출되지 않던 문제. 연결 먼저, 그 다음 메시지 루프 시작하도록 수정.2. 백필 로직 개선문제: 마지막 데이터 ~ 현재까지 받아와야 하는데 하루치만 반복 요청해결: endDateTime을 현재 시각으로, duration을 갭 크기에 맞게 동적 계산if gap_days 3. 백필 순서 수정문제: 과거 확장(deep_backfill)이 최신화보다 먼저 실행되어 2020년 데이터 요청해결: 최신화 로직을 먼저 체크하도록 순서 변경4. 연속 백필 구현문제: 백필 1회만 실행 후 바로 live mode 전환해결: historicalDataEnd에서 같은 심볼로 다음 백필 재시도, None 반환 시.. 2025. 11. 22. [해외주식 자동매매] 2. IBKR 데이터 수집 및 거래 준비 1. 프로그램 개발 예상 순서데이터 수집분석 및 전략 생성백테스트보완 후 다시 백테스트반복실전2. 데이터 수집하는 방법은 2가지TWS (Trader Workstation)UI가 있는 프로그램을 항상 켜 놓아야 작동한다.하루에 한번 시스템 점검을 하는 듯, 다음날 보면 프로그램이 꺼져있다.IB GatewayUI가 없다. Headless.시스템 점검과 무관하게 24/7 작동 및 사용할 수 있다.https://www.interactivebrokers.com/campus/ibkr-api-page/twsapi-doc/#canadian-trading TWS API Documentation | IBKR Campus USTrader Workstation (TWS) API components are aimed at ex.. 2025. 11. 21. [해외주식 자동매매] 1. IBKR 시작하기 1. 최소 금액실제 트레이딩을 하기 위해서는 IBKR 계좌에 최소 $500를 입금해야한다.https://www.interactivebrokers.com/campus/ibkr-api-page/market-data-subscriptions/#market-data-requirements Market Data Subscriptions | IBKR Campus USWhile working with Interactive Brokers’ APIs, most* securities require a Level 1, top of book, market data subscription to receive market data.www.interactivebrokers.com 2. Paper Trading가상 계좌에서 가상 .. 2025. 11. 21. [C#] string.IsNullOrEmpty, string.IsNullOrWhiteSpace 차이 🔹 string.IsNullOrWhiteSpace() vs string.IsNullOrEmpty() 차이 두 메서드는 모두 문자열이 비어 있는지 확인하는 용도이지만, 처리 방식에 차이가 있습니다. ✅ string.IsNullOrEmpty(string? value) ✔️ null이거나 ""(빈 문자열)인지 확인✔️ 공백(스페이스, 탭, 개행 \n)은 체크하지 않음 Console.WriteLine(string.IsNullOrEmpty(null)); // ✅ TrueConsole.WriteLine(string.IsNullOrEmpty("")); // ✅ TrueConsole.WriteLine(string.IsNullOrEmpty(" ")); // ❌ False (공백은 빈 문.. 2025. 2. 11. [C#] CancellationToken 사용법 시작CancellationToken이라는 것을 알고 있었지만, 어떻게 작동하는지는 모르고 있었다.왜냐하면 회사의 코드에는 CancellationToken만 적혀있었기 때문에 무슨 의도인지는 알았지만 도대체 어떻게 동작하는지,감이 오지 않았다. 이런 코드로 있었기 때문,CancellationToken cancellationToken = new CancellationToken();var response = await ExecuteAsync(async token => await httpClient.PostAsync(url, content, token), cancellationToken); 이러면 프로그램이 어떻게 알고 취소를 하는거지? 싶었다. 그리고 알아본 바, 공식 문서https://learn.micros.. 2024. 7. 11. [C#, Dart] Dart와 C#에서의 변경 불가능한 변수: `final`과 `readonly` 비교 Dart에서 final 키워드의 의미와 사용법Dart에서 final 키워드는 변수를 한 번만 할당할 수 있도록 제한하는 데 사용됩니다. final로 선언된 변수는 단 한 번 초기화될 수 있으며, 초기화된 후에는 값이 변경될 수 없습니다. 이는 주로 상수 또는 변경되지 않아야 하는 값을 정의할 때 사용됩니다. 다음은 final 키워드의 주요 특징과 사용 예입니다:주요 특징초기화 후 변경 불가: final 변수는 한 번 초기화된 후 값을 변경할 수 없습니다.런타임 상수: final 변수는 컴파일 시점이 아닌 런타임 시점에서 값을 할당할 수 있습니다.지연 초기화: final 변수는 선언 시 즉시 초기화하지 않고 나중에 한 번만 초기화할 수 있습니다.사용 예void main() { final String na.. 2024. 7. 1. [C#] 형 변환에 대하여 (for string 그리고 메모리 관점) 들어가며 C#을 사용하며 우리는 많은 형변환을 하게 된다. 그래서 이런 저런 형변환 방법을 사용하게 되는데, string을 예로 들자면 아래 3개를 사용한다고 할 수 있겠다. (string) 캐스팅 .ToString() 메서드 as 연산자 왜 이렇게 다양한 방법이 존재할까? 궁금했다. 그리고 이번에 회사에서 리팩토링을 진행하며, 위 3가지 방법 중 1, 2번을 사용했는데 사실 모두 .ToString()만 사용했다. (string)이 사용된 것을 보기만 하고, 심지어 (string)을 .ToString()으로 바꿔버리기도 했다. 이유는 잘 모르는 상태에서, 회사 분의 말씀을 듣고 저게 더 좋은 방법이라고 생각했기 때문... 하지만 이번 조사에서 각각의 차이점을 알게 되었고, 정리해보고자 한다. 각각의 장점.. 2024. 4. 17. [Python] URL 이어붙이는 최적의 방법 개요 각 프로그래밍 언어에서 다른 리소스의 데이터를 불러올 때, URL을 사용하게 되는데 이때 변수가 여러개 들어가고, 매번 달라져야 한다면, URL string을 매번 고치는 것이 아니라 이쁘게 만들어서 보기 좋게 만드는 것이 수정하기에도 좋을 것이다. 그리고 나중에 다른 개발자가 수정하게 되더라도, 잘 짜여진 코드를 보고 쉽게 수정할 수 있다. 코드 from urllib.parse import urlencode # Your base URL base_url = "http://example.com" # Parameters to append params = { "param1": "value1", "param2": "value2" } # Encode parameters encoded_params = urle.. 2024. 3. 29. [C#] HttpClient, IHttpClientFactory 차이와 올바른 사용법 최근 인터페이스 사용이 잦아지며, 인터페이스가 아닌 코드를 인터페이스화 하는 작업을 하고 있다. 그러다 가끔 HttpClient와 IHttpClientFactory 처럼, 사용되는 변수와 들어가는 인스턴스의 형식이 다른걸 발견하게 된다. 궁금해서 왜 그런지 찾아보았는데, 결국 들어가는건 같은 형이 되었기 때문에 상관 없었지만, 조금 더 알아보았다. 그리고 차이를 찾았는데, 우리 회사에 있는 코드는 아래와 같다. 현재 사용중인 코드 public class MyService { private readonly HttpClient _httpClient; public MyService(IHttpClientFactory httpClientFactory) { _httpClient = httpClientFactory... 2024. 3. 25. 이전 1 2 3 4 ··· 29 다음