Chiến lược này tập trung vào thời gian trước khi mở cửa, kết hợp đường trung bình và chỉ số động lực để xác định xu hướng ngắn hạn, giao dịch phá vỡ trong giai đoạn động lực cao.
Nguyên tắc chiến lược:
Đặt thời gian giao dịch trước khi mở cửa là trong vòng 1 giờ trước khi mở cửa.
Tính toán 50 chu kỳ EMA để xác định phạm vi giá hợp lý của thị trường lớn.
Chỉ số SMI xuất hiện ở mức thấp trong khu vực, được coi là tín hiệu mua.
Giá đóng cửa khi vượt qua đường trung bình của EMA được coi là tín hiệu dừng lỗ.
Thiết lập điểm dừng cố định, mục tiêu đường ngắn.
Những lợi thế của chiến lược này:
Bước qua EMA ngắn hạn sẽ cho bạn thấy xu hướng trong ngày.
Chỉ số SMI xác định cơ hội đảo ngược tại các khu vực bán tháo.
Các tham số phản hồi có giới hạn, đĩa cứng dễ dàng điều hành.
Rủi ro của chiến lược này:
Các vụ đột phá có thể tạo thành các hầm trước đĩa, nên cẩn thận khi quay lại.
Một ngày hoạt động, khó khăn để đối phó với nhảy vọt.
Lưu ý rằng các trường hợp này có thể xảy ra khi các hệ thống của bạn bị hỏng.
Tóm lại, chiến lược này là một chiến lược ngắn hạn trước khi mở cửa điển hình, theo đuổi đột phá động lực cao thông qua các chỉ số EMA và SMI. Tuy nhiên, rủi ro trước khi mở cửa rất cao, cần kiểm soát vị trí và dừng lỗ.
/*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' )