ChatGPT를 통해 cBot을 만드는 방법
생성형 AI가 부상하면서 단 한 줄의 코드도 작성하지 않고 cBot을 만드는 것은 더 이상 꿈이 아니라 현실입니다. 이 글과 해당 동영상에서는 ChatGPT를 사용하여 cBot을 만드는 방법을 보여드리겠습니다. 또한 ChatGPT가 제공한 cBot 코드를 평가하고 AI 생성 봇이 단 몇 분 만에 작동할 수 있도록 확인하는 방법을 시연할 것입니다.
올바른 프롬프트 작성하기
이 동영상의 목적을 위해 GPT-3.5 모델을 사용할 것입니다. 이 모델은 모든 사람에게 무료이며, 최신 GPT 모델에 비해 기능이 부족하지만 훌륭한 결과를 생성합니다.
ChatGPT로 훌륭한 cBot을 만드는 첫 번째 단계는 올바른 프롬프트를 입력하는 것입니다. 좋은 프롬프트를 작성하기 위한 몇 가지 규칙은 다음과 같습니다:
1. ChatGPT가 전문 cBot 개발자 역할을 하도록 장려하세요.
당신은 cTrader의 자격을 갖춘 알고리즘 개발자입니다. 게임을 해봅시다... 또는 "cTrader용 cBot의 전문 개발자 역할을 해보세요..."와 같은 초기 프롬프트를 입력하여 이를 달성할 수 있습니다.
2. 구체적으로 작성하세요.
ChatGPT에게 제공하는 세부 정보가 많을수록 결과가 좋아집니다. 수익성 있는 cBot을 만들어주세요...와 같은 프롬프트는 AI에게 많은 혼란을 초래할 수 있습니다.
cBot의 각 부분을 가능한 한 정확하게 지정하는 것을 권장합니다. 어떤 매개변수가 있어야 하는지, 어떤 조건에 반응해야 하는지, 어떤 거래 작업을 수행해야 하는지 고려하세요. 맞춤형 트레이딩 패널을 만드는 경우, 어떤 UI 요소가 있어야 하고 어디에 배치되어야 하는지 고려하세요.
3. 예의 바르고 존중하는 태도를 유지하세요.
이것은 놀라울 수 있지만, ChatGPT에게 예의를 갖추는 것이 실제로 출력 품질을 향상시킨다는 연구 결과가 있습니다. 저는 ...해 주시면 감사하겠습니다, "...해 주시면 좋겠습니다"와 같은 문구를 포함하세요.
색상 트레이딩 cBot 만들기
우선, 우리는 각 바(Bar)가 열릴 때마다 새로운 시장가 주문을 내는 간단한 cBot을 만들고자 합니다. 주문의 방향은 이전 바가 녹색인지 빨간색인지에 따라 결정됩니다. 바가 빨간색이면 매도 주문을 내고, 녹색이면 매수 주문을 내고자 합니다.
다음은 올바른 프롬프트를 제공하여 이를 구현하는 방법입니다.
- 시작 문장: "cTrader용 cBot 전문 개발자로 행동하며, 매우 간단하고 이해하기 쉬운 코드를 작성해 주세요."
- 특정 요구 사항: "cBot을 생성하세요. 모든 바에서 보호 메커니즘이 없는 새로운 시장가 주문을 내야 합니다. 주문 거래량(단위)은 사용자 정의 가능한 매개변수여야 합니다. 이전 바가 녹색이면 매수 주문을 내야 합니다. 이전 바가 빨간색이면 매도 주문을 내야 합니다."
- 예의: "이 작업을 해주시면 정말 감사하겠습니다, 감사합니다!"
ChatGPT가 출력하는 정확한 코드는 다를 수 있지만, 어떤 경우에도 이를 코드 편집기 창에 복사하여 붙여넣어 정확한지 확인하고 원하는 로직을 구현했는지 확인할 수 있습니다.
일반적으로 수정이 필요한 몇 가지 비중요한 오류만 있습니다. 우리의 경우, ExecuteMarketOrder 메서드에서 Symbol 객체를 SymbolName 문자열로 변경하는 것만 수정하면 되었습니다. 이 모든 작업을 마친 후 얻은 최종 코드는 다음과 같습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | |
평소처럼, 우리는 봇을 저장하고 빌드합니다. Trade 애플리케이션에서 봇 인스턴스를 차트에 첨부하고 의도한 대로 작동하는지 확인합니다. 봇은 완벽하게 작동하며 과거 바의 색상에 반응하여 새로운 주문을 냅니다. 주문 거래량도 사용자 정의 가능한 매개변수입니다.
참고
참고로, 우리는 ChatGPT가 출력한 코드를 읽을 필요조차 없었습니다. 단순히 코드 편집기에 표시된 모든 경고를 수정한 후 봇을 실행했습니다.
트렌드 트레이딩 cBot 만들기
이전 cBot은 잘 작동했지만 단순한 로직을 사용했으며 시장 트렌드에 주의를 기울이지 않았습니다. 우리는 이전과 동일한 프롬프트 접근 방식을 사용하여 더 복잡한 것을 만들어 보려고 합니다.
- 시작 문장: "당신이 cTrader의 숙련된 cBot 개발자라고 상상해 보세요. 저는 당신의 고객이 될 것입니다."
- 특정 요구 사항: "cBot을 생성하세요. 모든 바에서 50일 이동 평균이 200일 이동 평균보다 위인지 아래인지 확인해야 합니다. 위에 있으면 봇은 매수 주문을 내야 합니다. 아래에 있으면 봇은 매도 주문을 내야 합니다. 봇은 동일한 방향으로 이미 열린 포지션이 있는 경우 주문을 내지 않아야 합니다. 주문 거래량은 사용자 정의 가능한 매개변수여야 합니다."
- 예의: "도움 주셔서 감사합니다!"
다시 한 번, 우리는 ChatGPT가 제공한 코드를 코드 편집기 창에 복사하여 붙여넣고 봇을 빌드해 볼 것입니다. 다음은 우리가 얻은 모든 빌드 오류입니다:
- 코드가 구식
MarketSeriesAPI 멤버를 사용하고 있습니다. 이를Bars.ClosePrices컬렉션으로 대체할 수 있습니다. - 다시 한 번
Symbol인수를SymbolName으로 대체해야 합니다. - 또한
ExecuteMarketOrder메서드에서 사용 가능한 메서드 오버로드와 맞지 않는 불필요한 인수를 삭제해야 합니다.
우리 로직이 어떻게 구현되었는지 살펴볼 수도 있습니다. OnStart() 메서드에서 우리는 이동 평균을 초기화합니다. ChatGPT는 이동 평균 기간을 사용자 정의 가능한 매개변수로 만들었는데, 우리가 이를 요청하지 않았음에도 불구하고 그렇게 했습니다. 이를 그대로 두어도 핵심 로직에 영향을 미치지 않습니다.
그러나 OnBar() 메서드에서 봇은 열린 포지션이 없는 경우(Positions.Count ==0)에만 새로운 주문을 내는 것을 볼 수 있습니다. 이는 우리가 원하는 것이 아닙니다. 우리는 포지션 방향도 확인하고자 합니다. 코드를 약간 수정하여 다음과 같은 봇을 얻을 수 있습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | |
우리는 Positions.FindAll(string label) 메서드를 사용하여 주어진 레이블을 가진 모든 포지션을 가져오고 그 수를 계산했습니다.
봇을 빌드한 후 차트에 추가할 수 있습니다. 또한 50일 및 200일 이동 평균을 추가하여 cBot의 동작을 평가할 수 있습니다. 잠시 기다린 후, 봇이 예상대로 작동하는 것을 확인할 수 있습니다. 필요할 때 새로운 주문이 발생하지만 주어진 방향으로 열린 포지션은 하나만 존재합니다.
다른 AI를 사용하여 cBot 만들기
요약
ChatGPT는 정확히 정의된 로직으로 빠르게 cBot을 만들 필요가 있을 때 유용한 도구가 될 수 있습니다. ChatGPT가 일부 오류를 생성하지만, 이러한 오류는 일반적으로 사소하며 빠르게 수정할 수 있습니다.
