
A estratégia de negociação de momentum analisa a comparação de forças longas e curtas por meio da relação entre o preço de abertura, o preço mais alto e o preço mais baixo dentro de um determinado período de tempo e entende indiretamente a distribuição de forças longas e curtas no mercado atual. Analise as flutuações de preços para monitorar tendências futuras de preços.
A análise de momentum de preço é amplamente usada em negociações manuais tradicionais, especialmente na determinação de tendências unilaterais intradiárias. É um tópico comum, o que está acontecendo com a tendência? A melhor maneira de quantificar a tendência é comparar a força dos lados longo e curto. Em termos de comparação quantitativa, a análise do momento do preço é um dos melhores indicadores.
Este artigo usará essa estratégia para desenvolver um programa automatizado de negociação à vista para moedas digitais no Huobi.com.
AR = [A soma de todos (Alto-Aberto) em N dias / a soma de todos (Aberto-Baixo) em N dias] * 100
Entre eles:
N: A janela estatística do período de tempo diário, que geralmente é de 30 dias por padrão, porque há cerca de 30 dias de negociação válidos em um mês (a moeda digital é negociada 24 horas por dia, 7 dias por semana, então esse número pode ser um pouco conservador)
Alto: O preço mais alto do dia
Abertura: O preço de abertura do dia
Baixo: O menor preço do dia
O momentum do preço reflete a posição do preço de abertura entre o preço mais alto e o preço mais baixo ao longo de um período de tempo. Essa posição é a base para julgarmos o cabo de guerra entre os dois lados.
Observação: os números acima são todos valores padrão e não são de forma alguma a verdade. No processo de negociação real, precisamos ajustar esse intervalo para nos adaptarmos às condições atuais do mercado conforme ele muda.
Como de costume, abrimos o FMZ.COM, efetuamos login na conta, clicamos no centro de controle e implantamos o host e o robô.
Para obter mais informações sobre como implantar hosts e robôs, consulte meu artigo anterior: https://www.fmz.com/bbs-topic/4140
Os leitores que desejam adquirir seu próprio host de implantação de servidor de computação em nuvem podem consultar este artigo: https://www.fmz.com/bbs-topic/2848
Em seguida, clicamos na biblioteca de estratégias na coluna da esquerda e clicamos em Nova Estratégia
No canto superior direito da página de escrita da estratégia, lembre-se de selecionar Python como linguagem de programação, conforme mostrado na figura:

Em seguida, escrevemos o código Python na página de edição de código. O código a seguir tem comentários linha por linha muito detalhados, e os leitores podem lentamente entendê-lo e apreciá-lo. Mais importante, embora esta estratégia seja escrita com base em negociação à vista, no entanto, a escalabilidade do código a seguir também leva em consideração a negociação de futuros. Leitores interessados podem tentar reescrever o código a seguir em negociação de futuros. A lógica da estratégia em si é universal. Na Plataforma Quantitativa do Inventor, preparamos as interfaces de API das principais bolsas à vista e de futuros para você, para que o trabalho de reescrita seja muito fácil e conveniente.
Usaremos o Bitcoin spot da Huobi como alvo de negociação e começaremos a implementar esta estratégia:
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) # 更新日志信息
Depois de escrever a estratégia, a primeira coisa que precisamos fazer é fazer um backtest para ver como ela se sai em dados históricos. No entanto, observe que os resultados do backtest não são iguais às previsões do futuro. O backtest só pode ser usado como um Consulte as informações para considerar a eficácia da nossa estratégia. Uma vez que o mercado muda e a estratégia começa a sofrer grandes perdas, devemos identificar prontamente o problema e então mudar a estratégia para se adaptar ao novo ambiente de mercado. Por exemplo, se a estratégia sofre uma perda de mais de 10%, devemos imediatamente pare a estratégia e procure o problema, começando pelo ajuste do limite.
Clique no backtest simulado na página de edição de estratégia. Na página de backtest, os parâmetros podem ser ajustados de acordo com diferentes necessidades para depuração conveniente e rápida. Especialmente para estratégias com lógica complexa e muitos parâmetros, não há necessidade de voltar para o código-fonte e modificá-los um por um.
Para o período de backtesting, escolhemos o mês mais recente, clique para adicionar a bolsa à vista Huobi e a meta de negociação de BTC.

Ver resultados do backtest

Pode-se observar que essa estratégia teve um bom desempenho no backtest deste mês.
A vantagem do momentum de preço sobre alguns outros indicadores técnicos tradicionais é que, em vez de usar um único preço de abertura ou fechamento, ele incorpora os preços mais altos e mais baixos. Eles são comparados dinamicamente e, por meio das flutuações de preços intradiárias, as informações de mercado são mais abrangentes, a resposta é mais rápida e é mais macro.
Usar o valor do momentum do preço de forma independente para julgar se o preço está muito alto ou muito baixo, para julgar se é melhor ir muito ou pouco, se é provável sair muito cedo em uma grande tendência ou comprar o fundo muito cedo em uma grande queda do mercado . Em termos gerais, essa estratégia ainda pertence a uma estratégia de eficácia de choque.
A definição do limite da estratégia também precisa ser determinada com base nas características do alvo da transação. As flutuações de preços no mercado de moeda digital são relativamente grandes e o volume de negociação é enorme, especialmente para moedas tradicionais como o Bitcoin, que não tem limite de preço, então o limite é maior do que o do mercado de ações tradicional e o sobrevendido 80 linha é geralmente difícil de tocar. Portanto, há menos sinais de compra; enquanto a linha de sobrecompra de 170 está frequentemente abaixo do limite, então os sinais de venda são frequentemente acionados. Isso fará com que a estratégia fique em uma posição vazia na maior parte do tempo em que estiver em execução, e a taxa de utilização de capital ficará muito baixa. Desde janeiro deste ano, o Bitcoin está em alta, com o preço subindo de uma máxima de US\( 3.500 para quase US\) 13.000. O limite cruzou a linha de 170 muito cedo e permaneceu alto desde então. Se tivéssemos vendido de acordo com a linha tradicional de sobrecompra de 170, teríamos saído do mercado em cerca de 5.000, e não haveria sinal para abrir uma posição depois disso, então só teríamos obtido um pequeno lucro em um grande mercado em alta.
Portanto, nunca houve nenhuma estratégia de negociação que fosse o Santo Graal neste mercado, uma estratégia que pudesse render dinheiro para sempre sem necessidade de backtesting ou depuração. Nós, traders quantitativos, assim como traders subjetivos, finalmente chegamos ao mesmo destino. Precisamos nos adaptar às mudanças do mercado, às condições locais e responder às circunstâncias em constante mudança. Quando uma estratégia é ineficaz, precisamos fazer ajustes oportunos.
Amigos que tiverem perguntas podem deixar uma mensagem em https://www.fmz.com/bbs. Seja sobre estratégias ou tecnologia de plataforma, a Inventor Quantitative Platform tem uma equipe profissional para responder a você a qualquer momento.