주문 체결
재시도 로직이란 거래소나 브로커로의 실패한 요청을 다시 보낼지, 몇 번, 얼마 후에 보낼지, 그리고 가장 중요하게는 반복될 경우 두 번째 주문이 생성될 수 있어 절대로 반복해서는 안 되는 요청이 무엇인지를 결정하는 규칙의 집합입니다.
네트워크와 거래 장소는 외부에서 볼 때 동일하게 보이는 방식으로 실패합니다. 타임아웃은 주문이 결코 도달하지 않았다는 뜻일 수도 있고, 접수는 되었지만 확인 응답이 유실되었다는 뜻일 수도 있습니다. 읽기 요청(잔고, 포지션, 주문 상태)을 재시도하는 것은 무해하지만, 애매한 실패 이후 주문 접수를 재시도하면 포지션이 두 배가 될 수 있으며, 이는 거래 하나를 놓치는 것보다 더 나쁜 결과입니다. 재시도는 요청 제한(rate limit)과도 상호작용합니다. 거래 장소에 장애가 발생한 동안 재시도가 몰리면 IP나 키가 일시적으로 차단(ban)될 수 있으며, 그러면 해당 서버의 다른 모든 계정도 함께 마비됩니다.
AlgoVesta는 읽기와 쓰기를 구분합니다. 포지션 조회와 같은 읽기 요청은 짧은 대기 후 한 번만 재시도됩니다. 주문 접수는 타임아웃 이후에 무작정 재시도되지 않는데, 확인 응답의 유실이 곧 주문의 유실을 의미하는 것은 아니기 때문입니다. 대신 플랫폼은 거래 장소를 상대로 대조(정합성 확인)를 수행합니다. 거래소의 포지션과 거래 내역을 확인하여, 실제로 접수된 것으로 밝혀진 주문은 중복 생성되지 않고 그대로 기록됩니다. 중복 방지 장치는 짧은 시간 창 내에 동일한 계정, 심볼, 방향에 대한 두 번째 동일 신호를 거부하므로, 제공자가 메시지를 다시 게시하더라도 두 개의 포지션이 열리지 않습니다. 거래 장소가 요청 제한이나 차단 응답을 반환하면, 영향을 받은 키나 서버는 거래 장소를 계속 두드리는 대신 물러서며, 그 상태는 대시보드에 표시됩니다. 생성에 실패한 보호 주문은 재시도되고 검증되며, 포렉스 계좌에서는 손절가가 확인될 수 없는 포지션이 설계상 종료됩니다. 멱등성과 거래소 요청 제한(rate limit)을 참고하십시오.
0.05 BTC를 매수하는 주문이 응답 없이 10초 후 타임아웃됩니다. AlgoVesta는 이를 재전송하지 않습니다. 대신 계정의 열린 포지션과 최근 체결 내역을 조회하여, 그 주문과 일치하는 새로운 0.05 BTC 롱 포지션을 발견하고, 거래소의 체결 가격으로 이를 기록하며 그에 대한 손절과 목표가를 배치합니다. 만약 조회 결과 아무것도 발견되지 않았다면, 해당 신호는 타임아웃 사유와 함께 실패로 표시되었을 것이고, 트레이더는 이를 직접 판단하여 다시 전송할 수 있었을 것입니다.