자체 API가 없어서 세팅 과정이 생각보다 오래걸리네요. 셀레니움을 쓰기엔 구조가 애매해서, 오덜리 API 지원되는 쪽으로 우회방식입니다.
델타 뉴트럴이랑 마켓메이킹 전략 A/B 테스트 돌리는 중인데, 현재 체감상으로는 마켓메이킹 쪽이 효율이 조금 더 나은 느낌입니다.
뭐 전략 괜찮은 거 있으신 분들은 거래소 환경으로 파라미터 최적화해서 적용하시면 될듯
[Orderly MemeMax MM 봇 셋업 — 프롬프트]
아래 내용을 Claude Code, Cursor, ChatGPT 등 AI 코딩 에이전트에 그대로 붙여넣으세요. 본인 자본·리스크 기준은 직접
결정해야 합니다.
---
Orderly Network 의 mememax 브로커 위에서 양방향 maker 호가 봇을 셋업하려고 한다. 아래 순서대로 진행해줘.
1. 사전 준비
- OS: Linux/macOS
- Node.js 20+ (nvm 권장)
- 별도 EVM 지갑 신규 생성 (메인 지갑 절대 사용 금지)
- Arbitrum One USDC 입금 (가스 + 증거금)
- 도메인: https://app.orderly.network (브로커 라우팅은 mememax 사용)
2. 프로젝트 초기화
mkdir mememax-mm && cd mememax-mm
npm init -y
npm i ethers@6 dotenv tsx typescript @types/node tweetnacl bs58
3. .env 파일 (본인 값으로 채움)
ORDERLY_BROKER_ID=mememax
ORDERLY_API_BASE=https://api.orderly.org
ORDERLY_WS=wss://ws.orderly.org/ws/stream/0
ORDERLY_CHAIN_ID=42161
MEMEMAX_WALLET=0x...신규지갑주소
MEMEMAX_PRIVATE_KEY=0x...신규지갑PK (등록 1회 후 삭제 권장)
4. 구현 파일
client.ts
- Orderly REST 인증 헤더 빌더 (ed25519 trading key 로 서명)
- 함수: getOrderbook, getMarketInfo, getPositions, placeOrder, cancelOrder, cancelAllSymbol, buildAuthHeaders
- 공식 문서 참조: https://orderly.network/docs
register.ts (최초 1회만 실행)
1) EVM 지갑으로 EIP-712 서명 → POST /v1/register_account
2) 응답의 account_id 를 .env 에 저장
3) tweetnacl 로 ed25519 키페어 신규 생성
4) POST /v1/orderly_key 로 trading key 등록 (scope: read,trading)
5) public/secret key 를 .env 에 저장
6) MEMEMAX_PRIVATE_KEY 는 .env 에서 삭제
bot.ts (심볼당 1프로세스, env 로 분기)
- env 입력: SYMBOL, SIZE_USD, SPREAD_BPS, CLOSE_USD, STOP_LOSS_USD, UPDATE_MS (모두 본인 수치)
- 루프 (UPDATE_MS 주기)
a. orderbook + 내 포지션 조회
b. mid = (best_bid + best_ask) / 2
c. desired_bid = mid - (SPREAD_BPS/10000)*mid/2, desired_ask = mid + 동일
d. base_qty = SIZE_USD / mid → market.base_tick 으로 floor 반올림, min_notional 체크
e. 포지션 노출 ≥ CLOSE_USD 면 close-only (long → ask만, short → bid만)
f. POST_ONLY 로 양쪽 호가, 직전 가격 대비 tick*2 이상 차이날 때만 재호가
g. (시작잔고 − 현재잔고) ≥ STOP_LOSS_USD 면 전체 취소 후 process.exit
systemd 템플릿 (선택)
[email protected] 만들고 EnvironmentFile=.env + per-symbol drop-in 으로 인스턴스화
watchdog.sh (선택, cron 2분)
- 전체 USDC 잔고를 조회 → start_equity.txt 와 비교
- 손실이 본인이 정한 임계치를 넘으면 systemctl stop 'mememax-mm@*' + reduce_only MARKET 으로 잔여 포지션 청산
5. 안전 체크리스트
- [ ] 신규 지갑 (메인 지갑 절대 X)
- [ ] .env 가 .gitignore 포함
- [ ] POST_ONLY 가 taker 로 fill 되지 않는지 최소사이즈로 검증
- [ ] stop loss 가 실제 트리거되는지 더미값으로 검증
- [ ] 심볼 1개 + 최소 사이즈로 24시간 운영 후 확장
6. 주의
- SIZE_USD, SPREAD_BPS, CLOSE_USD, STOP_LOSS_USD 는 본인 자본·리스크에 맞춰 직접 결정
