Freqtrade

니가 사장해라

jimsjoo 2026. 1. 14. 04:49

아주 요상한 문제에 걸려 고생중인데, 봇이 가동하면서 봇 설정중 전략파일만 못읽어 주구장창 'SampleStrategy'만 찍어댄다. uvicorn 콘솔에는 설정읽는 함수가 지정한 전략을 정상적으로 로드하는 게 확인된다. 근데, 이넘의 도커 로그에는 그넘의 샘플샘플샘플.
일단 이 문제를 나중으로 미루고 다른 기능을 추가하려고 한다.

이 문제는 아직 미해결이니 나중으로 미루고, Freqtrade에는 trade말고 webserver모드도 있는데, 홈페이지에서 사용자가 이를 선택하여 사용할 수 있도록 하는 건 어떤가?

 이런 제안에 재민이가

좋은 제안입니다! Freqtrade의 webserver 모드를 홈페이지에서 선택할 수 있게 하는 것은 기술적으로 충분히 가능하며, "관전 모드" 또는 "분석 모드"라는 이름으로 제공하면 사용자에게 유용한 기능이 될 수 있습니다. 하지만 trade 모드와 무엇이 다른지 명확히 이해하고 구현해야 사용자의 혼란(예: "왜 봇이 매수를 안 하죠?")을 막을 수 있습니다. 장단점과 구현 방법을 정리해 드립니다.

1.  모드 vs  모드 차이점

특징 Trade Mode (기본) Webserver Mode (제안)
실행 명령어 freqtrade trade ... freqtrade webserver ...
자동 매매 O (작동함) X (작동 안 함)
전략 계산 O (계속 계산함) X (계산 안 함)
WebUI 접속 O (가능) O (가능)
CPU 사용량 높음 (전략 연산 때문) 매우 낮음 (단순 서버 역할)
주 용도 실전/모의 투자 데이터 분석, 로그 확인, 백테스팅

핵심: webserver 모드를 선택하면 봇은 절대 스스로 매수/매도를 하지 않습니다. 오직 사용자가 WebUI에 접속해서 차트를 보거나 수동으로 조작하기 위해 켜두는 상태입니다.


2. 홈페이지에 적용 시 기획 가이드

사용자에게 "Webserver 모드"라고 그대로 보여주면 어렵습니다. 대신 "실행 모드 선택" 기능을 아래와 같이 UX적으로 풀어내는 것을 추천합니다.

  • 옵션 A: 자동매매 모드 (Trade Mode)
  • 설명: "전략에 따라 자동으로 코인을 사고 팝니다."
  • 옵션 B: 관전/대기 모드 (Webserver Mode)
  • 설명: "매매는 하지 않고 차트와 지난 기록만 확인합니다. (자원 절약)"

3. 구현 방법 (Backend & DB)

기존 구조에서 크게 바꿀 것은 없으며, 컨테이너 실행 명령어(command)만 분기 처리하면 됩니다.

1단계: DB 스키마 추가 ()

사용자가 모드를 선택해서 저장해야 하므로, Instance 테이블에 mode 컬럼이 필요합니다.

# domain/instance/instance_schema.py

class InstanceCreate(BaseModel):
    # ... 기존 필드 ...
    mode: str = "trade"  # 'trade' 또는 'webserver' (기본값: trade)

2단계: 백엔드 실행 로직 수정 ()

create_instance 또는 start_instance 함수에서 mode 값에 따라 명령어를 다르게 만듭니다.

# instance_router.py

# ...
    # 사용자 선택에 따라 명령어 결정
    freq_command = "trade" if instance.mode == "trade" else "webserver"

    container = client.containers.run(
        image="my-freqtrade-image:latest",
        # [핵심] command 부분에 변수 적용
        command=f"{freq_command} --logfile ... (나머지 옵션 동일) ...",
        # ...
    )
# ...

4. 추천: 굳이 모드를 나누지 않는 방법 (더 나은 UX)

사실 trade 모드로 켜놓고도 webserver 모드처럼 쓸 수 있는 방법이 있습니다. Freqtrade 설정(config.json)에는 "initial_state": "stopped" 라는 옵션이 있거나, 실행 시 봇을 정지 상태로 시작할 수 있습니다.

제안하는 SaaS UX (MVP 단계 추천):

  1. 무조건 trade 모드로 실행합니다. (그래야 사용자가 원할 때 바로 시작 버튼을 눌러 매매할 수 있음)
  2. 대신, 봇이 처음 켜질 때 "일시 정지(Stopped)" 상태로 켜지게 합니다.
  • 이렇게 하면 webserver 모드처럼 자원을 적게 먹으면서 WebUI는 접속 가능합니다.
  • 사용자가 "이제 돈 벌어봐!" 하고 싶을 때 WebUI나 대시보드에서 [Start]만 누르면 즉시 매매가 시작됩니다.
  1. webserver 모드는 나중에 "백테스팅 전용 인스턴스"를 만들 때 사용하는 것이 더 적합합니다.

✅ 결론

  • 구현 가능 여부: 예, 아주 쉽습니다. 명령어 한 단어만 바꾸면 됩니다.
  • 추천 여부: 비추천합니다.
  • 이유 1: 사용자가 "Webserver 모드"로 켜놓고 "왜 매매 안 해?"라고 클레임 걸 확률이 높습니다.
  • 이유 2: trade 모드로 켜고 [Stop] 상태로 두는 것이 기능적으로 webserver 모드와 거의 같으면서, 언제든 매매로 전환할 수 있어 더 유연합니다.

현재 미해결된 문제(설정 파일 로드 등)를 먼저 해결하시고, 이 기능은 나중에 "백테스팅 서비스"를 런칭할 때 도입하시는 것을 권장합니다!


해결못한 거나 마저 해결하고 넘어가라고 한다. 니가 사장해라 사장해~

'Freqtrade' 카테고리의 다른 글

바나나가 영어로 뭐지?  (0) 2026.01.13
2인분 같은 1인분 봇 추가요~  (0) 2026.01.13
26년 새해에도 진행중인 프로젝트  (0) 2026.01.01
Freqtrade 병아리반  (0) 2025.12.24
Docker로 빠르게 시작해보는 Freqtrade  (0) 2025.12.19