A estratégia usa o princípio do cruzamento dourado e da forca morta de uma média móvel simples para realizar posições longas e curtas de ações. Faça mais quando a linha rápida quebra a linha lenta a partir da direção inferior; faça menos quando a linha rápida quebra a linha lenta a partir da direção superior.
A estratégia define primeiro o tempo de início e fim da retomada e, em seguida, define os parâmetros de cálculo para as duas médias, incluindo o tipo de média e o comprimento do período.
Calcule o valor de duas médias com a função getMAType (). FastMA é a média de curto período e slowMA é a média de longo período.
A lógica central da estratégia é:
Quando o fastMA é colocado sobre o slowMA, é emitido um sinal de multiplicação de long;
Quando o MA rápido atravessa o MA lento, emite um sinal de curto.
Por fim, durante o período de retrospectiva, se houver sinais de excesso, a estratégia de posição longa é adotada; se houver sinais de excesso, a estratégia de posição vazia é adotada.
A análise de risco pode ser melhorada nos seguintes aspectos:
Adicionar filtros de outros indicadores técnicos para identificar tendências.
Aumentar as estratégias de stop loss e controlar as perdas individuais.
A introdução de indicadores quantitativos de energia, etc., para evitar arbitragem em mercados de turbulência.
Estabelecer mecanismos de otimização de parâmetros para encontrar automaticamente a melhor combinação de parâmetros.
A estratégia pode ser melhorada em alguns aspectos:
Aumentar as estratégias de stop loss, como definir pontos de stop loss fixos ou rastrear o stop loss e controlar os perdas.
Aumentar as estratégias de gerenciamento de posições, como posições fixas, posições dinâmicas e controle de risco de negociação.
Aumentar os filtros, em combinação com outros indicadores técnicos para identificar tendências e aumentar a taxa de vitórias.
Optimizar a configuração de parâmetros, procurando os melhores parâmetros por meio de pesquisa de grelha, regressão linear e outros métodos.
Expandir a estratégia de negociação de forex, como reversão de breakouts, construção de posições em lotes, etc.
Aumentar os indicadores de potência para evitar ser preso em situações de tremores.
A expansão da variedade de transações para futuros de índices de ações, divisas e moedas digitais.
Esta estratégia é baseada no princípio de cruzamento de médias móveis para realizar a escolha de posições longas e curtas de ações. A estratégia é simples e clara, é amplamente utilizada, é adaptável e tem um certo valor prático. Mas a estratégia também possui um certo atraso e incapacidade de filtrar efetivamente oscilações.
/*backtest
start: 2023-09-10 00:00:00
end: 2023-10-10 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
//strategy("Golden X BF Strategy", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.0)
/////////////// Time Frame ///////////////
testStartYear = input(2010, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay, 0, 0)
testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay, 0, 0)
testPeriod() => true
///////////// MA Params /////////////
source1 = input(title="MA Source 1", defval=close)
maType1 = input(title="MA Type 1", defval="sma", options=["sma", "ema", "swma", "wma"])
length1 = input(title="MA Length 1", defval=50)
source2 = input(title="MA Source 2", defval=close)
maType2 = input(title="MA Type 2", defval="sma", options=["sma", "ema", "swma", "wma"])
length2 = input(title="MA Length 2", defval=200)
///////////// Get MA Function /////////////
getMAType(maType, sourceType, maLen) =>
res = sma(close, 1)
if maType == "ema"
res := ema(sourceType, maLen)
if maType == "sma"
res := sma(sourceType, maLen)
if maType == "swma"
res := swma(sourceType)
if maType == "wma"
res := wma(sourceType, maLen)
res
///////////// MA /////////////
fastMA = getMAType(maType1, source1, length1)
slowMA = getMAType(maType2, source2, length2)
long = crossover(fastMA, slowMA)
short = crossunder(fastMA, slowMA)
/////////////// Plotting ///////////////
checkColor() => fastMA > slowMA
colCheck = checkColor() ? color.lime : color.red
p1 = plot(fastMA, color = colCheck, linewidth=1)
p2 = plot(slowMA, color = colCheck, linewidth=1)
fill(p1, p2, color = checkColor() ? color.lime : color.red)
bgcolor(long ? color.lime : short ? color.red : na, transp=20)
/////////////// Execution ///////////////
if testPeriod()
strategy.entry("Long", strategy.long, when=long)
strategy.entry("Short", strategy.short, when=short)