
모멘텀 트레이딩 전략은 특정 기간 내의 시가, 최고가, 최저가의 관계를 통해 롱 포지션과 숏 포지션의 비교를 분석하고, 현재 시장에서의 롱 포지션과 숏 포지션의 분포를 간접적으로 파악하는 것입니다. 가격 변동을 분석하여 향후 가격 추세를 추적합니다.
가격 모멘텀 분석은 전통적인 수동 거래에서 널리 사용되며, 특히 일중 일방적 추세를 결정하는 데 사용됩니다. 추세는 어떻게 되어가고 있는가? 추세를 정량화하는 가장 좋은 방법은 롱과 숏 사이드의 강도를 비교하는 것입니다. 정량적인 비교 관점에서 볼 때, 가격 모멘텀 분석은 가장 좋은 지표 중 하나입니다.
이 글에서는 이 전략을 사용하여 Huobi.com에서 디지털 통화에 대한 자동 현물 거래 프로그램을 개발합니다.
AR = [N일 동안의 모든 (High-Open)의 합 / N일 동안의 모든 (Open-Low)의 합] * 100
그 중에는:
N: 일일 기간의 통계적 창은 일반적으로 기본적으로 30일입니다. 한 달에 약 30일의 유효 거래일이 있기 때문입니다(디지털 화폐는 24시간 연중무휴로 거래되므로 이 숫자는 약간 보수적일 수 있음)
High: 당일 최고 가격
오픈 : 당일의 오픈 가격
Low: 당일 최저가
가격 모멘텀은 일정 기간 동안 최고 가격과 최저 가격 사이의 개장 가격의 위치를 반영합니다. 이 위치는 우리가 두 측 간의 줄다리기를 판단하는 기준입니다.
참고사항: 위의 숫자는 모두 기본값이며, 결코 사실이 아닙니다. 실제 거래 과정에서는 시장이 변화함에 따라 현재 시장 상황에 맞게 이 범위를 조정해야 합니다.
평소처럼 FMZ.COM을 열고 계정에 로그인한 후 제어 센터를 클릭하고 호스트와 로봇을 배치합니다.
호스트와 로봇을 배치하는 방법에 대한 자세한 내용은 이전 기사를 참조하세요: https://www.fmz.com/bbs-topic/4140
자체 클라우드 컴퓨팅 서버 배포 호스트를 구매하려는 독자는 이 기사를 참조하세요: https://www.fmz.com/bbs-topic/2848
다음으로, 왼쪽 열의 전략 라이브러리를 클릭하고 새 전략을 클릭합니다.
전략 작성 페이지의 오른쪽 상단에서 그림과 같이 프로그래밍 언어로 Python을 선택하는 것을 잊지 마세요.

다음으로, 파이썬 코드를 코드 편집 페이지에 씁니다. 다음 코드는 매우 자세한 줄별 주석이 있으며, 독자는 천천히 이해하고 감상할 수 있습니다. 더 중요한 것은 이 전략이 현물 거래를 기반으로 작성되었지만, 그러나, 다음 코드의 확장성은 선물 거래도 고려합니다. 관심 있는 독자는 다음 코드를 선물 거래로 다시 작성해 볼 수 있습니다. 전략 자체의 논리는 보편적입니다. Inventor Quantitative Platform에서는 주요 현물 및 선물 거래소의 API 인터페이스를 준비해 놓았으므로 재작성 작업이 매우 쉽고 편리할 것입니다.
우리는 Huobi의 비트코인 현물을 거래 대상으로 사용하고 이 전략을 구현하기 시작할 것입니다.
import types # 导入Types模块库,这是为了应对代码中将要用到的各种数据类型
def main(): # 主函数,策略逻辑从这里开始
IDLE = 0 # 用来标记持仓状态,可以理解为0即为空闲状态,也就是空仓状态
LONG = 1 # 多头持仓
SHORT = 2 # 空头持仓,注意,此策略应用于现货市场,所以不存在空头开仓或者持仓情况,这里这样写,是为了方便理解策略和以后的扩展(如扩展到期货市场)
state = IDLE # 标记持仓状态的变量
while True: # 进入循环
r = exchange.GetRecords() #GetRecords是发明者量化平台的官方API,详细用法请参见:https://www.fmz.com/api
if len(r) <= 1: # 判断K线是否大于一根,也就是当前是否为开盘状态,否则可能会进入死循环,这里也方便读者进行扩展,大一些的K线周期趋势状态更稳定。
Log("bar的数量不足, 等待下一根bar...") # 输出日志
continue # Python循环控制语句,继续下边的循环内容
# 开始进行价格动量的量化分析
ar = sum(r.High - r.Open) / sum(r.Open - r.Low) * 100 # 计算公式
account = _C(exchange.GetAccount) # 获取账户信息,_C同样为发明者量化平台的官方API,用法请参见:https://www.fmz.com/api
if ar < 95 and (state == IDLE or state == SHORT) : # AR值小于超卖线且账户拥有资金,则全仓买入
if account["Balance"] > 50:
exchange.Buy(-1, account["Balance"] * 0.9) # 市价单全仓买入
state = LONG # 改变持仓状态为LONG
elif ar > 80 and (state == IDLE or state == LONG): # AR值大于超买线且账户有持仓,则全仓卖出
if account["Stocks"] > 0.01:
exchange.Sell(-1, account["Stocks"] * 0.9) # 市价单全仓卖出
state = SHORT # 改变持仓状态为SHORT
LogStatus(_D(), exchange.GetAccount() , state) # 更新日志信息
전략을 작성한 후 가장 먼저 해야 할 일은 과거 데이터에서 어떻게 수행되는지 확인하기 위해 백테스트를 하는 것입니다. 그러나 백테스트의 결과는 미래에 대한 예측과 같지 않다는 점에 유의하세요. 백테스트는 다음과 같은 용도로만 사용할 수 있습니다. 우리 전략의 효과를 고려하려면 정보를 참조하세요. 시장이 변화하고 전략이 큰 손실을 입기 시작하면 즉시 문제를 파악하고 새로운 시장 환경에 적응하기 위해 전략을 변경해야 합니다. 예를 들어 전략이 10% 이상의 손실을 입으면 즉시 전략을 중단하고 문제를 찾으려면 임계값을 조정하는 것부터 시작하세요.
전략 편집 페이지에서 시뮬레이션 백테스트를 클릭합니다. 백테스트 페이지에서 매개변수를 다양한 요구 사항에 맞게 조정하여 편리하고 빠르게 디버깅할 수 있습니다. 특히 복잡한 논리와 많은 매개변수가 있는 전략의 경우 다시 돌아갈 필요가 없습니다. 소스 코드를 편집하여 하나씩 수정합니다.
백테스팅 기간 동안 가장 최근의 달을 선택하고, Huobi 현물 거래소와 BTC 거래 목표를 추가하기 위해 클릭합니다.

백테스트 결과 보기

이번 달의 백테스트에서 이 전략이 좋은 성과를 거두었음을 확인할 수 있습니다.
다른 전통적인 기술 지표에 비해 가격 모멘텀의 장점은 하나의 시작 가격이나 마감 가격을 사용하는 대신 최고 가격과 최저가를 통합한다는 것입니다. 동적으로 비교되며, 일중 가격 변동을 통해 시장 정보가 보다 포괄적이고, 대응이 빠르고, 보다 거시적입니다.
가격이 너무 높거나 낮은지, 롱 포지션을 취해야 할지 숏 포지션을 취해야 할지 판단하기 위해 가격 모멘텀 값을 독립적으로 사용하면 큰 추세에서 너무 일찍 빠져나가거나 큰 시장 붕괴에서 너무 일찍 바닥을 매수할 가능성이 높습니다. . 일반적으로 말해서, 이 전략은 여전히 충격 효과 전략에 속합니다.
전략의 임계값 설정 역시 거래 대상의 특성에 따라 결정되어야 합니다. 디지털 화폐 시장은 가격 변동이 비교적 크고 거래량도 방대하며, 특히 비트코인 등 가격 제한이 없는 주류 화폐의 경우 기존 주식시장보다 임계치가 높고 80% 이상 매도 라인은 보통 터치하기 어렵습니다. 따라서 매수 신호가 적습니다. 반면 170의 매수 과다 라인은 종종 임계값 아래에 있으므로 매도 신호가 자주 트리거됩니다. 이로 인해 전략이 실행되는 대부분의 시간 동안 전략은 빈 자리에 있게 되고, 자본 사용률이 매우 낮아질 것입니다. 올해 1월부터 비트코인은 강세를 보이며, 가격은 3,500달러에서 거의 13,000달러까지 상승했습니다. 기준선은 매우 일찍 170선을 넘었고 그 이후로 계속 높은 수준을 유지하고 있습니다. 우리가 전통적인 매수 과열선인 170에 따라 매도했다면, 우리는 약 5,000에서 시장을 마감했을 것이고, 그 이후로는 포지션을 열 신호가 없었을 것입니다. 그래서 우리는 큰 강세장에서 단지 소액의 이익만 냈을 것입니다.
따라서 이 시장에서는 백테스팅이나 디버깅 없이도 영원히 돈을 벌 수 있는 성배 거래 전략은 존재하지 않았습니다. 주관적 트레이더와 마찬가지로 우리 양적 트레이더는 궁극적으로 같은 목적지에 도달합니다. 우리는 시장 변화에 적응하고, 지역 상황에 적응하고, 끊임없이 변화하는 상황에 대응해야 합니다. 전략이 효과적이지 않을 때, 우리는 시기적절한 조정을 해야 합니다.
질문이 있는 친구는 https://www.fmz.com/bbs에서 메시지를 남길 수 있습니다. 전략이든 플랫폼 기술이든, Inventor Quantitative Platform에는 언제든지 답변해 줄 전문 직원이 있습니다.