
Esta é uma estratégia de negociação intradiária simples baseada em duas equações. Utiliza uma média móvel simples de dois períodos diferentes para comprar ou vender quando a média se cruza. Quando o sinal muda, usa o dobro da quantidade de posições de liquidação e abre posições de forma inversa. Ao final do período de negociação intradiária do dia, se as posições ainda não estiverem liquidadas, todas as posições serão liquidadas.
A estratégia usa duas médias móveis simples nos dias 10 e 40. Quando a média curta atravessa a média longa, faça mais; Quando a média curta atravessa a média longa abaixo, faça vazio. Quando o sinal muda, use a mão dupla para equilibrar a posição e reverte para abrir a posição.
A estratégia utiliza principalmente a característica de que a linha média de curto prazo pode capturar as mudanças de preço mais rapidamente. Quando a linha média de curto prazo atravessa a linha média de longo prazo, indica que o preço de curto prazo começa a subir e pode capturar essa tendência; Quando a linha média de curto prazo atravessa a linha média de curto prazo, indica que o preço de curto prazo começa a cair e pode capturar essa tendência.
A solução para o risco:
Optimizar os parâmetros da linha média. Você pode testar mais combinações para encontrar o melhor parâmetro.
Adicionar filtros de outros indicadores técnicos. Por exemplo, adicionar a confirmação do indicador MACD pode reduzir a taxa de falha.
Optimizar o múltiplo inverso de abertura de posição. Teste diferentes tamanhos de múltiplo para encontrar o parâmetro ideal.
Teste diferentes períodos de negociação no dia.
O conceito geral da estratégia é simples, por capturar a tendência de curto prazo de formação de cruzamentos de dupla linha de equilíbrio, em combinação com a mão dupla para expandir o espaço de lucro de abertura de posição inversa, e, finalmente, em combinação com a negociação de horários do dia para evitar o risco durante a noite. É uma estratégia eficaz para a negociação de linha curta no dia. Há espaço para otimização adicional, e pode ser obtido um melhor efeito da estratégia por meio do ajuste de parâmetros, bem como a adição de filtros de outros indicadores técnicos.
/*backtest
start: 2024-02-19 00:00:00
end: 2024-02-26 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Pritesh-StocksDeveloper
//@version=4
strategy("Moving Average - Intraday", shorttitle = "MA - Intraday",
overlay=true, calc_on_every_tick = true)
// Used for intraday handling
// Session value should be from market start to the time you want to square-off
// your intraday strategy
var i_marketSession = input(title="Market session", type=input.session,
defval="0915-1455", confirm=true)
// Short & Long moving avg. period
var int i_shortPeriod = input(title = "Short MA Period", type = input.integer,
defval = 10, minval = 2, maxval = 20, confirm=true)
var int i_longPeriod = input(title = "Long MA Period", type = input.integer,
defval = 40, minval = 3, maxval = 120, confirm=true)
// A function to check whether the bar is in intraday session
barInSession(sess) => time(timeframe.period, sess) != 0
// Calculate moving averages
shortAvg = sma(close, i_shortPeriod)
longAvg = sma(close, i_longPeriod)
// Plot moving averages
plot(series = shortAvg, color = color.red, title = "Short MA",
linewidth = 2)
plot(series = longAvg, color = color.blue, title = "Long MA",
linewidth = 2)
// Long/short condition
longCondition = crossover(shortAvg, longAvg)
shortCondition = crossunder(shortAvg, longAvg)
// See if intraday session is active
bool intradaySession = barInSession(i_marketSession)
// Trade only if intraday session is active
// Long position
strategy.entry(id = "Long", long = strategy.long,
when = longCondition and intradaySession)
// Short position
strategy.entry(id = "Short", long = strategy.short,
when = shortCondition and intradaySession)
// Square-off position (when session is over and position is open)
squareOff = (not intradaySession) and (strategy.position_size != 0)
strategy.close_all(when = squareOff, comment = "Square-off")