전략 주소:https://www.fmz.com/strategy/345
이 기사에서는 간단한 자바스크립트 전략을 포팅하는 연습을 해보자. 전략 포팅을 통해 FMZ 퀀트 트레이딩 플랫폼 인터페이스의 호출에 더 익숙해 질 수 있으며 플랫폼 개발 전략에서 다른 언어들 간의 약간의 차이를 이해할 수 있습니다. 사실, 자바스크립트 버전과 파이썬 버전의 차이점은 인터페이스 호출이 기본적으로 같기 때문에 매우 적습니다.
자바스크립트 버전에서 인용된 설명:
이것은 포지션을 개설하는 것을 요구합니다. 예를 들어, 계정이 5000 위안과 한 화폐를 가지고 있다면, 화폐의 가치가 5000 위안의 계정 잔액보다 크고 가격 차이가 임계 값을 초과하면, 예를 들어, 화폐가 이제 6000 위안의 가치가 있다면, (6000-5000) / 6000/2 화폐를 팔고, 화폐가 상승했다는 것을 나타내고 돈을 다시 변환 할 수 있습니다. 화폐가 하락했다면, 예를 들어, 4000 위안, 우리는 (5000-4000) / 4000/2 화폐를 구입합니다. 화폐가 감소하면, 몇 개를 구입합니다. 다시 상승하면, 다시 판매, 균형과 마찬가지로, 두쪽은 다른 헤지를 가지고 있습니다. 그래서 나는 그것을 균형 전략이라고합니다.
전략의 원리는 매우 간단합니다. 자바스크립트 버전의 코드는 길지 않고 70 줄 이상입니다. 더 간결한 문법과 함께 파이썬 언어 전략이 이식되고 코드는 훨씬 짧으며 초보자 학습에 매우 적합합니다. FMZ 퀀트 트레이딩 플랫폼에서 개발자가 공유하는 코드가 많이 있으며 언어가 지원합니다.JavaScript
/C++
/Python
따라서 더 많은 개발 언어를 익히는 것은 학습, 연구 및 개발 전략뿐만 아니라 플랫폼의 다양한 API 인터페이스에 익숙합니다.
'''backtest
start: 2019-12-01 00:00:00
end: 2020-02-01 11:00:00
period: 1m
exchanges: [{"eid":"OKEX","currency":"BTC_USDT","stocks":1}]
'''
InitAccount = None
def CancelPendingOrders():
ret = False
while True:
orders = _C(exchange.GetOrders)
if len(orders) == 0 :
return ret
for j in range(len(orders)):
exchange.CancelOrder(orders[j].Id)
ret = True
if j < len(orders) - 1:
Sleep(Interval)
return ret
def onTick():
acc = _C(exchange.GetAccount)
ticker = _C(exchange.GetTicker)
spread = ticker.Sell - ticker.Buy
diffAsset = (acc.Balance - (acc.Stocks * ticker.Sell)) / 2
ratio = diffAsset / acc.Balance
LogStatus("ratio:", ratio, _D())
if abs(ratio) < threshold:
return False
if ratio > 0 :
buyPrice = _N(ticker.Sell + spread, ZPrecision)
buyAmount = _N(diffAsset / buyPrice, XPrecision)
if buyAmount < MinStock:
return False
exchange.Buy(buyPrice, buyAmount, diffAsset, ratio)
else :
sellPrice = _N(ticker.Buy - spread, ZPrecision)
sellAmount = _N(-diffAsset / sellPrice, XPrecision)
if sellAmount < MinStock:
return False
exchange.Sell(sellPrice, sellAmount, diffAsset, ratio)
return True
def main():
global InitAccount, LoopInterval
InitAccount = _C(exchange.GetAccount)
LoopInterval = max(LoopInterval, 1)
while True:
if onTick():
Sleep(1000)
CancelPendingOrders()
Log(_C(exchange.GetAccount))
Sleep(LoopInterval * 1000)
코드는 이렇게 시작합니다.
'''backtest
start: 2019-12-01 00:00:00
end: 2020-02-01 11:00:00
period: 1m
exchanges: [{"eid":"OKEX","currency":"BTC_USDT","stocks":1}]
'''
이것은 백테스팅 구성에 해당하는 것으로, 백테스팅 구성 (설정) 이 코드 형태로 저장되어 백테스팅 중에 설정에 따라 자동으로 구성된다는 것을 의미합니다. 이 부분은 삭제할 수 있습니다. 삭제되면 백테스팅 페이지에서 백테스팅 구성 정보를 수동으로 설정해야합니다. 참고:https://www.fmz.com/bbs-topic/859
이 전략의 매개 변수는 자바스크립트 버전과 완전히 일치합니다. 전략 코드는 또한 문장별로 이식됩니다. 프로그램 구조는 변경되지 않았습니다. 당신은 문장별로 다른 언어로 작성 된 전략을 비교할 수 있습니다.
매개 변수 구성
통계자료
전략 주소:https://www.fmz.com/strategy/183374
전략은 참조, 학습 및 백 테스트를 위한 것입니다. 당신이 관심이 있다면, 당신은 최적화하고 업그레이드 할 수 있습니다.