A estratégia é baseada no MACD de 1 minuto e no design do RSI. Combina a capacidade do MACD de determinar a tendência e encontrar pontos de ruptura, e o RSI de determinar a sobrecompra e a sobrevenda, procurando oportunidades de ruptura da linha curta para fazer oscilações longas e curtas.
A estratégia começa com o cálculo da linha de concentração do indicador MACD em um período de 1 minuto e traça uma ruptura na linha de concentração de determinação da faixa de Brin. Ao mesmo tempo, o cálculo do indicador RSI determina o campo de força. Um sinal de negociação só é emitido quando a faixa de Brin, o MACD e o indicador RSI estão simultaneamente qualificados.
Especificamente, quando a linha de concentração MACD de 1 minuto está abaixo da linha de baixa e o RSI está acima de 51, faça mais, quando a linha de concentração MACD está acima da linha de alta e o RSI está abaixo de 49, faça vazio. E exija que as linhas médias de 9 dias, 50 dias e 200 dias estejam em ordem para negociar, para evitar operações de contra-trend desfavoráveis.
Adotar um stop loss fixo Exit quando o lucro atingir 0,5% ou o prejuízo atingir 0,3% e fechar a posição.
Esta estratégia combina o julgamento de tendências com o julgamento de sobrecompra e sobrevenda para filtrar efetivamente as brechas falsas. O stop loss fixo permite que cada ganho tenha uma certa administração de expectativas.
As vantagens são as seguintes:
O MACD determina a direção da tendência e o RSI determina o caminho da força aérea, evitando efetivamente a operação de contracorrente.
Combinado com o canal da cintura de Brin para determinar sinais de ruptura, pode filtrar a falsa ruptura.
O sistema de stop loss é um sistema de controle de perdas, em que cada ganho tem uma expectativa de lucro.
A frequência de transação é mais alta e é adequada para operações de linha curta.
A estratégia também apresenta alguns riscos:
O stop loss fixo não pode ser ajustado de acordo com as mudanças do mercado, podendo causar um stop loss pequeno demais para um stop loss grande demais.
Dependendo do indicador, os sinais de filtragem múltiplos podem ocorrer várias vezes na região de calibração.
A taxa de transação de alta frequência é mais pesada.
Os parâmetros do MACD e RSI precisam ser otimizados e podem não ser o melhor.
Os seguintes pontos podem ser melhorados:
A utilização de stop-loss dinâmico, ajustando a proporção de stop-loss de acordo com indicadores como o ATR.
Aumentar os parâmetros da faixa de Bryn reduz o canal e diminui a frequência de disparo.
Optimizar os parâmetros MACD e RSI para encontrar a melhor combinação de parâmetros.
Filtração de tendências do ciclo macro para evitar negociações adversas.
A estratégia em geral é um típico sistema de breakout de curta linha, que combina tendências, overbought e oversold, e pode ser eficaz para detectar oportunidades de curta linha. Mas há um certo risco, e é necessário testar e otimizar os parâmetros para reduzir o risco de aumentar a taxa de ganho. Se os parâmetros forem ajustados adequadamente, a estratégia pode ser uma das estratégias de curta linha mais eficientes.
/*backtest
start: 2023-09-06 00:00:00
end: 2023-10-06 00:00:00
period: 1h
basePeriod: 15m
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/
// © pluckyCraft54926
//@version=5
strategy("5 Minute Scalp", overlay=true, margin_long=100, margin_short=100)
fast_length = input(title="Fast Length", defval=12)
slow_length = input(title="Slow Length", defval=26)
src = input(title="Source", defval=close)
signal_length = input.int(title="Signal Smoothing", minval = 1, maxval = 50, defval = 9)
sma_source = input.string(title="Oscillator MA Type", defval="EMA", options=["SMA", "EMA"])
sma_signal = input.string(title="Signal Line MA Type", defval="EMA", options=["SMA", "EMA"])
// Plot colors
col_macd = input(#2962FF, "MACD Line ", group="Color Settings", inline="MACD")
col_signal = input(#FF6D00, "Signal Line ", group="Color Settings", inline="Signal")
col_grow_above = input(#26A69A, "Above Grow", group="Histogram", inline="Above")
col_fall_above = input(#B2DFDB, "Fall", group="Histogram", inline="Above")
col_grow_below = input(#FFCDD2, "Below Grow", group="Histogram", inline="Below")
col_fall_below = input(#FF5252, "Fall", group="Histogram", inline="Below")
// Calculating
fast_ma = sma_source == "SMA" ? ta.sma(src, fast_length) : ta.ema(src, fast_length)
slow_ma = sma_source == "SMA" ? ta.sma(src, slow_length) : ta.ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length)
hist = macd - signal
hist_1m = request.security(syminfo.tickerid,"1",hist [barstate.isrealtime ? 1 : 0])
hline(0, "Zero Line", color=color.new(#787B86, 50))
////////////////////////////////////////////////////
//plotting emas on the chart
len1 = input.int(9, minval=1, title="Length")
src1 = input(close, title="Source")
offset1 = input.int(title="Offset", defval=0, minval=-500, maxval=500)
out1 = ta.ema(src1, len1)
plot(out1, title="EMA9", color=color.blue, offset=offset1)
len2 = input.int(50, minval=1, title="Length")
src2 = input(close, title="Source")
offset2 = input.int(title="Offset", defval=0, minval=-500, maxval=500)
out2 = ta.ema(src2, len2)
plot(out2, title="EMA50", color=color.yellow, offset=offset2)
len3 = input.int(200, minval=1, title="Length")
src3 = input(close, title="Source")
offset3 = input.int(title="Offset", defval=0, minval=-500, maxval=500)
out3 = ta.ema(src3, len3)
plot(out3, title="EMA200", color=color.white, offset=offset3)
//////////////////////////////////////////////////////////////////
//Setting up the BB
/////////////////////////////////////////////////////////////
srcBB = hist_1m
lengthBBLong = input.int(94,title = "LengthBB Long", minval=1)
lengthBBShort = input.int(83,title = "LengthBB Short", minval=1)
multBB = input.float(2.0, minval=0.001, maxval=50, title="StdDev")
basisBBLong = ta.sma(srcBB, lengthBBLong)
basisBBShort = ta.sma(srcBB, lengthBBShort)
devBBLong = multBB * ta.stdev(srcBB, lengthBBLong)
devBBShort = multBB * ta.stdev(srcBB, lengthBBShort)
upperBB = basisBBShort + devBBShort
lowerBB = basisBBLong - devBBLong
offsetBB = input.int(0, "Offset", minval = -500, maxval = 500)
/////////////////////////////////////////
//aetting up rsi
///////////////////////////////////////////
rsilengthlong = input.int(defval = 11, title = "Rsi Length Long", minval = 1)
rlong=ta.rsi(close,rsilengthlong)
rsilengthshort = input.int(defval = 29, title = "Rsi Length Short", minval = 1)
rshort=ta.rsi(close,rsilengthshort)
///////////////////////////
//Only taking long and shorts, if RSI is above 51 or bellow 49
rsilong = rlong >= 51
rsishort = rshort <= 49
//////////////////////////////////////
//only taking trades if all 3 emas are in the correct order
long = out1 > out2 and out2 > out3
short = out1 < out2 and out2 < out3
/////////////////////////////////////
///////////////////////////////////////////
//setting up TP and SL
TP = input.float(defval = 0.5, title = "Take Profit %",step = 0.1) / 100
SL = input.float(defval = 0.3, title = "Stop Loss %", step = 0.1) / 100
longCondition = hist_1m <= lowerBB
longhight = input(defval=-10,title = "MacdTick Low")
if (longCondition and long and rsilong and hist_1m <= longhight)
strategy.entry("Long", strategy.long)
if (strategy.position_size>0)
longstop = strategy.position_avg_price * (1-SL)
longprofit = strategy.position_avg_price * (1+TP)
strategy.exit(id ="close long",from_entry="Long",stop=longstop,limit=longprofit)
shortCondition = hist_1m >= upperBB
shorthight = input(defval=35,title = "MacdTick High")
if (shortCondition and short and rsishort and hist_1m >= shorthight)
strategy.entry("short ", strategy.short)
shortstop = strategy.position_avg_price * (1+SL)
shortprofit = strategy.position_avg_price * (1-TP)
if (strategy.position_size<0)
strategy.exit(id ="close short",stop=shortstop,limit=shortprofit)