Esta estratégia se concentra no período anterior à abertura do mercado, combinando a linha média e o indicador de momentum para avaliar a tendência de curto prazo e realizar negociações de ruptura em fases de alta momentum. Pertence à típica estratégia de arbitragem de linha curta.
Princípios da estratégia:
Configure o período de pré-venda para dentro de 1 hora antes da abertura.
Calcule a EMA de 50 ciclos para determinar a faixa de preço razoável do mercado.
O indicador SMI é considerado um sinal de compra quando aparece um cruzamento ascendente em pontos baixos regionais.
A ruptura da linha média da EMA é considerada um sinal de stop loss.
Estabeleça um ponto de parada fixo e um alvo de curto prazo.
Os benefícios da estratégia:
A ruptura da EMA de curto prazo permite determinar a direção da tendência do dia.
Os indicadores SMI confirmam a possibilidade de uma reviravolta nas áreas de sobrevenda.
Os parâmetros de detecção são limitados e o disco rígido é fácil de operar.
Os riscos desta estratégia:
A quebra pode causar uma armadilha, e é preciso ter cuidado para não se virar.
A operação de um único dia é difícil de lidar com saltos.
A paralisação é pequena, e os ajustes não são fáceis de parar.
Em suma, a estratégia é uma estratégia típica de curta linha antes da parada, buscando uma quebra de alta dinâmica através dos indicadores EMA e SMI. Mas o risco de fechamento antes da parada é alto e é necessário controlar a posição e fazer um stop loss.
/*backtest
start: 2022-09-12 00:00:00
end: 2023-09-12 00:00:00
period: 4d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
args: [["v_input_7",65]]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Trading_Bites
//@version=5
// strategy('Morning Scalp', overlay=false, pyramiding=2, initial_capital=3000, default_qty_value=0, commission_value=0.02, max_labels_count=500)
// Initial Inputs
StartDate = timestamp('15Aug 2022 14:00 +0000')
EndDate = timestamp('15Aug 2022 20:00 +0000')
testPeriodStart = input(StartDate, 'Start of trading')
testPeriodEnd = input(EndDate, 'End of trading')
QuantityOnLong = input(title="Quantity", defval=100, minval=1)
QuantityOnClose = QuantityOnLong
//////////////////////////////////////////////////////////////////////
//-- Time In Range
timeinrange(res, sess) =>
not na(time(res, sess))
//Market Open//
marketopen = '0930-1600'
MarketOpen = timeinrange(timeframe.period, marketopen)
//////////////////////////////////////////////////////////////////////
//Market Hour//
morning = '1000-1210'
Morning = timeinrange(timeframe.period, morning)
//////////////////////////////////////////////////////////////////////////
//STOCK MOMENTUM INDEX//
a = input(5, 'Percent K Length')
b = input(3, 'Percent D Length')
ovrsld = input.float(40, 'Over Bought')
ovrbgt = input(-40, 'Over Sold')
//lateleave = input(14, "Number of candles", type=input.integer)
// Range Calculation
ll = ta.lowest(low, a)
hh = ta.highest(high, a)
diff = hh - ll
rdiff = close - (hh + ll) / 2
// Nested Moving Average for smoother curves
avgrel = ta.ema(ta.ema(rdiff, b), b)
avgdiff = ta.ema(ta.ema(diff, b), b)
// SMI calculations
SMI = avgdiff != 0 ? avgrel / (avgdiff / 2) * 100 : 0
SMIsignal = ta.ema(SMI, b)
CrossoverIndex = ta.crossover(SMI, SMIsignal)
CrossunderIndex = ta.crossunder(SMI, SMIsignal)
plot1 = plot(SMI, color=color.new(color.aqua, 0), title='Stochastic Momentum Index', linewidth=1, style=plot.style_line)
plot2 = plot(SMIsignal, color=color.new(color.red, 0), title='SMI Signal Line', linewidth=1, style=plot.style_line)
hline = plot(ovrsld, color=color.new(color.red, 0), title='Over Bought')
lline = plot(ovrbgt, color=color.new(color.green, 0), title='Over Sold')
plot(CrossoverIndex ? close : na, color=color.new(color.aqua, 0), style=plot.style_cross, linewidth=2, title='RSICrossover')
mycol1 = SMIsignal > -ovrbgt ? color.red : na
mycol2 = SMIsignal < -ovrsld ? color.green : na
fill(plot1, hline, color=color.new(mycol1, 80))
fill(plot2, lline, color=color.new(mycol2, 80))
//////////////////////////////////////////////////////////////////////
// Input EMA9 and EMA21
EMA50Len = input( 50 )
EMA50 = ta.ema(close, EMA50Len)
//////////////////////////////////////////////////////////////////////////
// -------- VWAP ----------//
vwapLine = ta.vwap(close)
////////////////////////////////////////////////////////////////////////
//PROFIT TARGET//
longProfitPer = input(10.0, title='Take Profit %') / 100
TargetPrice = strategy.position_avg_price * (1 + longProfitPer)
//plot (strategy.position_size > 0 ? TargetPrice : na, style=plot.style_linebr, color=color.green, linewidth=1, title="Price Target")
//BUY STRATEGY CONDITION//
condentry = ta.crossover(SMI, SMIsignal) and SMI < 0
profittarget = TargetPrice
stoploss = close < EMA50
///////////////////////////STRATEGY BUILD//////////////////////////////////////
if MarketOpen
if close > EMA50
if (condentry) and Morning
strategy.entry('Long', strategy.long)
if profittarget and strategy.position_size > 0
strategy.exit(id="Long", limit=TargetPrice)
if stoploss
strategy.close('Long' )