Estratégia de negociação do Centro de Gravidade

Autora:ChaoZhang, Data: 2023-12-12 16:56:51
Tags:

img

Resumo

A estratégia de negociação de backtesting do Centro de Gravidade é uma estratégia de negociação baseada em médias móveis. Ela calcula o centro do preço, ou seja, a posição do centro de gravidade, e constrói canais de preços como corredores para cotações de ativos. A estratégia pode mudar de longo para curto nas configurações de entrada.

Princípio da estratégia

A estratégia calcula a posição do centro de gravidade através da função de regressão linear. Especificamente, calcula o valor de regressão linear do preço de fechamento no período de comprimento, que é o centro do preço. Os canais de preço são então construídos movendo-se para cima e para baixo em % sobre esta base. Os limites superior e inferior do canal de preço servem como sinais longos e curtos, respectivamente. Quando o preço atravessa o trilho superior, vá longo; quando o preço quebra abaixo do trilho inferior, vá curto. O parâmetro SignalLine é usado para selecionar se usar o primeiro canal ou os trilhos superiores e inferiores do segundo canal como sinais de negociação. O parâmetro inverso é usado para inverter o longo e curto.

Análise das vantagens

Esta é uma estratégia de fuga muito simples com as seguintes vantagens principais:

  1. A ideia é clara e fácil de entender e implementar.
  2. Bons resultados de backtest com certa viabilidade prática.
  3. Configuração flexível dos parâmetros para se adaptar aos diferentes ambientes de mercado.
  4. Compatível com a operação de reversão, adequada para operação bidirecional.

Análise de riscos

A estratégia apresenta também alguns riscos:

  1. Pode haver riscos de sobreajuste no processo de backtest. Os parâmetros precisam ser re-otimizados para negociação ao vivo.
  2. Fracassadas fugas podem levar a grandes perdas.
  3. A frequência de negociação pode ser relativamente elevada, pelo que é necessário controlar o rácio de utilização do capital.

Os riscos podem ser controlados ajustando parâmetros como bandas, comprimento, etc. O stop loss também pode ser definido para limitar a perda máxima.

Orientações de otimização

A estratégia pode ser ainda melhorada das seguintes maneiras:

  1. Combinar com indicadores de tendência para filtrar sinais e evitar negociação contra a tendência.
  2. Adicione o mecanismo de stop loss.
  3. Otimizar as configurações dos parâmetros para aumentar a taxa de lucro.
  4. Adicionar controle de posição para reduzir o risco.

Resumo

A estratégia de negociação de backtesting do Centro de Gravidade é uma estratégia de breakout simples. Tem lógica clara, boa praticidade e configurações de parâmetros flexíveis. Ao mesmo tempo, também há certos riscos que precisam ser adequadamente otimizados e controlados. A estratégia é adequada como uma estratégia básica para negociação e otimização ao vivo, e também é muito adequada para iniciantes aprenderem.


/*backtest
start: 2023-11-11 00:00:00
end: 2023-12-11 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 15/03/2018
// The indicator is based on moving averages. On the basis of these, the 
// "center" of the price is calculated, and price channels are also constructed, 
// which act as corridors for the asset quotations.
//
// You can change long to short in the Input Settings
// WARNING:
//  - For purpose educate only
//  - This script to change bars colors.
////////////////////////////////////////////////////////////
strategy(title="Center Of Gravity Backtest", shorttitle="CFO", overlay = true)
Length = input(20, minval=1)
m = input(5, minval=0)
Percent = input(1, minval=0)
SignalLine = input(1, minval=1, maxval = 2, title = "Trade from line (1 or 2)")
reverse = input(false, title="Trade reverse")
xLG = linreg(close, Length, m)
xLG1r = xLG + ((close * Percent) / 100)
xLG1s = xLG - ((close * Percent) / 100)
xLG2r = xLG + ((close * Percent) / 100) * 2
xLG2s = xLG - ((close * Percent) / 100) * 2
xSignalR = iff(SignalLine == 1, xLG1r, xLG2r)
xSignalS = iff(SignalLine == 1, xLG1s, xLG2s)
pos = iff(close > xSignalR, 1,
       iff(close < xSignalS, -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue ) 
plot(xLG, color=blue, title="CFO")
plot(xLG1r, color=green, title="LG1r")
plot(xLG2r, color=green, title="LG2r")
plot(xLG1s, color=red, title="LG1s")
plot(xLG2s, color=red, title="LG2s")

Mais.