FMZ 퀀트 트레이딩 플랫폼에서 개발하는 친구들은 종종 다음과 같은 요구를 가질 수 있습니다.
임대 전략을 개발할 때, 전략에 대한 다른 자금 제한과 다른 플랫폼 제한 (전략에 의해 운영되는 플랫폼을 제한) 을 원하거나 플랫폼 계정 구성을 제한하고 싶습니다 (전략은 미리 합의된 계정에서만 작동 할 수 있습니다. 전략 사용자가 다른 계정을 사용할 때, 전략은 트레이드를 요청하고 더 이상 거래 및 다른 작업을 수행하지 않습니다.)
분명히 하드 코딩이 불가능합니다. 왜냐하면 하드 코딩이 가능하다면 모든 사용자가 이러한 제한에 적용될 것이고, 다른 사용자 그룹에 대한 다른 사용 권한을 제어할 수 없기 때문입니다.
위의 수요 시나리오를 바탕으로 FMZ 퀀트 트레이딩 플랫폼은 새로운 기능을 확장했습니다.전략 임대 등록 코드 메타데이터 설정.
레지스터 코드를 만들 때, 당신은 메타데이터를 지정할 수 있습니다Meta
, 문자열입니다. 참고: 메타의 길이는 레지스터 코드를 생성 할 때 190 문자를 초과할 수 없습니다.
예를 들어, 나는 전략 개발의 수출자이며 BTC_USDT의 스팟 거래 쌍으로 전략을 개발했습니다. 전략은 단지 긴 포지션을 만듭니다 (처음에는 코트 통화만 있습니다.QuoteCurrency
, 즉 USDT; 구매 후, 그것은BaseCurrency
이 전략을 빌려주고 싶다면, 전략 이름은test1
.
보시다시피, 전략의 제한은 전략의 특정 상황과 결합하여 특별히 설계되어야 합니다. 이 예제는 스팟 전략의 시범이지만 전략이 선물 전략이라면 어떻게 될까요? 그러면 선물 포지션 정보를 제한하는 것이 필요합니다 (GetPosition에 의해 반환된 위치 데이터에 따라). 전략이 포지션이 한계를 초과한다는 것을 발견하면 주문을 배치하고 포지션을 여길 논리가 더 이상 실행되지 않습니다. (다른 논리는 포지션을 닫는 것과 기타 작업과 같은 정상적으로 실행되어야합니다.)
따라서 이러한 제한의 디자인은 전략 자체와 결합되어야 합니다. 예를 들어 실제 사용 가치를 갖지 않은 단순한 지침입니다.
전략 출처 코드:
function main() {
// The maximum asset value of the quote currency allowed by the strategy
var maxBaseCurrency = null
// Obtain the metadata when the register code is created
var level = GetMeta()
// Detect the corresponding conditions of Meta
if (level == "level1") {
// -1 means no limit
maxBaseCurrency = -1
} else if (level == "level2") {
maxBaseCurrency = 10
} else if (level == "level3") {
maxBaseCurrency = 1
} else {
maxBaseCurrency = 0.5
}
while(1) {
Sleep(1000)
var ticker = exchange.GetTicker()
// Detect the assets amount
var acc = exchange.GetAccount()
if (maxBaseCurrency != -1 && maxBaseCurrency < acc.Stocks + acc.FrozenStocks) {
// Stop executing the strategy trading logic
LogStatus(_D(), "If the position exceeds the usage limits of register code, the strategy trading logic will no longer be executed!")
continue
}
// Other trading logic
// Normally export the information of status bar
LogStatus(_D(), "The strategy is operating normally!ticker data:\n", ticker)
}
}
레지스터 코드를 만들 때, 전략 테스트1을 찾아
클릭내부 판매.
작은
다음으로, 당신은 제한 정보를 작성해야 합니다메타이 예제에서 설계된 전략의 여러 사용 레벨과 같은 제어:
우선, 우리는level1
메타 컨트롤에서, 그리고 생성 된 레지스터 코드가level1
테스트1의
레지스터 코드가 생성되면 전략 판매자는 레지스터 코드를 전략 구매자에게 전송합니다.
예를 들어, 제가 다른 계좌 (구매자 계좌) 에서 등록번호를 사용하는 경우, 전략 테스트를 사용할 권리가 있습니다.
전략 구매자로서, 먼저 봇을 추가하고, 전략으로 test1을 선택하고, WexApp 스팟 교환 객체를 추가해야 합니다. (WexApp는 FMZ의 시뮬레이션 봇입니다.)
전략이 제대로 실행되는 것을 볼 수 있을 때,level1
포지션 금액 (스팟 계좌에 보유된 동전 금액) 에 제한이 없습니다.
전략 레지스터 코드가 사용되면 전략 개발자가 전송될 레지스터 코드 메타데이터를 조정해야 한다면 완전히 수정할 수 있습니다.
메타데이터는 수정될 수 있습니다.
이전 레지스터 코드 메타데이터를level3
, 그리고 전략 사용자는 테스트를 위해 봇을 다시 시작해야 합니다.level3
최대 포지션 금액을 동전 1개로 제한합니다.
다른 사용자 그룹과 지불 수준에 따라 전략을 임대할 때, 당신은 구체적으로 메타데이터를 구성하여 레벨별로 전략을 제어할 수 있습니다.
물론, 위에서 언급한 예는 가장 일반적인 제한 및 제어 요구 사항에 불과합니다. 또한 기능을 실현 할 수있는 다양한 유사한 요구 사항이 있습니다.